A booking is missing in Zoho
A Shopify order is paid but its booking, participants or confirmation email did not appear.
Use this runbook when an order exists in Shopify but Zoho has no booking for it, the booking is incomplete, or the customer did not receive their confirmation email.
The order passes through Zapier and then shopify-zoho-integration before it reaches Zoho. Find the step where it stopped before re-sending anything, because a partial run may already have created some records.
Diagnose
1. Confirm the order
In Shopify Admin, open the order. Record the order number, for example S1234, and check:
| Check | Expected |
|---|---|
| Payment status | Paid |
| Camp line's product tags | Includes sport |
| Physical product line's tags | Includes ecommerce-product |
| Order metafield Environment | Blank or production |
Lines without either tag are ignored by the integration. An order with another Environment value is skipped on purpose.
2. Search Zoho
In Zoho CRM, search Bookings for the order number.
| Result | Go to |
|---|---|
| No booking | Step 3 |
| Booking exists, but participants or family details are missing | Step 5 |
| Booking exists and is complete, but no email arrived | Step 6 |
3. Check Zapier
In Zapier, open the zap history for "Shopify → Zoho via API" and find a run for the order.
| Result | Meaning |
|---|---|
| No run | The zap was off, or the trigger did not fire |
| Run with an error at the API step | The integration returned an error. Note the message and go to step 4 |
| Run succeeded | The integration accepted the order. Go to step 4 |
4. Check the integration
When order processing fails, the integration emails a status report to the developer address, and for some errors to ASC. Search both inboxes for the order number.
A developer can also search the shopify-zoho-integration logs in Google Cloud for the order number. Common messages:
| Message | Cause |
|---|---|
| "Order not processable by this version of the API" | The order's Environment is not in the service's allowed list |
| Early bird dates not found | No Early Bird Dates entry matches the camp variant's Season and Year |
| Zoho authentication or token errors | Zoho credentials expired or were revoked |
| "No booking found" | Order number format did not match Order_Id in Zoho |
5. Check the camp's data
Open the camp variant in Shopify Admin.
| Check | Why |
|---|---|
| Season and Year metafields set | Used to find the Early Bird Dates entry |
Early Bird Dates entry exists with handle such as spring-2026 | Needed to calculate the early bird flag |
| SKU set | Carried into the Zoho records |
| Participant details on the order line | Name, date of birth and school are needed for Zoho participant records |
6. Check the email
The confirmation email is a separate zap, "Confirmation Emails via API". Check its history for the order.
| Result | Cause |
|---|---|
| No run or an error | Zap off or failed |
| Run succeeded | Check the customer's spam folder and the email address on the order. A developer can check Mailgun for bounces |
| Email arrived but content is blank | The product's or variant's Email Templates metafields are empty |
The integration does not send the same email for the same order twice, so a replayed zap does not send a duplicate.
Repair
| Cause | Fix |
|---|---|
| Zap off | Turn it on, then replay the failed or missed runs from zap history |
| Early Bird Dates missing | Create the entry, see Pricing and early bird, then replay the run |
| Variant Season or Year missing | Set them, then replay |
| Zoho credentials expired | A developer renews the Zoho OAuth details in the service and in the zap |
| Environment skipped a real order | Clear the order's Environment metafield, then replay |
Before replaying, search Zoho again for the order number. If some records were created, remove them first, or ask a developer to finish the booking by hand. Replaying over a partial booking can create duplicate families, children or participants.
The integration repository has developer scripts for re-sending orders, such as src/repush-orders.ts. They write to live Zoho. Read the script before running it.
Verify
- In Zoho, the booking exists with the right camp, participants and family.
- The participant count matches the camp lines on the Shopify order.
- The customer has received the confirmation email.
Escalate
For Zoho data corrections that cannot be made from the booking record, contact ASC's Zoho administrator. For integration faults, contact the developer who maintains asc-api-src-zoho-integration.
The booking form is not working
The booking form does not open, school or club search returns nothing, saved children are missing, or submitting does not reach the cart.
The membership pass is not applying
A member sees "not applicable", gets an error when using their pass, or their balance is wrong after checkout.