Home/ Blog/ Data Governance

30% of Your HubSpot Records Are Duplicates. Here's the 20-Minute Fix

Learn how to clean up duplicate contacts in HubSpot in 20 minutes using Manage Duplicates, unique ID properties, Operations Hub rules, and import locks.

When we audit a B2B scale-up between $2M and $25M ARR (£2M–£20M), we always check the ratio of total contacts to unique commercial buyers first. Across portals live for over twenty-four months without dedicated RevOps governance, 18% to 30% of contact and company records are functional duplicates.

Most leadership teams treat duplicate records as minor admin friction. In reality, duplicate contacts and companies quietly sabotage three commercial systems at once: they split sales activity timelines across competing records, corrupt multi-touch attribution, and expose your organisation to avoidable UK GDPR compliance risk.

If your team is searching for how to clean up duplicate contacts in HubSpot without spending weeks inside VLOOKUP spreadsheets or wiping active deal associations, here is the exact 20-minute triage workflow we run — plus the four governance rules that stop duplicates from returning.

1. Why Duplicate Contacts in HubSpot Cost More Than Tier Fees

Paying HubSpot twice for the same buyer in your Marketing Contacts tier is frustrating, but the real cost sits in lost pipeline and compliance exposure. When your CRM turns into a HubSpot portal junk drawer, duplicates trigger four failure modes:

  • Split sales timelines and double outreach: An SDR enrols j.smith@company.co.uk into an outbound sequence while an Account Executive negotiates a £45,000 proposal with john.smith@company.co.uk on a separate record created by a webinar CSV import.
  • Broken attribution and funnel reporting: A buyer downloads a guide using a secondary email (stamping Original Source = Paid Social and hs_v2_date_entered_marketingqualifiedlead), then books a demo under their corporate alias. Sales logs the Deal on the second contact, attributing closed-won revenue to Offline Sources.
  • UK GDPR and PECR Reg 22 opt-out violations: Under the Data Protection Act 2018 and PECR, if a prospect unsubscribes on Record A (Unsubscribed from all email = True), your obligation applies to the individual, not one database row. If Record B remains a Marketing contact with a blank hs_legal_basis and receives a campaign, you risk an ICO complaint — a core check in our GDPR compliance checklist for HubSpot.
  • Inflated contact tier billing: Carrying 8,000 duplicate marketable contacts (hs_marketable_status = true) costs UK scale-ups £3,600 to £9,600 per year in wasted HubSpot fees. See how we govern contact tiers inside a B2B data governance framework your board will trust.

2. The 20-Minute Triage: How to Clean Up Duplicate Contacts in HubSpot

You do not need a third-party app for an initial cleanup. HubSpot's native deduplication tools resolve obvious duplicates in twenty minutes when executed in this order:

  • Minutes 1–5 — Export a pre-merge safety snapshot: Merging in HubSpot is irreversible. When you merge Record B into Record A, Record A's Record ID (hs_object_id) survives, Record B's ID moves into Merged Contact IDs (hs_merged_object_ids), and Record B unenrolls from active workflows. Filter suspect duplicates into an active list and export all properties to CSV as a rollback reference first.
  • Minutes 5–12 — Batch-triage in Manage Duplicates: Navigate to Contacts > Contacts > Actions > Manage Duplicates (Professional and Enterprise; Starter portals merge directly on a contact record via Actions > Merge). HubSpot pairs duplicate candidates by name similarity, normalised phone number (hs_searchable_calculated_phone_number), IP country, and company domain.
  • Minutes 12–16 — Apply the Primary Record survivorship rule: When reviewing a pair, always keep the contact with the earliest verified Create date and populated Original Source, unless the newer record holds your live SaaS App User ID. HubSpot combines timeline activities, form submissions, and deal associations from both records, while the primary record's current values win on single-value fields like Lifecycle Stage and Contact owner.
  • Minutes 16–20 — Lock secondary emails into hs_additional_emails: Merging two contacts with different email addresses keeps the primary address in Email and stores the second in Additional email addresses (hs_additional_emails). HubSpot then deduplicates future form fills and tracked emails against both addresses automatically.

Free 30-Minute HubSpot Data Governance Review

Worried about merging thousands of duplicate HubSpot records and breaking active deals?

Marketick audits B2B HubSpot portals globally to clear duplicate backlogs, configure safe survivorship rules, and lock down enrichment integrations without losing attribution.

Book Your Free Discovery Call →
Free 60-Second RevOps Diagnostic

How much pipeline revenue is your CRM leaking right now?

