Core to Grow Integration

How data flows between the two systems, what syncs, and what to watch for.

Core and Grow are connected through an integration that syncs contact data between the two platforms. This is what allows a purchase in Core to trigger a workflow in Grow, or a member’s attendance history to appear on their Grow contact record.

How the sync works

The integration is primarily one-directional: Core to Grow. When something changes in Core (a new purchase, an attendance record, a membership status change), that data gets pushed into the matching contact record in Grow.

Grow does not push data back to Core in most cases. If you update a phone number in Grow, it will not automatically update in Core. The contact needs to be updated in both places, or the next Core sync will overwrite the Grow value.

Direction matters

Core is the source of truth for member data. If there’s a conflict between what Core says and what Grow says, Core wins on the next sync.

What syncs

The integration maps over 50 fields from Core into Grow. The table below shows each field, its name in Grow, and what it represents. Fields marked N/A map to standard built-in Grow contact fields. Everything else is a custom field created by the sync service.

A contact record in Grow showing custom fields populated by the Core sync: First Attendance Date, First Booking Date, Late Cancel Accrual, Intro Offer (pending), Days Absent (120), Corporate Attendance (117), Anniversary (1), Active Package (STRONG Foundation VIP UNLIMITED), Past Active Packages, Days Inactive (90), Corporate Status (activePackage), Attendance Total (117), and Active Package Category (Memberships).
A contact record showing custom fields populated by the Core to Grow sync.

Contact basics

FieldGrow field nameNotes
First NameN/A (standard)
Last NameN/A (standard)
EmailN/A (standard)Unique per location
PhoneN/A (standard)Only syncs validated numbers. Unique per location.
Date of BirthN/A (standard)
Street AddressN/A (standard)May hold the full address depending on location
City / State / Country / Postal CodeN/A (standard)
Contact TypeN/A (standard)Always syncs as “customer” (overrides “lead” if set)

DND preferences

FieldGrow field nameNotes
DND Text MessagesN/A (standard)Respects permanent DND settings in Grow
DND EmailsN/A (standard)Respects permanent DND settings in Grow
DND All ChannelsN/A (standard)Set when both SMS and Email DND are marked
Email Opt Incontact.email_opt_inValues: Opt In, Opt Out
SMS Opt Incontact.sms_opt_inValues: Opt In, Opt Out

Status and categorization

FieldGrow field nameNotes
Core Statuscontact.core_statusValues: Client, Alumni, Removed
Location Statuscontact.location_statusValues: introOffer, suspendedMembership, activePackage, inactive, accountCreated
Corporate Statuscontact.corporate_statusSame values as Location Status. Updated by HQ Flow (may be delayed).
Core Sourcecontact.core_sourceHow the contact originally found the brand

Packages and membership

FieldGrow field nameNotes
Active Packagecontact.active_packageCurrently active package(s) for the location
Active Package Categorycontact.active_package_categoryCategory of the active package(s)
Past Active Packagescontact.past_active_packagesEvery previously held package that is no longer active
Intro Offercontact.intro_offerValues: claimed, pending. Once claimed, never reverts.
Join Datecontact.join_dateDate the contact joined the location
Anniversarycontact.anniversaryComplete years since Join Date
Promo Codes Usedcontact.promo_codes_usedEvery coupon code ever used at the location
Home Locationcontact.home_locationLocation(s) where the contact has active packages. Can be multiple.

Attendance and engagement

FieldGrow field nameNotes
First Attendance Datecontact.first_attendance_dateFirst visit to the location
Attendance Totalcontact.attendance_totalTotal check-ins at the location
Corporate Attendancecontact.corporate_attendanceCheck-ins across all locations. Updated by HQ Flow.
Days Absentcontact.days_absentDays since last session. 0 if future booking exists.
Days Inactivecontact.days_inactiveDays since last credit use, or purchase, or Join Date. 0 if future booking.
Referralscontact.referralsTimes referred by other clients at the same location

Booking and first session

FieldGrow field nameNotes
First Bookingcontact.first_bookingValues: booked, pending. Once booked, never reverts.
First Booking Datecontact.first_booking_dateDate of first booking (regardless of whether it was attended or cancelled)
First Booking Statuscontact.first_booking_statusValues: pending, booked, rebooked, attended, late cancel no show, cancelled
Late Cancel Accrualcontact.late_cancelLate cancels since last attendance. Resets to 0 if future booking exists.
No Show Accrualcontact.no_showNo shows since last attendance
Late Cancel + No Showcontact.late_cancel_no_showSum of the two fields above

Tags managed by the sync

The sync service also manages specific tags on contacts. Tags not managed by the sync service are left untouched.

  • classpass
  • account created
  • migrated

Manual edits get overwritten

Any information manually entered in Grow on the fields listed above will be overwritten by the sync on the next cycle. The only exception is tags that are not managed by the sync service.

Sync timing

The sync is not instant. There can be a delay between when something happens in Core and when it appears in Grow. This delay varies, but it’s usually within a few hours. During high-traffic periods (campaign launches, new studio openings), syncs can take longer.

Sync delays cause confusion

If a studio reports that a new member isn’t showing in the right pipeline, the first question is always: has the sync caught up yet? Check the contact’s custom field values in Grow. If key fields (like intro offer purchase date) are empty, the sync hasn’t run yet.

Custom values in Grow

Many of the synced fields appear in Grow as custom values. These are dynamic placeholders that pull live data from the contact record. When a workflow sends an SMS that says “Hey {{contact.first_name}}”, it’s using a custom value that was populated by the Core sync.

We’ll cover the difference between custom fields and custom values in detail in the Custom Fields vs Custom Values section.

Common sync issues

  • Phone numbers not syncing. Core validates phone formats differently. If the phone number doesn’t pass validation, it won’t sync.
  • Missing intro offer dates. The sync only writes the intro_offer_purchase_date field. Other related fields (like first attendance date) may need manual checking.
  • Stale membership status. If a member cancels or suspends in Core, there can be a window where Grow still shows them as active.
  • Duplicate contacts. If a contact exists in Grow before the Core sync creates them, you can end up with duplicates. The email address is the primary matching key.