Bookings and camp swaps
Where booking details are kept, how confirmation and reminder emails are produced, how to move a participant to another camp, and how to handle test orders.
Every booking exists in two places. Shopify holds the order and payment, with each participant's details on the order line. Zoho CRM holds the booking, participant, child and family records that ASC uses to run camps.
Shopify sends each new order to Zoho automatically. Later edits to a Shopify order are not sent by that process.
Find a booking
| To find | Go to |
|---|---|
| Payment, refund, customer contact | Shopify Admin, Orders |
| Participant details as entered | Shopify Admin, Orders, then the line item properties on the camp |
| Booking, participant, family and camp records | Zoho CRM, Bookings or Participants |
Zapier sends each new order to Zoho after checkout. If a paid booking has not appeared in Zoho, follow A booking is missing in Zoho.
Move a participant to another camp
Use the Camp Swap feature of ASC's Shopify Admin app. It updates both systems together:
- In Shopify, it reduces the original camp on the order and records the swap in the order's Camp Swaps metafield.
- In Zoho, it marks the original booking and creates the booking and participant for the new camp.
Do not swap a camp by editing the order directly in Shopify. The order edit changes Shopify only, and Zoho keeps the original camp.
The Camp Swap app is not part of this repository, so its screens are not described here. Ask the developer team for access or a walkthrough.
Confirmation and reminder emails
The Zoho integration sends these emails for a camp booking, from ASC-Bookings@australiansportscamps.com.au:
| When | |
|---|---|
| Booking confirmation | Shortly after checkout |
| Reminder | 7 days before the camp starts |
| Reminder | 2 days before the camp starts |
Each email is built from metafields on the camp. Open the product, or the variant, and find the Email Templates metafields.
| Metafield | Where | What it holds |
|---|---|---|
| Email Templates - Fallback Base Template | Product | The email body for a single-sport product |
| Email Templates - Base Template | Variant | The email body for a Community Sports Camps variant. Falls back to the product's template |
| Email Templates - Base Subject Line | Product or variant | Subject line |
| Email Templates - Reminder Subject Line | Product or variant | Reminder subject line |
| Email Templates - What to Bring | Variant | Inserted where the template says {what_to_bring} |
| Email Templates - Directions & Pickup Times | Variant | Inserted where the template says {pickup_time} |
The templates can use these placeholders. Type them exactly, including the braces.
| Placeholder | Replaced with |
|---|---|
{camp_name} | The camp name |
{camp_dates} | The camp dates |
{camp_venue} | The venue |
{location} | The location |
{what_to_bring} | The What to Bring metafield |
{pickup_time} | The Directions & Pickup Times metafield |
{order_number} | The order number, in subject lines |
{base_subject} | The base subject line, in the reminder subject line |
The integration will not send the same email for the same order twice.
Test orders
There is no test copy of Zoho. An order placed on the live website, including a test order, is sent to Zoho and triggers the confirmation email.
Before placing a test order, tell the bookings team. After it, remove the test records in Zoho. The integration's documentation refers to a "Dev Test Bookings" view in Zoho for finding them.
The order metafield Environment can mark an order as a test, so the Zoho integration skips it. It has to be set on the order before Zapier processes it, and nothing on the website sets it, so in practice it is only useful for orders created by developers.
Line item properties on an order
| Property | Content |
|---|---|
| First Name, Middle Name, Last Name | Participant name |
| Date of Birth | For example "05 March 2015" |
| Gender | Male, Female or Other |
| Confidential Gender Info | Only present if the parent added it |
| School | School name from Google |
| Grade | 0 for Prep, otherwise 1 to 12 |
| Club or Team Name | Club name, or "No club" |
| Playing Experience | Beginner, Intermediate or Accomplished |
| Friends Attending | Only present if the parent added it |
| Medical Conditions | Only present if the parent added it |
A hidden _ClubId property holds the Zoho club record id when the club was chosen from the list.
The order metafield Participant Details is maintained by the Zoho integration. Do not edit it.
Developer map
| Concern | Source |
|---|---|
| Properties added at booking | src/components/CampBooking.tsx |
| Order to Zoho | asc-api-src-zoho-integration repository, src/features/orders.ts, src/features/bookings.ts |
| Emails | asc-api-src-zoho-integration repository, src/features/emails.ts |
| Camp swap | asc-api-src-zoho-integration repository, src/features/camp-swap/ |
Background is in Booking and orders.