Key takeaways
- Email, company domain, platform record ID, and a custom unique property solve different identity problems; none is universal.
- A merge policy must preserve consent, lifecycle history, ownership, associations, source data, and the surviving external identifiers.
- Automatically merge only high-confidence reversible cases; route uncertain or high-impact pairs to a reviewer with usable context.
- Measure duplicate creation by source and fix the entry path, otherwise cleanup becomes a permanent operational tax.
01
Define what “the same” means for each object
Two contact records may represent one person using a work and personal email, two people sharing an inbox, or one address that was reassigned. Two company records may be subsidiaries, locations, a rebrand, or a true duplicate. Identity rules belong to the object and the business context.
HubSpot documents email as a primary automatic deduplication signal for contacts and company domain for companies; record IDs and custom unique-value properties support other operations. Preserve the platform record ID as an internal identity even when the business also uses an external customer, account, or ERP identifier.
02
Separate candidate generation from the merge decision
Generate possible pairs with exact identifiers, normalized phone or address, domains, names, associations, and other approved fields. Then score or review the evidence. Similar names should surface a candidate, not authorize a merge. Missing data is uncertainty, not agreement.
Create confidence bands. High-confidence pairs can be merged automatically only when the merge is recoverable and no protected difference exists. Medium-confidence pairs need a reviewer. Low-confidence pairs remain separate. Add explicit blocks for active opportunities owned by different teams, conflicting consent, legal entities, and regulated records.
Swipe to compare every column
| Signal | Useful for | Failure mode |
|---|---|---|
| Many contact matches | Shared, changed, mistyped, or secondary address | |
| Company domain | Company identity and prevention | Subsidiaries, shared domains, agencies, or domain changes |
| Record ID | Stable platform reference | Different systems issue different IDs |
| Custom unique ID | Cross-system reconciliation | Missing or incorrectly reused source value |
03
Write the survivor policy before the first merge
Choose which record survives and how each field resolves: most recently verified, system of record, non-empty trusted source, or manual choice. Preserve original source, consent and suppression state, lifecycle timestamps, owner, activities, deals, tickets, and association labels. Never let a newer but untrusted import overwrite a verified customer fact simply because its timestamp is later.
Record the candidate IDs, evidence, decision, field changes, surviving ID, affected external IDs, reviewer, and timestamp. Notify or reconcile downstream systems that still reference the retired record. A merge that looks clean inside one CRM can break invoicing, product access, or attribution elsewhere.
04
Move the metric upstream to duplicate creation
Report new duplicate candidates by source: forms, imports, events, sales creation, API integrations, enrichment, or sync. Track review queue age, automatic merge rate, reversals, conflicting consent cases, and records that return after cleanup. The source distribution points to the prevention work.
Use upsert or lookup patterns with durable identifiers, normalize approved fields at entry, and test concurrent requests. Review integrations after schema or vendor changes. The objective is not a perfectly empty duplicate queue; it is a trustworthy customer history and fewer people receiving contradictory service from fragmented records.
Primary sources and further reading
Use the source material to validate details against your own context and current platform configuration.
- HubSpot: Deduplicate records
- HubSpot: Review and manage duplicate records
- HubSpot developers: Understanding the CRM APIs
- HubSpot developers: Companies API and domain identity
This field note follows the XenGrowth editorial policy: primary sources where available, visible limitations, material review dates, and no invented first-hand experience.
Stay with the problem



