A Marketo to HubSpot migration moves your lead database as it stands, and most Marketo databases hold duplicates Marketo never merged. HubSpot will collapse the ones that share an exact email address on import, without asking which values should survive, and will load every other duplicate as a separate contact that counts toward your marketing contacts.
The fix is to export people from Marketo, merge the duplicates in that file with a person reviewing every match, and import the cleaned result into HubSpot once. Every decision goes into an audit log, so when HubSpot shows fewer contacts than Marketo did, the marketing ops lead can explain the difference line by line to whoever signs off the move.
Why a Marketo database carries duplicate leads
Marketo checks email addresses only at the door, and only at some doors. Adobe's documentation says that when a new lead enters Marketo from a form fill or a list import, Marketo searches for a lead with the same email address. It also says Marketo does not automatically deduplicate against a Salesforce or Microsoft Dynamics sync, or when people are entered by hand, and that it does not deduplicate leads already in the database.
So the typical instance has three kinds of duplicates. Leads created in Salesforce through its own import or web to lead forms and synced across, sitting next to the Marketo copy with the same email. Trade show and event leads loaded without an email address, next to the person who later filled in a form. And the same buyer under a work and a personal address, which no system should merge without a human looking at it.
| How the lead entered Marketo | Email check at entry | What you find at export |
|---|---|---|
| Form fill | Yes, on email | Clean unless the person used a second address |
| List import | Yes, on email | Rows with no email are never matched |
| Salesforce or Dynamics sync | No | Same email twice, different field values |
| Entered by hand | No | Near duplicates with typos in the name |
How does HubSpot handle duplicates when you import from Marketo?
HubSpot deduplicates contacts on email address and companies on the primary company domain name during a file import. Two Marketo rows with the same email become one HubSpot contact, and the property values that end up on it come from the file rather than from anyone's judgment. A row without an email cannot be matched at all and becomes a new contact.
That is the real risk in the move. HubSpot quietly settles the exact duplicates for you, in whatever order the file happens to hold them, and quietly loads the rest. Neither behavior shows up as an error in the import summary. The only place both can be reviewed is the export, before it reaches HubSpot, which is the same approach as HubSpot deduplication applied upstream.
What a real Marketo export looks like after the pass
We built a file in the shape of a Marketo people export, with Email Address, First Name, Last Name, Company Name, State, Lead Source and Created At columns, and ran it through the engine behind our browser demo. The table shows what came back, not a mockup.
| Rows in the file | What they had in common | Result | Confidence |
|---|---|---|---|
| Nate and Nathan Brooks, web form and Salesforce sync | Same email address | One cluster, you pick the values | High |
| Alicia Moreno, trade show with no email and webinar | Same name and company, LLC ignored | One cluster, the row with email kept | High |
| Dana Kowalski and Dana Kowalsky, no email on one | Close name, same company | One cluster to review | Likely |
| Kevin Tran, work and personal email | Same name and company | Left as two contacts | Not matched |
HubSpot would have merged the Brooks pair on its own, but it would have decided between Nate and Nathan and between Crestline Manufacturing and Crestline Manufacturing Inc by file order. The Moreno and Kowalski pairs it would have loaded twice. The same run turned ohio, texas, california and pennsylvania into OH, TX, CA and PA, and resolved 03/11/2025 and 4 Feb 2026 to 2025-03-11 and 2026-02-04, so the state and date properties in HubSpot start with one format each.
The Kevin Tran pair is left alone on purpose. Two addresses usually mean two inboxes, and merging them by name would mean mailing one and silently dropping the other. How close matches like Kowalski and Kowalsky are scored is explained on fuzzy matching.
How to clean Marketo data before migrating to HubSpot
- 1 Export from Marketo. In Marketing Activities or Database, open a smart list that holds everyone you are migrating, go to the People tab, click the export icon at the bottom of the grid and export the visible columns as CSV. Add Email Address, names, Company Name, address fields, Lead Source, Created At and the Marketo ID to the view before you export.
- 2 Decide what not to migrate. Unsubscribed, hard bounced and long inactive leads are the cheapest rows to leave behind, since HubSpot prices Marketing Hub on marketing contacts. Keep the unsubscribes in a separate file so HubSpot can honor them.
- 3 Load the people file into the demo. Nothing uploads, the file is matched inside your browser tab. Approve the clusters and the state, date and ZIP code fixes you agree with, reject the rest, and download the cleaned CSV with its audit log. Keep the Marketo ID on every row so you can trace any contact back.
- 4 Import companies first, with a domain on every company you keep, because HubSpot matches companies on domain. Then import the cleaned contacts, and map Lead Source and Created At to custom properties so the Marketo history is not lost.
- 5 Compare the HubSpot contact count to the cleaned file, not to Marketo. The audit log explains every row that is missing, which is the number the sign off meeting will ask about.
Should you merge duplicates in Marketo before the migration?
Only if Marketo stays in use for a while. Marketo merges are permanent, there is no undo, and scores are not summed when leads merge, so merging a few thousand pairs in the old system is slow work on a platform you are about to switch off. When Salesforce is connected, Adobe notes that merges follow Salesforce rules and can fail on person accounts.
For a migration, merge in the file instead. You get the same outcome in HubSpot, a record of each decision, and nothing to reverse in Marketo if the project timeline slips. If the move also takes your CRM from Salesforce to HubSpot, the CRM side of the same work is in Salesforce to HubSpot migration. Teams leaving Pardot rather than Marketo meet a different duplicate, one prospect per Salesforce record, covered in Pardot to HubSpot migration.
After the migration, keep HubSpot clean
Programs, emails and scoring models have to be rebuilt in HubSpot, and the teams doing that work tend to import event and webinar lists as they go. Route every one of those lists through the same file pass before it goes in, so the duplicates you removed do not come back in the first month. The routine for keeping any contact database usable between projects is covered in CRM data cleansing.
Send the merged list to the tools downstream as well. If sales development runs outbound from separate cold email software, load the deduplicated contacts there too, or the old Marketo duplicates live on in the sequencer and the same prospect gets two first touches in the same week.
Where DataUntangler fits in a Marketo to HubSpot migration
DataUntangler does not connect to Marketo or to HubSpot, and it does not rebuild programs or emails. It takes the exported people file, proposes every duplicate cluster and every format fix as a change you approve or reject, and returns the cleaned CSV with an audit log for whoever signs off the counts. It runs on the Analyst plan at 59 dollars a month with unlimited files. The wider cutover plan for any CRM or marketing platform move is in data migration cleansing software.