doc-site
Architecture

System overview

The systems behind the ASC storefront, what each one owns, and where they meet.

The storefront is a Shopify theme with a React booking form. Two ASC services on Google Cloud Run handle the work Shopify cannot do on its own, and Zapier connects Shopify orders to Zoho CRM.

The customer books on the Shopify storefront, which calls asc-api-membership-pass for saved children and membership passes. Checkout creates an order that Zapier sends to shopify-zoho-integration, which writes to Zoho CRM and sends emails through Mailgun. ASC staff edit content in Shopify Admin.

Components

ComponentWhat it doesSource
Shopify store australian-sports-campsProducts, customers, orders, checkout and contentShopify Admin
Shopify themeStorefront pages, camp listings, maps, carttheme/ submodule, repository Conversion-Kings/asc-shopify-theme
Storefront bundlesBooking form, cart actions, shared stylessrc/, compiled into theme/assets/
asc-api-membership-passSaved children and membership pass use, called from the browserSeparate repository Conversion-Kings/asc-api-membership-pass
shopify-zoho-integrationOrders and bookings into Zoho, confirmation and reminder emails, club search, camp swapsSeparate repository Conversion-Kings/asc-api-src-zoho-integration
ZapierTriggers the integration service when orders are created, and receives form submissionsZapier account, not in any repository
Zoho CRMBookings, participants, families, camps and membership purchasesZoho account. Copies of its Deluge functions are in misc/deluge-scripts/
MailgunSends the emails the integration service buildsMailgun account

Both Cloud Run services run in the Google Cloud project asc-map-project, region australia-southeast1.

Ownership

Each value has one place where it should be changed. Changing it anywhere else is either overwritten or ignored.

ValueOwnerConsumed by
Which sports and camps exist, prices, stockShopify products and variantsTheme listings, cart, Zoho order sync
Camp dates shown to customersVariant metafields Camp Dates, Camp Start Date, Camp End DateCamp cards, product page, sorting
Camp venue, address and map pinLocation metaobjectCamp cards, maps, product page
City names, order and map centreCity metaobjectMenus, city pages, Camp Finder
Page layout and section copyTheme editorTheme
Booking form labels and age limitsTheme settings, ASC - Camp BookingBooking form
Customer membership balanceCustomer metafields in the membership_pass namespaceCart page, asc-api-membership-pass
Early bird date ranges for ZohoEarly Bird Dates metaobjectshopify-zoho-integration
Booking and participant recordsZoho CRMASC operations and reporting

Full field lists are in Metafields and Metaobjects.

Trust boundaries

The storefront runs in the customer's browser, so anything it calls directly is reachable from the public internet. That covers asc-api-membership-pass, the /clubs/search route on shopify-zoho-integration, the Zapier catch hooks stored in theme settings, and Google Places.

Shopify Admin API credentials sit only in the Cloud Run services and in Zapier. Nothing in the theme or in src/ holds an Admin API token. The Google Places key in the booking bundle is a browser key and is public by design.

Production status

The storefront is live and taking bookings.

Some code in this repository is no longer used in production:

  • google-cloud-api/ was replaced by asc-api-membership-pass on 10 June 2026.
  • misc/zapier-scripts/ holds the 2024 Zapier code steps whose logic moved into shopify-zoho-integration.
  • The theme still contains the previous cart section (asc-cart-items), which is disabled.

See Legacy and unused code before relying on any of them.

Pages in this section

On this page