TLDR
- HubSpot automatically checks contacts by email and companies by domain. It may miss records without those values, companies created through the API, and duplicate deals or tickets.
- Use Manage duplicates to review likely duplicate contacts and companies. It requires Professional or Enterprise; bulk merging requires Data Hub Professional or Enterprise.
- Merges cannot be undone. Agree on which record to keep and check workflows and Salesforce sync before merging in bulk.
- Common causes include imports without identifiers, integrations, forms, and manual entry. Fix how records are created so duplicates do not return.
- Make deduplication an ongoing task, with a clear owner and a regular review target.
HubSpot automatically detects some duplicate contacts and companies, but it does not catch everything. Records created through integrations, imports, or different email addresses can still lead to duplicates in your CRM.
Over time, duplicate records can affect lead ownership, sales activities, and reporting. They can also make it harder for teams to know which information is accurate. In Validity's State of CRM Data Management 2025, 76% of 602 surveyed CRM users said less than half of their CRM data was accurate and complete, and 37% reported losing revenue because of poor data quality.
This guide explains how HubSpot deduplication works, how to find and merge duplicate records safely, and how to prevent new duplicates.
What HubSpot deduplicates automatically
HubSpot deduplication helps prevent duplicate contact and company records and gives you tools to find and merge duplicates that already exist. Out of the box, HubSpot matches contacts by email address and companies by primary domain.
Here is how automatic duplicate detection works:
- Manual entry. If someone tries to create a contact with an existing email or a company with an existing primary domain, HubSpot points them to the record already in the CRM.
- Forms. A submission with an email already in HubSpot updates the existing contact. A matching company domain updates the existing company.
- Imports. HubSpot can update existing contacts using email and companies using domain. Including a Record ID tells HubSpot exactly which record to update.
- Custom unique value properties. You can create up to 10 unique-value properties per object, such as an ERP customer ID. HubSpot checks them during manual edits and imports, but not form submissions.
HubSpot's automatic matching does not catch everything:
- Contacts without an email and companies without a domain. Import rows with no matching identifier can create new records.
- Companies created through the API, including some sync apps. HubSpot does not automatically match these companies by domain.
- One person using different email addresses, such as a work email and a personal email.
- Deals and tickets. HubSpot does not automatically detect duplicates for these objects. Use Record IDs when importing to update existing records.
Where duplicates come from
Before merging records, identify what is creating the duplicates. If you do not fix the source, the same problem will return.
| Source | How it creates duplicates | Fix at the source |
|---|---|---|
| Imports | Rows without an email, domain or Record ID create new records | Require an identifier column, and test a small file first |
| Integrations and the API | Sync apps create companies without domain matching, or use their own rules | Decide which system owns each record and set the app's matching rule |
| Forms | People submit with a personal email or a typo | Keep email required, and use a unique ID property for known customers where possible |
| Manual entry | Reps create a contact or company without searching first | Train reps to search first, and limit who can create companies |
| Salesforce sync | Duplicate leads and contacts already in Salesforce sync into HubSpot, and records created on one side get created again on the other | Deduplicate in Salesforce before or alongside HubSpot, and agree the sync rules |
| Events and lists | Event platforms and purchased lists bring in records without clean emails or domains | Import through a cleaned file, never straight into the CRM |
If one integration keeps creating duplicates, merging records will not solve the underlying problem. First, decide which system should create and update each record. Our guide to HubSpot Salesforce integration covers how to set that ownership for a Salesforce sync.
How to find duplicates in HubSpot
HubSpot's Manage duplicates tool shows contacts and companies that may be duplicates. Each pair has a similarity score, so you can review it and choose whether to merge or reject it.
By default, HubSpot compares these properties:
- Contacts: HubSpot compares first and last name, email, IP country, phone, zip code, and company name.
- Companies: HubSpot compares domain, company name, country or region, phone, and industry.
HubSpot checks for new duplicates at least once a day. The tools and limits available to you depend on your subscription:
| What you need | Subscription |
|---|---|
| Automatic matching by email and domain, imports by Record ID, manual merge | All plans |
| Manage duplicates tool, review pairs one at a time, up to 10,000 pairs shown | Professional or Enterprise of any hub, including Smart CRM |
| Bulk merge and reject, custom duplicate rules, duplicate audit log | Data Hub Professional or Enterprise |
| Up to 30,000 pairs shown | Data Hub Professional |
| Up to 100,000 pairs shown | Data Hub Enterprise |
Source: HubSpot Knowledge Base, updated Oct 23, 2026. HubSpot changes these limits often, so check the page before you plan a large cleanup.
With Data Hub Professional or Enterprise, you can create up to 2 custom duplicate rules per object, using up to 9 matching properties. This is useful when records share an account number or another business-specific identifier, even if their names or phone numbers differ. The Data Quality overview shows duplicates in one place, and you can set alerts when the daily number passes your limit.
What happens when you merge records
Merging combines 2 records into 1. You cannot undo a merge, so check what will happen to the records first.
HubSpot's merge rules work like this:
| What | What happens on merge |
|---|---|
| Property values | The primary record's values win. If the primary record has no value, the secondary record's value is kept. |
| Email and domain | The primary email or domain stays primary. The other is added as a secondary email or domain. |
| Lifecycle stage | The stage furthest along the funnel is kept. |
| Original traffic source | The oldest value is kept, unless it was changed by hand. |
| Record ID | The merged record gets a new Record ID by default. The old IDs are stored in a "Merged IDs" property. |
| Create date | The oldest create date is kept. |
| Activities and associations | Activities and associations from both records move to the merged record. |
| Workflows | Both records are unenrolled from active workflows at the moment of the merge, unless your account has HubSpot's primary ID preservation beta. |
| Salesforce sync | Only the primary contact keeps syncing. The secondary contact's Salesforce record stops syncing. |
| Static lists | The secondary record is removed from static segments. |
Pay particular attention to these 3 areas:
- Workflows. Merging can remove a contact from an active nurture or onboarding workflow. Check enrollments before merging many records.
- Record IDs. External systems such as billing tools or data warehouses may still store an old Record ID. Check how those systems will identify the merged record.
- Salesforce. The secondary contact's Salesforce record may stop syncing even though it still exists in Salesforce. Check both systems after the merge.
There are also limits. HubSpot will block a merge if the records have more than 250 previous merges between them or if the merged record would exceed association limits. You can restore a rejected duplicate pair within 14 days, but you cannot undo a completed merge.
Duplicates often start with messy properties. Our free HubSpot Properties Cheat Sheet shows which property types to use, how to name them and which key properties to keep on contacts, companies, deals and tickets.
How to merge duplicates in bulk safely
Bulk merging in Data Hub can save time, but one rule may affect hundreds of records. Agree on that rule before you start.
When bulk merging, you can choose the primary record based on recent or oldest engagement, creation date (first or last), or the most recent update. On Data Hub, custom merge rules can also override up to 20 properties, so a value like contact owner or lifecycle stage comes from the record you choose.
Use this checklist before starting a bulk merge:
- Export a backup. Save the contacts and companies you plan to merge, including Record IDs and important properties.
- Agree on the primary record. One option is choosing the contact with the most recent engagement. Check whether that preserves the right owner and data, and get agreement from sales and marketing.
- Protect important properties. Decide which values to keep for contact owner, lifecycle stage, and lead status. Set merge overrides where available.
- Review workflows. Check which workflows include these records and whether merged contacts will need to be re-enrolled.
- Review integrations. Identify systems that store HubSpot Record IDs and check what will happen to secondary Salesforce records.
- Test before merging everything. Start with 20 pairs and review the results with record owners before continuing.
- Save the merge history. Export it from Manage duplicates. HubSpot only keeps 90 days of merge history there.
HubSpot's built-in tools are enough for many teams. If you need more flexible matching across very large datasets, a HubSpot Marketplace app may help. Use the same safety checks before merging records with another tool.
Duplicate deals and tickets
HubSpot's Manage duplicates tool covers contacts and companies, not deals or tickets. Duplicate deals and tickets often come from manual entry, integrations that create a new deal for every order or renewal, or imports without Record IDs.
- Find duplicates in reports. Group deals by company, close date, or deal name, then check records with the same amount.
- Merge records manually. You can merge duplicate deals and tickets from their records, 1 pair at a time.
- Prevent new duplicates. Agree on when a deal should be created, such as 1 deal per opportunity rather than per quote. Configure integrations to update deals using their IDs.
Duplicate deals can distort your pipeline and HubSpot sales forecast. Even 1 duplicate deal in the Commit category can make the expected revenue look higher than it is.
How to stop new duplicates
A one-time cleanup will not prevent new duplicates. You also need clear rules and someone responsible for checking them.
- Use consistent identifiers. Collect email for contacts, domain for companies, and a unique ID for records coming from other systems.
- Choose a source of truth. For each integration, document which system creates records and which system updates them.
- Control imports. Limit imports to admins, require an identifier column, and test a small file before importing everything.
- Search before creating records. Ask reps to check for existing contacts and companies before adding new ones.
- Review duplicates regularly. Check weekly or monthly based on record volume. Set a target, such as keeping duplicates below 5% of records.
- Assign responsibility. Make the HubSpot admin or RevOps lead responsible for duplicate rules and ongoing reviews.
For a broader cleanup, see our guide to auditing your HubSpot portal. Removing duplicates also helps sales and marketing work from the same contact owner, lead status, and routing information.
How Elefante RevOps helps
Elefante RevOps helps clean up duplicate HubSpot records during migrations and implementations. We also help set up rules to prevent the same duplicates from returning. On our CRM migration service, duplicate contacts and companies are merged "on a rule you approve rather than a rule we assume", and deduplication is inside the scope and the fixed price.
- It starts with a 45-minute assessment. We look at where your duplicates come from, and you get a written scope with the cost, the timeline and the three biggest risks before we touch a record.
- Merges run before load, not after. In a migration, history is consolidated onto one record before it reaches HubSpot. Across our last 12 migrations, 0 records were lost.
- The source gets fixed, not only the symptom. Integrations, imports and forms are set up so each record has one owner system. Our custom integrations team builds syncs that update records by ID instead of creating new ones.
- No cutover until validation is complete. Every change is tested on production-scale data before it goes live.
If you already use HubSpot and duplicates keep returning, our HubSpot implementation service can help improve your data structure, duplicate rules, and review process.
Duplicates coming back faster than you can merge them?
Book a 45-minute assessment. You will leave with a written scope, a timeline, a fixed price and the three biggest risks in your HubSpot data.
FAQs
Does HubSpot automatically remove duplicates?
HubSpot can prevent some duplicates by matching contact emails and company domains during manual entry, form submissions, and imports. But it does not automatically merge duplicates already in the CRM. You need to review those in Manage duplicates.
How do I find duplicate contacts in HubSpot?
Open Manage duplicates from the contacts page or the Data Quality page. Review the suggested pairs and their similarity scores. The tool requires a Professional or Enterprise subscription; bulk merging requires Data Hub Professional or Enterprise.
Can you undo a merge in HubSpot?
No. A completed merge cannot be reversed. For contacts or companies, you can remove a secondary email or domain and create another record, but the merged activity history stays where it is. You can restore rejected duplicate suggestions within 14 days.
Which record wins when you merge in HubSpot?
HubSpot generally keeps property values from the primary record. If a value is empty, it uses the secondary record's value. For lifecycle stage, HubSpot keeps the stage furthest along the funnel. It also keeps the oldest creation date.
Does HubSpot deduplicate deals and tickets?
No. HubSpot's automatic duplicate matching covers contacts and companies, not deals or tickets. Use Record IDs to avoid duplicates during imports, and merge existing duplicate deals or tickets manually.
How often should you deduplicate HubSpot?
Review duplicates weekly if you import or sync a lot of records. Otherwise, a monthly review may be enough. Set a target, such as keeping duplicates below 5% of records, and assign someone to track it.
Why does HubSpot keep creating duplicates?
Common causes include missing emails or company domains, integrations that create records through the API, and contacts using different email addresses. Identify which source is creating duplicates and fix its matching rules.