Most B2B scale-ups lose 15–30% of potential pipeline to unworked MQLs, stalled deal stages, and attribution blind spots. Answer 8 quick questions to calculate your exact annual revenue leak in GBP (£) and get a prioritised fix roadmap.

Calculate Your Revenue Leak in 60 Seconds → ✓ 8 questions · ✓ Instant £ estimate · ✓ No credit card

3. Company Deduplication: Avoiding the Parent-Child Association Trap

Next, switch Manage Duplicates from Contacts to Companies. Merging duplicate companies requires three technical checks:

  • Standardise Company domain name first: HubSpot deduplicates companies using Company domain name (domain), not Company name. When SDRs create accounts from LinkedIn without a domain, HubSpot spawns duplicate records (e.g., Acme UK Ltd with a blank domain alongside acme.co.uk). Populate the missing domain before merging so future contacts auto-associate cleanly.
  • Clear Parent-Child hierarchy locks (hs_num_child_companies): HubSpot blocks any company merge where either record sits in a Parent-Child hierarchy (hs_parent_company_id is known or Number of child companies > 0). Temporarily remove the parent/child association on the record sidebar, merge the companies, and re-attach the hierarchy.
  • Pause automatic Lifecycle Stage syncing before bulk merges: In Settings > Objects > Companies, check whether Sync lifecycle stage is active. Merging a legacy prospect company with an active Customer company while sync is enabled can overwrite contact lifecycle timestamps — a control we verify in our 7-point HubSpot audit checklist.

4. Stop Duplicates Before They Start: 4 Preventive Governance Rules

Cleaning duplicates once without fixing ingestion pipes guarantees they will return within six months. To advance up our RevOps maturity model and harden your revenue operations framework, enforce four rules:

  • 1. Enable Require unique values on custom external IDs: In Settings > Properties, enable Require unique values for this property (up to ten custom properties per object) on App User ID, Stripe Customer ID, or Companies House Number. Passing that property as idProperty during API upserts updates the existing record even when a buyer changes their email.
  • 2. Restrict CSV imports and enforce deduplication keys: In Settings > Users & Teams > CRM Tools, disable bulk Import permissions for standard reps. Require every admin-approved CSV import to map Email (contacts), Company domain name (companies), or Record ID.
  • 3. Set enrichment integrations to "Update Only If Blank": Configure Cognism, Apollo, ZoomInfo, and Clay to match on Email and Company domain name before creating records, block free webmail domains on high-intent forms, and never overwrite existing Original Source or Contact owner fields.
  • 4. Automate formatting in Operations Hub Data Quality Command Center: In Operations Hub Professional/Enterprise, open Data Management > Data Quality to turn on duplicate spike alerts, and use the workflow Format data action to lowercase emails, trim whitespace on names, and standardise UK phone numbers to +44 E.164 format.

Frequently Asked Questions

How does HubSpot automatically deduplicate contacts and companies?

HubSpot deduplicates contacts using the primary Email property (plus secondary addresses in hs_additional_emails) and deduplicates companies using Company domain name (domain). During CSV imports or API calls, you can also deduplicate using Record ID (hs_object_id) or custom properties with Require unique values enabled.

What happens to deals, activities, and workflows when you merge two contacts in HubSpot?

HubSpot keeps the primary contact's current property values (unless blank), combines all historical timeline activities, form submissions, and associated Deals/Tickets from both records, moves the secondary email into Additional email addresses, and unenrolls the secondary record from active workflows.

Can you undo a contact or company merge in HubSpot?

No. Merging contacts or companies in HubSpot is permanent and cannot be undone via the UI or API. Always export a full CSV backup of target records before running batch merges in Manage Duplicates.

Why won't HubSpot let me merge two duplicate companies?

HubSpot blocks company merges when either company belongs to a Parent-Child hierarchy (hs_parent_company_id or hs_num_child_companies is populated) or is locked by Salesforce sync rules. Temporarily remove the parent-child relationship on the company record, merge the records, and re-attach the hierarchy.

Does HubSpot Operations Hub automatically merge duplicate contacts?

HubSpot's Manage Duplicates tool and Data Quality Command Center flag duplicate pairs for review, while Operations Hub workflows standardise formatting (lowercase emails, whitespace, phone numbers). For automated rule-based bulk merging, RevOps teams run custom-coded workflow actions hitting the HubSpot Merge API (/crm/v3/objects/contacts/merge).

Want a second pair of eyes on your setup?

Book a free 30-minute discovery call. We'll tell you exactly where the leverage is — no pitch deck, no fluff.

Book a Free Discovery Call →