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.
Components
| Component | What it does | Source |
|---|---|---|
Shopify store australian-sports-camps | Products, customers, orders, checkout and content | Shopify Admin |
| Shopify theme | Storefront pages, camp listings, maps, cart | theme/ submodule, repository Conversion-Kings/asc-shopify-theme |
| Storefront bundles | Booking form, cart actions, shared styles | src/, compiled into theme/assets/ |
asc-api-membership-pass | Saved children and membership pass use, called from the browser | Separate repository Conversion-Kings/asc-api-membership-pass |
shopify-zoho-integration | Orders and bookings into Zoho, confirmation and reminder emails, club search, camp swaps | Separate repository Conversion-Kings/asc-api-src-zoho-integration |
| Zapier | Triggers the integration service when orders are created, and receives form submissions | Zapier account, not in any repository |
| Zoho CRM | Bookings, participants, families, camps and membership purchases | Zoho account. Copies of its Deluge functions are in misc/deluge-scripts/ |
| Mailgun | Sends the emails the integration service builds | Mailgun 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.
| Value | Owner | Consumed by |
|---|---|---|
| Which sports and camps exist, prices, stock | Shopify products and variants | Theme listings, cart, Zoho order sync |
| Camp dates shown to customers | Variant metafields Camp Dates, Camp Start Date, Camp End Date | Camp cards, product page, sorting |
| Camp venue, address and map pin | Location metaobject | Camp cards, maps, product page |
| City names, order and map centre | City metaobject | Menus, city pages, Camp Finder |
| Page layout and section copy | Theme editor | Theme |
| Booking form labels and age limits | Theme settings, ASC - Camp Booking | Booking form |
| Customer membership balance | Customer metafields in the membership_pass namespace | Cart page, asc-api-membership-pass |
| Early bird date ranges for Zoho | Early Bird Dates metaobject | shopify-zoho-integration |
| Booking and participant records | Zoho CRM | ASC 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 byasc-api-membership-passon 10 June 2026.misc/zapier-scripts/holds the 2024 Zapier code steps whose logic moved intoshopify-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
- Catalogue model covers how sports, camps, locations, cities and pages connect.
- Booking and orders follows a booking from the product page to Zoho.
- Membership passes covers purchase, use and the cart button.
- Integrations lists every external call and who configures it.
- Deployment covers how theme and service changes reach production.