Skip to content
DataUntangler

Pardot to HubSpot Migration Without Duplicate Contacts

Most Pardot accounts allow several prospects with the same email address, one per Salesforce lead or contact. HubSpot keeps one contact per email. A Pardot to HubSpot migration is where those two rules collide, and where you decide which record wins.

Published 30 September 2026 7 min read Written by the DataUntangler team

A Pardot to HubSpot migration collides two different ideas of what a person is. Pardot, now Marketing Cloud Account Engagement, usually keys prospects on the Salesforce CRM ID, so the same email address can sit on a lead prospect and a contact prospect at once. HubSpot keys contacts on email address. Every such pair collapses into one HubSpot contact, and unless you decide first, the file order or the Salesforce sync decides which values survive.

The fix is to export prospects from Pardot, put the lead ID and contact ID into one column, 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 Pardot showed prospects, you can explain each missing row.

Why Pardot holds several prospects with one email

The setting is called Allow Multiple Prospects with the Same Email Address, AMPSEA for short. It has been on by default for accounts bought after June 2016, and once enabled it cannot be switched off. With it, each Salesforce lead, contact or person account gets its own prospect, keyed on its CRM ID, so a lead that sales never converted and the contact they created by hand for the same buyer are two prospects with one email.

Pardot copes with that internally. When a form is submitted and several prospects match, it picks the one with the most recent activity. HubSpot has no such rule on an import, because two rows with one email are simply one contact to it. That is the gap a migration has to close.

The duplicate in Pardot Why it exists What happens in HubSpot
Lead prospect and contact prospect, same email AMPSEA, one prospect per CRM ID One contact, values settled for you
Same email with capitals or spaces Typed in by hand or a list import Clean it first, do not rely on it
Lead with no email next to a contact with one Trade show or phone lead Two contacts, nothing links them
Work and personal address for one buyer Two form fills Two contacts, both billed

How does HubSpot handle duplicates when you migrate from Pardot?

On a file import HubSpot deduplicates contacts on email address and companies on the primary company domain name. Two Pardot prospects with the same email become one contact. Rows without an email, or with a second address, come in as separate contacts, and HubSpot prices Marketing Hub on marketing contacts, so each one is a line on the bill.

Many teams keep Salesforce as the CRM and connect HubSpot through the Salesforce integration instead of importing. That does not avoid the problem. HubSpot documents that when several Salesforce leads or contacts share an email and the HubSpot contact is new, Salesforce returns the matches in no particular order and HubSpot syncs with the first one. After that it follows whichever record was updated most recently. Which of your two records ends up linked is not something you choose.

What a real Pardot export looks like after the pass

We built a file in the shape of a Pardot prospect export, with Email, First Name, Last Name, Company, State, Lead ID, CRM ID and Last Activity columns, and ran it through the engine behind our browser demo. These are the clusters it returned.

Rows in the file What they had in common Result Confidence
Laura Kim, lead prospect and contact prospect Same email address One cluster, you pick the row High
Mark Fisher, second row with capitals and spaces Same email after trimming One cluster, name case fixed High
Ana Ruiz, lead with no email, contact with one Same name and company, LLC ignored One cluster, the row with email kept High
Tom Hale, work and personal email Same name and company Left as two contacts Not matched

HubSpot would have merged Laura Kim and Mark Fisher on its own, but it would have picked the surviving values by file order. The Ana Ruiz pair it would have loaded as two contacts, since one row has no email to match on. The Tom Hale pair is left alone on purpose: two addresses usually mean two inboxes, and merging them on a name would mean silently dropping one. How close spellings are scored is on the fuzzy matching page.

One practical note from the same test. Pardot exports the lead ID and the contact ID in two separate columns, and Pardot itself asks you to combine them into one CRM ID column before a reimport. Do that before the pass as well. When we left a column headed Contact ID in the file, the engine read it as part of the name and the Ana Ruiz pair was missed, while a single CRM ID column matched it.

How to clean Pardot data before migrating to HubSpot

  1. 1 Export prospects from Pardot with email, first and last name, company, state, phone, source, the lead and contact IDs and the last activity date. Combine the two ID columns into one CRM ID column, so each row carries the Salesforce record it belongs to.
  2. 2 Decide what not to migrate. Unsubscribed, hard bounced and long inactive prospects are the cheapest rows to leave behind, since HubSpot bills Marketing Hub on marketing contacts. Keep the opt outs in a separate file so HubSpot knows not to mail them. Prospect activity history does not move to HubSpot, so export what you want to keep for reporting.
  3. 3 Load the prospect 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.
  4. 4 Import companies first, with a domain on every company you keep, because HubSpot matches companies on domain. Then import the cleaned contacts with the CRM ID mapped to a property, so each HubSpot contact still points at the right Salesforce record.
  5. 5 If Salesforce stays as the CRM, merge the matching lead and contact pairs there too, keeping the record that is already syncing with HubSpot as the primary. The audit log is your list of pairs. Then compare the HubSpot contact count to the cleaned file, not to Pardot.

Should you merge prospects in Pardot before the migration?

Usually not. There is no way to merge duplicate prospects in bulk through the Pardot API, so merging thousands of pairs means doing them by hand in a system you are about to leave. With AMPSEA on, merging the prospects does not merge the Salesforce records behind them either.

Merge in the file instead. You get the same outcome in HubSpot, a record of each decision, and nothing to undo in Pardot if the timeline slips. If your trade show leads still arrive as scanned sign in sheets or business cards, document data extraction can turn them into rows first, and the same pass then catches the people who were already in the list.

Where DataUntangler fits in a Pardot to HubSpot migration

DataUntangler does not connect to Pardot, Salesforce or HubSpot, and it does not rebuild engagement programs or forms. It takes the exported prospect file, proposes every duplicate cluster and every format fix as a change you approve or reject, and returns a cleaned CSV plus an audit log. The buyer is the marketing ops lead with a cutover date who has to load one contact per person and explain the count afterwards.

If the same project moves your CRM off Salesforce as well, the CRM side is in Salesforce to HubSpot migration, and the contact dedupe inside HubSpot after go live is on HubSpot deduplication. For marketing teams coming from the other big platform, the equivalent guide is Marketo to HubSpot migration. The Analyst plan is 59 dollars a month, or 348 dollars a year, with unlimited files, and you can test your own export in the demo first.

The file is still messy after the article

Load it into the demo and see every duplicate, every broken date and every mangled character as a line you can approve or reject.

No card required. Your file never leaves your computer.

Clean a file