Can HubSpot workflows merge duplicate contacts?
Short answer
No. There is no merge action in the workflow tool, at any tier.
What you can build is the detection half: a custom coded action searches for a near match the moment a record is created, writes the candidate's record ID onto the record, adds it to a review list and assigns a task. A person merges afterwards, in the duplicate management tool or through the API. Data Hub Professional, about forty five minutes. The trap is exact string matching.
Read the whole answerShow less
What a spec looks like
The nine sections, and the files
Every spec follows the same nine sections, so a team reads one and knows how to read all of them.
- Outcome, when to use it and when not to
- Prerequisites: properties, lists, tiers, with the JSON to create them
- Enrollment and re-enrollment, then every step with its parameters
- Known pitfalls, a test plan, variants, and the YAML build spec
PDF, Markdown, properties JSON, workflow JSON, custom code where used. Test plan and known pitfalls in every spec.
Each spec states its minimum tier. The 12 free ones open in full, the others show their public preview.
The 50 specs, in build order
Detect the duplicate at creation
Searches for a near match while the record is new, and writes the candidate's ID where a reviewer can open it.
What each spec doesHide
Show the 2 other specs in this groupShow fewer
Flag the gap that creates the next duplicate
Required fields and association checks on every object, because a record with no domain and no company is the one that gets created twice.
What each spec doesHide
Show the 7 other specs in this groupShow fewer
Normalize the fields matching depends on
Phone, country, state, casing, job title, industry, address, dates and locale, so two versions of the same value stop reading as two records.
What each spec doesHide
Show the 8 other specs in this groupShow fewer
Associations and the values that should travel with them
Links a contact to its company from the email domain, then copies the handful of fields that segmentation keeps asking for.
What each spec doesHide
Show the 2 other specs in this groupShow fewer
Scores, checks and the review queue
Completeness, junk values, typo detection, cross-field contradictions and the enrichment fallbacks, all landing in a queue with a named owner.
What each spec doesHide
Show the 9 other specs in this groupShow fewer
Fix the backlog, then keep it fixed
One controlled pass over the records that already exist, and a scheduled sweep so the portal does not drift back.
What each spec doesHide
The 3 things that break this, and how the specs stop them
There is no merge action, on any tier
This is the honest answer to the question people arrive with.
A workflow can flag, tag, list and assign, and that is where its authority over a duplicate ends. Merging happens in the native duplicate management tool under Contacts, Actions, Manage duplicates, or through the CRM API, both outside the workflow. So every spec here is built as detect and queue, with a named owner and a short due date. A review queue nobody clears is not a cleanup process, it is a second place where the problem lives.
How the specs stop itShow less
Exact matching misses your duplicates and flags the ones you do not have
Comparing raw domain values treats acme.com and https://acme.com/ as different companies, and mail.acme.com as a third.
In the other direction, a parent brand and a sub-brand can legitimately share one marketing domain, and a name similarity check on Global Logistics and Global Marketing flags two unrelated companies. Matching on last name plus email domain turns every free mail address into a false positive unless the code excludes those domains explicitly. This is why the normalization component comes before the matching component, not after it.
How the specs stop itShow less
Custom code has a clock, a memory ceiling and a rate limit
Each custom coded action run has to finish inside twenty seconds and 128 MB, and you can set a rate limit per action that pauses that action and everything after it once it is exceeded.
The CRM Search API these specs call is itself rate limited, so a bulk import that creates two thousand contacts in a burst will throttle the lookup. The good news is that it surfaces as a failed execution in workflow history rather than a silent pass, which means you can find it. The specs say where to look.
How the specs stop itShow less
What this bundle builds
Two records for the same person, and nobody knows which one the rep should call. That is the visible symptom. Underneath it sit a dozen smaller failures: a country field holding four spellings of the United States, a phone number with no country code, a contact with no company, an email domain typed as gmial.com.
Fifty specs work on all of it. Six detect near duplicates at creation, on contacts, companies and tickets, and write the candidate's record ID onto the record so the reviewer opens one tab instead of searching. Eleven flag the gaps that manufacture duplicates in the first place, the missing domain, the missing association, the missing required field. Twelve normalize the values that matching depends on, phone, country, state, casing, job title, industry, address, dates and locale. Six handle associations and the cross-object copies that stop people re-typing company data onto contacts. Thirteen score, check and queue: completeness, junk values in name fields, a deal amount that disagrees with its line items, a phone country code that contradicts the address. Two deal with the backlog you already have.
Every one of them is detect and queue. None of them merges anything, because no workflow can.
Read the restShow less
How the pieces fit together
Normalization before matching. That order is the whole argument of this bundle. A domain comparison on raw values treats one company as three, so the phone, country and casing specs earn their keep by making the later comparisons mean something.
Then the flags, which need nothing and depend on nothing. Required fields, association hygiene, the primary company enforcement. They are the fastest twenty minutes in the bundle and they cut the inflow of new problems while you build the rest.
Detection third, once the fields it reads are consistent and once you know who owns the review queue. Each detection spec writes a review status property, so a record cleared as unique is not re-queued next week. Keep those status values consistent across the three detection specs or your queue reports will not add up.
The backlog last, deliberately. Running a normalization pass over four hundred thousand contacts before testing the rule on twenty is how a cleanup project becomes an incident. And the scheduled sweep repeats logic the event based specs already run, so decide which one owns each field rather than leaving both live and drifting apart.
What you get
- 50 specs, from a 15 minute rounding rule to a 60 minute enrichment and normalization pass, roughly 27 hours of build with testing
- Each spec as PDF and Markdown, with enrollment criteria, the step list, a diagram, a test plan and the known pitfalls written out
- Properties JSON: 76 property definitions across contacts, companies, deals, tickets and custom objects, including the review status properties that stop a cleared record re-entering the queue
- Workflow JSON in Automation API format, switched off on import
- Custom coded actions in 33 specs, with the matching logic, the free mail exclusions and the error result codes written out, not left as a comment
- Tier stated per spec: 43 Data Hub Professional, 4 Sales Hub Professional, 2 Data Hub Enterprise, 1 Service Hub Professional
- Static lists and review queues named and specified, with the task owner and the due window
- Install in one click for Full and Agency buyers
Who it is for, and who should skip it
For whoever owns data in a portal where reporting has stopped being believed. Also for a consultant inheriting a portal after two migrations and an acquisition, since the first thing anyone asks for is a duplicate count and the second is a plan that does not involve a spreadsheet.
Skip it if you are looking for automatic merging, because it does not exist and this bundle will tell you so on every page. Skip most of it if you are not on Data Hub Professional, since forty three of the fifty need a custom coded action, though the flag and required field specs will still run. And if the duplicates came from one bad import rather than an ongoing process, the native duplicate tool plus an afternoon may be the honest answer instead of any of this.
Questions admins ask
Can HubSpot workflows merge duplicate contacts?
No. The workflow action list has no merge action at any tier, and it is not a permissions or pricing question. The workable pattern is detection: search for a near match at creation, write a review status and the candidate record ID, add the record to a static list and create a task. The merge itself happens in the native duplicate management tool or through the CRM API, by a person who can judge which record should survive.
What does the native duplicate management tool do that a workflow cannot?
It merges, and it works on the backlog. The tool surfaces likely duplicate pairs across the records you already have and lets somebody merge them in place. What it does not do is catch a duplicate the minute it is created, or tell you why two records looked alike. That is what these specs add: a fast net on new records, an audit trail on the decision, and a queue with a due date. Use both, they solve different halves.
Do I need Data Hub Professional to deduplicate in HubSpot?
For matching beyond an exact field filter, yes, because that needs a custom coded action. Forty three of the fifty specs here sit at Data Hub Professional for that reason. Four run on Sales Hub Professional and one on Service Hub Professional, and those are the flag and required field specs, which is worth knowing if you want the review queue working this week while the code question goes through procurement.
Can a workflow stop a duplicate record from being created?
No. Workflows react after the record exists, so every check in this bundle detects and flags rather than blocks. HubSpot does prevent two contacts from sharing the same primary email address by itself, which is why these specs target near duplicates, the same person with a work address and a personal one. The preventive controls that do exist live on forms and pipeline stages, not in automation.
How do I clean up the duplicates already in the portal?
Two specs cover the backlog. One enrolls an existing list once, through manual enrollment with every automatic trigger switched off, so a normalization rule applies to history rather than only to new records. The other is a scheduled sweep that re-checks the active database on a fixed cadence. Export the source list before the one-time pass, because removing records from the list as a progress indicator also destroys your targeting.
Read 12 complete specs before you pay.
One per category, same format as the paid ones. Email only, no card.
We email the link, then a short note when specs change. Nothing else.
Here it is. Download the pack now (.zip) The link is in your inbox too.
Browse the library