Shopify → Zoho → Xero Order Automation
A five-module Make.com flow that takes a Shopify webhook through Sheets, Gmail, Zoho stock, Xero contact resolution, and a referenced invoice.
The problem
Orders were processed by hand: logged into a spreadsheet, invoiced manually in Xero, and confirmed with typed emails. Nothing checked whether the customer already existed in Xero, so duplicate contacts accumulated, and invoice references were inconsistent between orders.
The system
A webhook receives the Shopify order payload.
The order is written to Google Sheets as the running record.
Gmail sends the customer confirmation.
A Xero contact search runs before anything is invoiced.
Existing contact creates the invoice directly; a new contact is created first.
The Xero invoice is generated with the correct reference.
Five scenarios were validated in ReqBin, from new customer to malformed payload.
What made it work
- The contact-resolution router is the part that matters: invoicing only runs after the contact is resolved, so a first-time customer cannot create a duplicate record and an existing customer cannot create a second one.
- Five scenarios were tested end to end: new customer, existing customer, no contact match, malformed payload and repeat order.
- The spreadsheet acts as a log rather than a queue, so nothing waits on a human to move a row.
Evidence
Every step, captured.
The scenario, the payload, the order log, the stock check and the invoice. Click any image to open it at full size.
Test payload
{
"order_id": "NZ10052",
"order_number": "#NZ10052",
"customer": {
"name": "Sarah Chen",
"email": "sarah.chen@demo.com"
},
"line_items": [{
"title": "Running Shoes Black",
"sku": "RUN-BLK-42",
"quantity": 1,
"price": "129.99"
}],
"shipping_address": {
"address1": "15 Queen Street",
"city": "Auckland",
"zip": "1010",
"country": "New Zealand"
}
}Execution log
21:14:07 webhook.received order=#NZ10052 lines=2 21:14:07 sheets.append row=4182 21:14:08 gmail.send customer confirmation 21:14:08 xero.contacts matches=1 21:14:08 route existing_contact 21:14:09 xero.invoice reference=#NZ10052 21:14:09 run.complete manual_steps=0 errors=0
Outcome
A webhook arrives, the order is logged, the customer is notified, the contact is resolved or created in Xero, and the invoice is produced with the right reference, across five test scenarios with no manual steps.
Start with the process
Send the process that is still running by hand.
You get a written read on what can be automated, what it would take, and what it removes from the week. No pitch deck required.