Duplicate contacts and companies in HubSpot: merge them and stop new ones

HubSpot only blocks exact duplicates. Why the rest gets through, the order to merge in, and seven rules that stop new ones.

Updated · 13 minutesBy Matthew Labrooy, Managing Director

In short

On its own, HubSpot only blocks exact duplicates: contacts with the same email address and companies with the same domain. Everything else gets through, such as a contact without an email, a second address for the same person, or a company without a domain.

To clean up, close the sources first, then decide which record wins, then merge companies before contacts. A merge in HubSpot can’t be undone, so export before you start.

Tool
“Manage duplicates” under Data Management > Data Quality, for contacts and companies, from a Professional subscription
Detection
Exact matches on email and domain, plus suggestions with a similarity score
Missed
Spelling variants such as ü and ue, companies without a domain, companies with a second domain
Limits
No undo. A record that has been part of 250 merges can’t be merged again
Prevention
Imports with a unique ID, companies only with a domain, a check workflow and clear rights for imports

Why HubSpot duplicates keep coming back: eight causes

A duplicate is a second record for a person or company that already has one. Duplicates are rarely typos. They start where data flows into the CRM, and they keep starting there. If you only merge the duplicates you have, you’ll be cleaning up again in three months. Fix the way records get written first.

How data comes inWhat your CRM holds
Max Mustermannmax.mustermann@example.comAlready there
Formprivate email address
Max Mustermannmax.mustermann@example.netDuplicate
Importrow without email
Max Mustermannno emailDuplicate
Salesentered by hand
Max Mustermannmax.musterman@example.comDuplicate
ERP synccreates, doesn’t search
Example GmbHcompany without domainDuplicate
Four ways in, four new records for one customer. Every source writes its own record unless it searches first.

These are the eight causes we see most often, why HubSpot doesn’t catch them, and what stops each one.

CauseWhy HubSpot doesn’t catch itWhat stops it
Import without an email columnEvery row without a unique ID becomes a new record, even when the name and company already exist.Email address or record ID as the unique ID in the import
Company import without the domain as IDIf the domain column is mapped as a normal property, HubSpot creates the company again instead of updating it.Domain as the unique ID, mode “create and update”
Second email address (private, old employer)If someone comes in with a new address and no browser cookie, HubSpot doesn’t recognise them and creates a new contact.Add the second address as a secondary email on the existing contact
Company without a domainThe domain is HubSpot’s only automatic match for companies. Without it, every spelling of the name becomes its own company.Domain as a required field, a check workflow, the company name in forms as a contact property
Second domain (old domain, .at and .de)HubSpot creates a separate company for every domain, and for every subdomain.Further domains as secondary domains on the company
Integrations and appsCompanies created through the HubSpot API or a sync app aren’t matched on the domain.The integration searches first and updates instead of creating
Spelling variants (ü and ue, GmbH, abbreviations)Custom rules compare exactly, so Müller and Mueller count as two different names.A rule for company names and a cleaned-up match key
Shared addresses such as info@ or purchasing@An address belongs to exactly one contact. The person writing from it changes.Store the shared address as a company property

Also check whether a workflow or an AI tool creates records. If companies keep appearing with the source “HubSpot processing” although automatic company creation is off, an AI setting for companies elsewhere in the portal is the likely cause.

How to find duplicates in HubSpot

  1. Step 01

    Open “Manage duplicates”

    In the menu go to Data Management > Data Quality, tab “Manage duplicates”. You need a Professional or Enterprise subscription of a hub. HubSpot recalculates with every new contact and company and checks again once a day.
    HubSpot, Manage duplicates: four contact pairs with a similarity of 96%, 96%, 95% and 95%, each with the buttons Review and Reject
    “Manage duplicates”: HubSpot’s model lists pairs with a similarity score. Review opens the merge dialog, Reject removes the suggestion.
  2. Step 02

    Read the similarity score, don’t accept it blindly

    For contacts, HubSpot compares first name, last name, email, IP country, phone number, postcode and company name, and turns that into a score. A high score doesn’t mean it’s the same person. Open every pair before you merge it.
  3. Step 03

    Create custom rules

    With Data Hub Professional or Enterprise, add up to two rules per object under “Add custom rule”, each with up to nine properties. A rule only finds exact matches. Use it for what the model scores low, such as the same first and last name on two company domains.
    HubSpot, a custom duplicate rule: rule name Same first and last name, object type Contacts, properties First Name and Last Name
    A custom rule: name, object and up to nine properties. HubSpot points out that the rule only finds exact matches.
    HubSpot, results of the rule Same first and last name: matching on First Name and Last Name, two contact groups with the buttons Review and Reject
    The rule’s results come in groups. You can merge up to five records per group at once.
  4. Step 04

    Without Data Hub: a match key

    Export contacts or companies to a spreadsheet. Build a column from the name without the legal form, in lower case, without spaces, plus the postcode or domain. With COUNTIF you see every key that appears twice. The same match key finds duplicate deals and tickets, which “Manage duplicates” doesn’t cover.

