Booking line item properties
The properties the booking form adds to each cart line, the cart attributes and order metafields set around a booking, and who reads them.
The booking form adds one cart line per participant, with quantity 1. The participant's details are stored as line item properties. They appear on the Shopify order and are read by shopify-zoho-integration when it creates the Zoho participant.
Properties
| Property | Value | Present |
|---|---|---|
First Name | Text | Always |
Middle Name | Text, may be empty | Always |
Last Name | Text | Always |
Date of Birth | dd MMMM yyyy, for example 05 March 2015 | Always |
Gender | Male, Female or Other | Always |
Confidential Gender Info | Text | Only when the parent turned the switch on |
School | Place name from Google Places | Always |
Grade | 0 for Prep, 1 to 12 | Always |
Club or Team Name | Zoho club name, or typed text | Always |
_ClubId | Zoho Club record id, or empty for typed text | Always |
Playing Experience | Beginner, Intermediate or Accomplished | Always |
Friends Attending | Text | Only when the parent turned the switch on |
Medical Conditions | Text | Only when the parent turned the switch on |
Shopify hides properties starting with _ at checkout. They remain visible in Shopify Admin and in /cart.js.
In the three text fields, commas typed by the parent become line breaks.
The form also builds Has Confidential Gender Info, Has Friends Attending and Has Medical Conditions switches. They are removed before the line is added to the cart, and sent only when saving a child.
Pass products
When a membership pass is used, the pass service copies every non-empty property from the camp line onto the pass product line. Zoho therefore sees the same participant details.
Cart attributes
| Attribute | Set by | Purpose |
|---|---|---|
clarity_uid | theme/assets/clarity-tracking.js | Microsoft Clarity visitor id |
clarity_session_id | theme/assets/clarity-tracking.js | Microsoft Clarity session id |
Both are written once per browser session and appear on the order.
Order metafields
| Key | Written by | Purpose |
|---|---|---|
custom.environment | Not set by any known code | Orders with a value other than an allowed environment are skipped by the Zoho integration |
custom.participant_details | Zoho integration | Participant details missing from the order lines |
camp_swap.data, camp_swap.original_order | Zoho integration, camp swap | Swap records |
Where the names are used
| Consumer | Location |
|---|---|
| Booking form, builds the properties | src/components/CampBooking.tsx |
| Cart page, lists them | theme/sections/asc-new-cart-layout.liquid |
| Pass service, copies them | asc-api-membership-pass repository, src/services/redemption.service.ts |
| Zoho integration, maps them to Zoho fields | asc-api-src-zoho-integration repository, src/lib/zoho.ts, src/lib/utils.ts, src/features/bookings.ts |
Rename a property only with a matching change in the Zoho integration.