Contact Duplicates & Merges

Duplicate records, merge side effects, and data collisions.

Duplicate contacts are a reality in any CRM that receives data from multiple sources. In the STRONG system, contacts can be created from website forms, Facebook lead ads, Core account creation, and manual entry. When the same person enters through two different channels with different email addresses or phone numbers, Grow creates two separate contact records.

The duplicates themselves are not the main problem. The bigger issue is what happens when you try to fix them by merging. Contact merges trigger field change events that can cascade through workflows and create false activations, especially in the intro offer pipeline.

What it looks like

  • Two contact records for the same person in Grow, each with partial data.
  • A member receiving duplicate SMS or email messages because both records are active in workflows.
  • After merging two contacts, the surviving record starts receiving unexpected workflow messages.
  • A pipeline card appears for someone who has not purchased or booked anything recently.
  • The same phone number showing up in Conversations under two different contact names.

How duplicates are created

Different entry points, different identifiers

The most common scenario: someone fills out a Facebook lead form using their personal email, then later creates a Core account at the studio using a different email (or no email at all, just a phone number). Grow treats each as a new contact because the matching identifier (email or phone) does not overlap.

Apple Private Relay emails

Members who sign up via Apple services sometimes have an Apple Private Relay email (ending in @privaterelay.appleid.com) on one record and their real email on another. Core stores whichever email was used at account creation, and the Facebook lead form captures whichever email Facebook has. When these do not match, a duplicate is created.

Manual entry without checking

Studio staff sometimes create a new contact in Grow manually instead of searching for the existing record. This is most common when a walk-in asks about an offer and the staff member creates a quick contact instead of looking up whether they are already in the system from a prior ad response or website enquiry.

When to merge and when not to

Do not merge contacts with active intro offers

If either contact record has an active intro offer (check the Active Package Category and Intro Offer Pipeline Status fields), do not merge until the offer period is complete. The merge will trigger field change events that can cascade into false pipeline activations. See Pipeline Inaccuracy, Bug 3 for the full explanation.

Safe to merge

  • Both records are inactive (no active package, no active workflows).
  • One record is a lead that never purchased, and the other is the Core-synced record with all the real data.
  • The member has fully completed their intro offer (status is Won, Expired, or Abandoned).

Not safe to merge

  • Either record has an active intro offer in progress.
  • Either record is currently enrolled in a workflow with active wait steps.
  • Both records have different pipeline opportunities in the same pipeline (the merge can create conflicts).

How to merge safely

  1. Identify the primary record: the one with the Core sync data (it will have Integration entries in the activity timeline). This should be the surviving record.
  2. Check for active workflows: on both records, scroll the activity timeline and look for recent workflow entries. If either contact is mid-workflow (especially in a wait step), note which workflows are active.
  3. Remove from active workflows first: if the secondary record (the one being merged away) is enrolled in any workflows, remove them from those workflows before merging. This prevents the merge from inheriting mid-stream workflow state.
  4. Merge via Bulk Actions: select the secondary record, use Bulk Actions to merge into the primary record. The primary record survives with all data from both.
  5. Check the result: after merging, open the surviving record and verify that the correct data was retained. Check the activity timeline for any unexpected workflow triggers that fired as a result of the merge.

What happens during a merge

When two contacts are merged in Grow, the platform combines the data from both records into the surviving contact. Several things happen behind the scenes:

  • Custom fields: the surviving contact gets values from both records. If both records had a value for the same field, the primary record's value wins. The field “change” from inheriting the secondary record's data triggers field-change workflow events.
  • Tags: all tags from both records are combined onto the surviving contact.
  • Opportunities: pipeline cards from the secondary record are transferred to the surviving contact.
  • Conversations: message history from both records is combined into one conversation thread.
  • Audit logs: the merge itself is logged as “Updated (Contact Merge)” with source “BULK_ACTION” in the surviving contact's audit log.

Audit logs do not record who merged

Grow's audit logs do not record which user initiated a contact merge. If you need to track who performed a merge, you will need to ask the team directly. The audit log only shows that a BULK_ACTION merge occurred and the timestamp.

Preventing duplicates

Complete prevention is not possible because contacts arrive from multiple systems with potentially different identifiers. But you can reduce the volume:

  • Search before creating: always search by phone number AND email before creating a new contact manually. Some contacts will only match on phone (if they used a different email) or only on email (if the phone format differs).
  • Use consistent identifiers on forms: where possible, ensure that lead forms capture both email and phone. The more identifiers Grow has, the better it can match incoming data to existing records.
  • Periodic dedup review: Grow does not have an automatic deduplication feature. Periodic manual review of contacts with matching names or phone numbers helps catch duplicates before they cause workflow conflicts.