What you get in which edition

EditionDuplicatesLimit
Free and StarterAutomatic matching on email and domain, merging by handNo “Manage duplicates”
Professional or Enterprise of a hub“Manage duplicates” for contacts and companies, one at a timeUp to 10,000 pairs
Data Hub ProfessionalCustom rules (two per object, nine properties), merging in groups, workflows with custom codeUp to 30,000 pairs
Data Hub EnterpriseAs ProfessionalUp to 100,000 pairs
As of October 2026. Source: HubSpot’s help page “Manage duplicate records”.

How to merge duplicates in HubSpot: the order that holds

In a portal nobody has cleaned up for years, the urge is to merge straight away. Merging first is the most expensive mistake. A merge is final, and the sources keep creating new duplicates afterwards. Work in this order.

  1. Step 01

    Shut off the sources

    List every way records get created: forms, imports, integrations, workflows, AI tools and entries by sales. Fix the causes from the table above. Otherwise you clean up twice.
  2. Step 02

    Note the dependencies

    Which systems store HubSpot IDs or match on the primary email, such as the ERP, Salesforce or a newsletter tool? A merged contact gets a new record ID. The old IDs still lead to it through the API, but a field in the ERP that compares the old number no longer matches. Fix those connections before you merge.
  3. Step 03

    Decide which record wins

    HubSpot keeps the values of the primary record and only fills empty fields from the second. So decide beforehand which one becomes primary. The order we use: open deal before valid email before last activity before original source. Decide important fields such as owner and lifecycle stage one by one.
  4. Step 04

    Companies before contacts

    Merge companies first. Contacts, deals and activities move with them, and the second domain stays on the company as a secondary domain. In the other order you end up associating contacts twice.
  5. Step 05

    Start with what sales uses

    Records with an open deal or activity in the last year come first. Empty duplicates from a CRM migration with no activity at all are better deleted than merged. Every merge counts towards the limit of 250.
  6. Step 06

    Merge and check

    In the dialog you pick the primary record and, where needed, the value for each property. Then check workflows, lists and integrations. Activities can take up to 30 minutes to show on the new record.
    HubSpot, Merge duplicate records: choosing the primary record and the value for each property
    The merge dialog. At the top you choose the primary record, below it the value for each property. The second email address stays on the contact as a secondary address.

When not to merge: records that only look like duplicates

Not every pair HubSpot suggests is a duplicate. If in doubt, reject it. HubSpot no longer shows rejected suggestions, but you can undo a rejection for 14 days.

How to prevent duplicates in HubSpot: seven rules

New duplicates come in through imports, forms, integrations and people typing. Each rule below closes one of those ways in.

  1. Rule 01

    Every import needs a unique ID

    For contacts the email address, for companies the domain or the record ID. Without a unique identifier, an import creates duplicate records. To change existing records, export them with the record ID and import that file back. Test every new import template with ten rows first.
  2. Rule 02

    Imports and new companies only for trained people

    Let only admins and one person from operations import data and create companies. Fewer hands writing records means fewer duplicates, and no rule is quicker to put in place.
  3. Rule 03

    Companies only with a domain

    Make the domain a required field when a company is created. For anything that still gets created without one, a workflow creates a task. The check workflow is shown below.
    HubSpot workflow Duplicate check: Company without domain. Trigger: company domain name is unknown and company name is known. Actions: set Duplicate check to Domain missing, create a task
    A check workflow: every new company without a domain gets the status “Domain missing” and a task for its owner. Build a second one for contacts without an email. Both workflows run on any Professional subscription.
  4. Rule 04

    Forms with contact properties

    Ask for the company name as a contact property. A form with company properties always associates the contact with the company entered, whatever your auto-association setting.
  5. Rule 05

    Add second addresses and domains

    If you know another email address or domain, add it as a secondary value. Then HubSpot recognises the person or company on the next import. Marketing emails still only go to the primary address.
  6. Rule 06

    Integrations search first, then write

    A connection to the ERP, a trade fair app or a lead tool has to search for and update existing records instead of creating new ones blindly. Ask the vendor to show you. If you’ve connected Salesforce, don’t let HubSpot create and associate companies automatically.
  7. Rule 07

    A customer number with unique values

    Create a property with unique values for the customer number from the ERP. HubSpot then rejects a second record with the same number. You can have up to ten such properties per object. Unique-value properties don’t work in forms.

The weekly routine

Then set up a fixed routine: two active lists, “Companies without domain” and “Contacts without email”, plus “Manage duplicates”, once a week. The check takes about 20 minutes. The number to watch is new duplicates per month. If it rises, a source has opened up again.

Limits of HubSpot’s duplicate tools, and what to do instead

“Manage duplicates” covers the everyday cases. These are the limits you hit in a larger clean-up, as HubSpot’s help pages on merging records and managing duplicates state them, and what to do instead.

