HubSpot deduplication that shows every duplicate contact before it merges
HubSpot deduplication means finding the records in your portal that describe the same person or company and merging them into one. HubSpot does part of that job natively, on Professional and Enterprise, through Actions and then Manage Duplicates. It matches on properties it already trusts. Everything that got in through a spreadsheet import, a trade show list or a form filled in with a personal address is still sitting there, and this page is about that half.
Load a messy sample and watch it work
The same engine described below, running on your own machine. Nothing is uploaded and nothing is applied until you approve it.
1. Load a file
Your file is read on your own machine. Nothing is uploaded, so nothing can leak.
Or start from a messy sample
Status
Loading the sample file.
File: CRM contact export
Rows
--
Columns
--
Changes
--
Duplicate rows
--
Date formats
--
Blank or invalid emails
--
Load a file to see the diff
Drop a CSV or pick one of the messy samples. Every proposed change appears here as a line you approve or reject.
2. Review every change
Nothing approved yet.
Nothing is applied to your file until you approve it, and your original file is never modified.
Proposed changes
Original Proposed
Duplicate clusters
Merge or keep both
Want this on every file, and on bigger ones?
The free try is one file of your own. The Analyst plan cleans as many files as you need, up to 25MB and about 100,000 rows each, for $59 a month or $348 a year.
3. Take the result
The cleaned CSV contains only the changes you approved. The log lists every change, approved or not.
Why HubSpot still shows duplicate contacts after you run Manage Duplicates
The native tool compares properties. Email address, first and last name, phone, zip, IP country, company name. Two records that share one of those strongly enough get proposed as a pair, and you review them field by field before they merge. It is a good tool for the duplicates it was built for: the same person entered twice, in the same way, by two people.
It is a property match, so it stops where the properties stop agreeing. Jose Munoz at jmunoz@ridgeline.com, created by a form, and Jose Munoz at Ridgeline Partners LLC, created by a trade show import with the email column left blank, are two contacts with no shared email, a company name that differs by a suffix and no phone on either record. Nothing in the property set says they are one person. The pair is invisible to the match and stays in the portal through every pass you run.
That is the shape of most duplicate debt in a HubSpot portal. It arrived in bulk, from a file, with fields that were typed rather than validated, and it does not look duplicated to a rule that reads one field at a time.
What a property match sees and what a fuzzy pass sees
| The pair in your portal | Property match | Fuzzy pass on the export |
|---|---|---|
| Same email, entered twice | Found | Found |
| Same email, different case or trailing space | Usually found | Found |
| One record with an email, one imported without | Missed | Found on name and company |
| Acme Corp against Acme Corporation | Missed | Found after the suffix is normalized |
| Markus Hall against Marcus Hall | Missed | Found by edit distance |
| Two different emails, same name and company | Missed | Kept as two people on purpose |
| Company record against its own subsidiary | Missed | Proposed, and usually one you reject |
The last two rows matter as much as the rest. Two different email addresses are treated as two people, because an export of 30,000 contacts holds plenty of people who share a name, and a match that proposes a parent company against its subsidiary is still only a proposal you approve or reject.
The comparison is not native against export. It is exact against approximate. Running both is the whole point: let HubSpot clear the easy pairs inside the portal, then work the export for the ones a field comparison was never going to reach. The matching itself is ordinary fuzzy matching, applied to a contact file instead of a database column.
How to deduplicate HubSpot contacts on the export
- 1 Export contacts from HubSpot with the Record ID column included, and leave the Contact owner column out. The Record ID is what lets you act on exactly the right records afterwards; the owner column holds a rep name that only gets in the way of matching people.
- 2 Load the CSV into the demo above. Nothing uploads: the pass runs in your browser, on your machine.
- 3 Read the clusters. Each one names why it matched, shows the score, and marks the most complete row as the one to keep.
- 4 Approve the merges you agree with and reject the rest. A subsidiary that matched its parent, two people who share a name at the same firm, a franchise location that is a real second account.
- 5 Export the audit log. It lists the losing Record ID against the surviving Record ID, which is the working list your HubSpot admin merges from inside the portal.
Merging in HubSpot is a one way door
A merge in HubSpot is not something you unwind later. The two records become one, and the losing record is no longer a place you can read the old field values from. If the merge was wrong, the argument about which value was correct is an argument nobody has the evidence for.
That is the reason the review step is worth the extra half hour. The export pass costs you one CSV download and one upload, and what it buys is a list you read before anything in the portal changes, plus a file that records what you decided. Six weeks later, when someone asks why a contact has the wrong company, the answer is in a column rather than in a memory. The merge mechanics themselves, contacts and companies two at a time, are set out on HubSpot merge contacts.
The same reasoning applies to any CRM export, which is why the general version of this page is CRM data cleansing, the Salesforce version is Salesforce deduplication, the Zoho version is Zoho CRM deduplication and the Pipedrive version is Pipedrive duplicate contacts. The pass is identical. Only the column names change. When the file is an export on its way into a new portal, the import side matters as much as the matching, and that case is covered in Salesforce to HubSpot migration, and for a lead database coming over from Marketo in Marketo to HubSpot migration.
When a direct connection is the better answer
Working on the export is the right shape when the duplicates arrived from files, when you want the matching to be fuzzy rather than rule based, and when someone has to sign off on the merge list before the portal changes. It is deliberately a manual loop, and the merges are applied by a person.
If what you want instead is a scheduled job that runs inside the portal and writes back through the API, that is a different product and you should buy one. Insycle connects to HubSpot directly and treats deduplication as one operation in a broader data operations platform, and Dedupely is the narrower app that merges duplicates in the portal on a schedule, compared on the Dedupely alternative page. We do not connect to your portal and we are not pretending otherwise. What this data cleaning tool gives you is the file, the matching and the record of the decision.
Two contacts a property match reads as two people
| Record ID | First name | Last name | Company | Matched on | |
|---|---|---|---|---|---|
| 101948 | Jose | Munoz | jmunoz@ridgeline.com | Ridgeline Partners | Kept: more complete record |
| 118307 | Jose | Munoz | Ridgeline Partners LLC | Same name and company once LLC is normalized |
No property agrees except the name, and a name on its own is too weak for HubSpot to propose a merge. Adding the normalized company to the comparison is what makes the pair readable, and the Record ID column is what makes it actionable once you have approved it. Had both rows carried different emails, the pass would have left them as two people.
What the portal cannot tell you about the pairs it did not find
A native pass reports what it matched. It has no way of reporting the duplicates its rules were never shaped to see, so a clean result reads the same as a clean database.
CRM data cleansingThe match is only as wide as the properties
Two records that disagree on every compared field are two records as far as the rule is concerned, and they survive every pass you run afterwards.
The merge happens where you cannot review it later
Once applied, the losing values are gone, so a merge that turns out wrong is not a merge anyone can reconstruct.
Imports put the duplicates back
If the duplicates came from a file, the next file brings more, and cleaning inside the portal never touches the process that produced them.
What the export pass adds
Fuzzy matching on name and normalized company, every cluster scored and shown to you before anything is applied, and a CSV of the merges you approved keyed on Record ID.
Questions about hubspot deduplication
Does HubSpot have a deduplication tool?
Can you undo a merge in HubSpot?
How do I find duplicate contacts in HubSpot that have no email address?
Does DataUntangler connect to my HubSpot portal?
Should I deduplicate before or after importing a list into HubSpot?
Plans for when the file is bigger than the demo
Yearly billing saves 50 percent. There is no free plan, and no card is needed to use the browser demo above.
Yearly billing saves 50 percent, half the monthly price.
Switch to yearly and save 50 percent.
Analyst
Self-serveOne person with files to clean, as many as they like.
$29$59/mo
Billed $348 a year Billed monthly
- Unlimited files
- Files up to 25MB, about 100,000 rows
- Exact and fuzzy duplicate detection
- Dates, numbers, currencies, encoding and casing fixed
- Every change reviewable before you download
- Cleaned CSV and a change log, both downloadable
- Runs in your browser: files never leave your machine
- Email support
Enterprise
Several people on one invoice, a DPA on request, priced per seat.
$49$98/seat/mo
Billed $588 a seat a year, from 2 seats ($1,176) Billed monthly per seat, from 2 seats ($196)
- Everything in Analyst
- Several people on one invoice
- DPA on request
- Invoicing and purchase orders
- A named contact for support
Payment is by card through our payment provider, monthly or yearly, and you can cancel from your account at any time. The free try is one file of your own, up to 5MB, in the browser demo. Already paid? Sign in.
Related pages
- CRM Data Cleansing Before Import or Migration
- Salesforce Deduplication and Data Cleaning Tool
- Fuzzy Matching Tool for Names and Companies
- Data Deduplication Tools for CSV and Excel
- Data Cleaning Software for CSV and Excel Files
- Data Quality Tools and Software Compared
- Entity Resolution Software for Customer Records
- Data Hygiene for Contact Lists and CRM Records
- Excel Data Cleaning Tool Without Formulas
- Data Cleaning Services vs Doing It In House
- Address Standardization and Cleansing Software
- Zoho CRM Deduplication to Merge Duplicate Contacts
- Pipedrive Duplicate Contacts Deduplication Tool
- NetSuite CSV Import With Clean and Deduped Files
- Data Scrubbing Software and Tools for CSV Files
- Mailchimp Duplicate Contacts Across Audiences
- Constant Contact Duplicate Contacts and Emails
- Klaviyo Duplicate Profiles and Merge Profiles
- ActiveCampaign Duplicate Contacts and Merge Contacts
- QuickBooks Online Merge Vendors and Customers From One List
- Merge Customers in QuickBooks Desktop and Merge Vendors
- Salesforce Merge Accounts in Bulk from One Reviewed List
- Salesforce Merge Contacts and Merge Leads From One Reviewed List
- HubSpot Merge Contacts and Companies From a Reviewed List
Clean the file, and be able to show what you changed
Try the demo on your own CSV first. It runs in your browser, it costs nothing, and no card is required.
No card required. Your file never leaves your computer.