Client profiles in the BCGW Dashboard are unified across all booking and commerce services. Syncing pulls recent customer data from an external service and merges it into theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/hack4impact-umd/breastfeeding-center-gw/llms.txt
Use this file to discover all available pages before exploring further.
Client collection in Firestore. Existing records are updated; new emails create new documents.
Jane clients are added via file upload, not via sync. See Upload Jane Appointment and Client Data for details.
Triggering a sync
Syncs are triggered manually from the Client List page. Open the Sync dropdown and select the service you want to sync. Each sync covers the last 30 days by default. The date range can be adjusted by passingstartDate and endDate in the request body (ISO format).
Sync sources
Acuity
The Acuity sync fetches all appointments within the configured date range from the Acuity Scheduling API. For each appointment, the client’s email is extracted and used to look up an existing Firestore record.- If a record with that email exists, it is updated with any new information from Acuity.
- If no record exists, a new client document is created.
baby array when available.
Squarespace
The Squarespace sync fetches orders from the Squarespace Commerce API within the date range, then resolves the unique customer profiles behind those orders.- Each customer profile is matched to an existing Firestore client by email.
- On a match, the client’s
squarespaceCustomerIdfield is set. - Unmatched emails create new client documents with the Squarespace profile data.
Booqable
The Booqable sync fetches rental records via the Stripe API within the date range. Booqable uses Stripe as its payment processor, so customer data is retrieved from Stripe customer objects.- Each rental is deduplicated by Stripe customer ID before matching.
- Customers are matched to existing Firestore clients by email.
- On a match, the client’s
stripeIdfield is set. - Unmatched emails create new client documents.
Acuity webhook
In addition to manual syncs, Acuity can push real-time updates to the dashboard via a webhook. When an appointment is created or changed in Acuity, the webhook endpoint receives the event and immediately syncs the affected client record to Firestore — no manual trigger required. The webhook only fires onappointment.changed events. Other Acuity event types are received but do not trigger a sync.
Client matching
All three sync sources use the same matching strategy: email address. The sync process:- Loads all existing clients from Firestore.
- Builds a map of email → primary client document.
- For each incoming profile, checks whether the email is already in the map.
- Updates the existing document or creates a new one.