LimitWhat it meansWay out
No undoA merged record can’t be split again. The only workaround is to delete the second address or domain and create a new record from it.Export first and practise on a small group
250 mergesRecords that together have been part of 250 or more merges can’t be merged any more.Delete empty duplicates instead of merging them
Contacts and companies only“Manage duplicates” doesn’t check deals, tickets or custom objects. Merging there only works one by one, by hand.Match key and spreadsheet, as described above
Exact rulesCustom rules don’t find variants such as ü and ue, or “GmbH” and no legal form.A cleaned-up match key in its own property, or an app with fuzzy matching
No automatic mergingThere’s no switch for it, even in Enterprise. The Actions menu only offers “Export duplicates” and “Export merge history”.A workflow with custom code (Data Hub Professional) that only merges on exactly one exact match
VolumeFrom Professional you see up to 10,000 pairs and merge one at a time. More pairs and bulk merging need Data Hub: Professional up to 30,000, Enterprise up to 100,000 pairs.Start with what sales uses

For large databases and fuzzy matches there are apps in the HubSpot Marketplace, such as Insycle, Koalify or Dedupely. Such an app gets write access to your whole CRM. Check beforehand where the vendor is based, its data processing agreement and where it processes the data. Let no app merge automatically before you’ve tested its rules on a sample.

GDPR when merging and deleting duplicates

  • Merging isn’t deleting. After a merge both email addresses stay on the contact, the second as a secondary address. If a person asks for their data to be deleted, delete every duplicate of that person.
  • Unsubscribes belong to the address. HubSpot ties bounces and unsubscribes to the email address, not to the contact. When merging, HubSpot keeps the most permissive marketing contact status and the newest legal basis values from both records. After merging, check that consent and unsubscribes fit the person. The double opt-in guide covers how consent is stored.
  • Accurate data is required. Article 5 of the GDPR requires personal data to be accurate. Two records with conflicting details about the same person fall short of that.

How we clean up duplicates in a HubSpot portal

Duplicates rarely come alone. Where they pile up, the same gaps usually break reports, lead routing and the link to the ERP. So we start with an audit of the whole portal, before any merge, and fix it in a set order.

  1. Step 01

    Audit

    We go through every way data comes in: forms, imports, integrations, workflows and entries by hand. You see how many duplicates each source creates and what they break in reports and pipeline. The same pass covers lifecycle stages, owners and connected systems.
  2. Step 02

    Plan

    The audit gives the order of work: which sources close first, which rules apply, which record wins.
  3. Step 03

    Close the sources

    We fix imports, forms and the ERP connection so they search before they write.
  4. Step 04

    Clean up

    Companies first, then contacts, starting with everything that has an open deal. Every merge follows the agreed rules, with an export beforehand.
  5. Step 05

    Keep it clean

    Check workflows, a weekly routine and one number to watch: new duplicates per month. Your team knows which source to look at when it rises.

Frequently asked questions

Does HubSpot detect duplicates automatically?

HubSpot only blocks exact duplicates on its own. A contact with an email address that already exists isn’t created twice. A company with an existing domain isn’t either, unless it comes in through the API or a sync app. From a Professional subscription, everything else shows up in “Manage duplicates” as a suggestion.

Can you undo a merge in HubSpot?

No. HubSpot can’t unmerge records. Export before a larger clean-up and practise on a small group first.

Which record wins when you merge in HubSpot?

The primary record you pick in the merge dialog wins. HubSpot keeps its values and fills only its empty fields from the second record. Owner and lifecycle stage can be chosen property by property in the dialog.

Can HubSpot merge duplicates automatically?

No. HubSpot has no setting for automatic merging, even in Enterprise. A workflow with custom code (Data Hub Professional) can merge a new record when it finds exactly one exact match.

How do I merge duplicates in bulk in HubSpot?

Bulk merging needs Data Hub Professional or Enterprise. Custom rules then show duplicates in groups, and you merge up to five records per group at once. Without Data Hub, “Manage duplicates” merges one pair at a time.

Why do company duplicates keep appearing?

Company duplicates mostly come from four sources: companies without a domain, forms with company properties, imports without the domain as ID, and integrations that create instead of searching. A second domain of the same company also creates a separate company.

How do I import contacts without creating duplicates?

Import with the email address as the unique ID and the mode “create and update”. HubSpot always creates rows without an email as new records. An address that differs only in upper and lower case is matched to the existing contact.

Does a merged contact keep its record ID?

No, by default the merged contact gets a new record ID. The old IDs still lead to it through the API, but an ERP field that compares the old number no longer matches. Only portals in HubSpot’s public beta keep the primary record’s ID.

Why can’t I merge two records in HubSpot?

HubSpot blocks a merge in three common cases: the records have already been part of 250 or more merges together, the association limits would be exceeded, or two companies would form a loop of parent and child companies.

Is “Manage duplicates” available in HubSpot Starter?

No. “Manage duplicates” is only in the Professional and Enterprise editions. Free and Starter have the automatic matching on email and domain and merging by hand. A match key in a spreadsheet finds the rest.

Close the sources of your duplicates

We look for them in your portal, live. You keep the quick wins, whether we work together or not.