Duplicates after a Salesforce to Attio migration
Last checked September 1, 2026 · Deduptio is our product. Every claim about another tool comes from its public site or documentation and is linked in place — tell us if something is out of date.
Leads and Contacts both become Attio people, so the Lead/Contact split turns into duplicate person records on arrival. Decide what to do with unconverted Leads before importing, load Accounts first, and clean companies before people before opportunities.
How the objects map
| Salesforce | Attio | Duplicate risk |
|---|---|---|
| Account | Company | Moderate. Accounts often lack a website field, and Attio matches companies on domain |
| Contact | Person | Low on its own — email is usually populated |
| Lead | Person | High. The same human is often both an unconverted Lead and a Contact, arriving as two person records |
| Opportunity | Deal | Follows the parents: duplicate Accounts produce duplicate-looking deals |
| Person Accounts | A person, a company, or both | High if the mapping is not decided deliberately before the export |
There is no Lead object in Attio and no conversion step. That is a genuine simplification — it removes a whole category of Salesforce duplicate permanently — but the transition has to be handled once, explicitly.
Decide these before you export
- Which Leads come at all. Filter by last activity. Years of untouched Leads are the largest avoidable source of duplicates in this migration, and importing them costs you cleanup time twice — once now, and again every time someone searches a name and finds three records.
- Lead or Contact wins.Where a person exists as both, decide in advance which record's field values you want to survive. Usually the Contact — it is the converted, worked record — with the Lead's source and campaign fields carried across.
- Derive a domain for every Account. From the Website field where it exists, or from contact email domains where it does not. Normalize it: lowercase, no protocol, no
www., no trailing slash. - Keep the Salesforce IDs. Map them into an attribute in Attio. They are the only truly unique identifier you will have, they make the second pass of any cleanup trivial, and they are how you prove what came from where when someone questions a number.
- Turn off mailbox auto-creation until the import finishes.
The cleanup order after the import
- Companies, exact domain. Bulk merge after a sample check.
- Companies, reviewed. Fuzzy name plus an exact second signal. Salesforce Account names accumulate decades of formatting drift, so expect real work here — fuzzy matching company names covers what to accept and reject.
- People, exact email. This is where the Lead-and-Contact pairs collapse, and it is the highest-yield pass in the whole migration.
- People, reviewed. Name plus company for the ones whose emails differ — Leads captured with a personal address, Contacts with a work one.
- Opportunities. Last, once parents are unique. See duplicate deals in Attio.
- Lists. Merging records that shared a list leaves the survivor in it twice.
Parents before children throughout: matching people on "same name at the same company" only means something once the company is one record, and Deduptio resolves reference keys through pending duplicate groups so linked objects match correctly while their parents are still being cleaned — cross-object matching explains the mechanism.
Choosing the survivor when history has not arrived yet
"Keep the record with the most activity" is the right instinct in a mature workspace and a trap immediately after a migration, because CSV imports do not bring notes and tasks with them. On day one the record with activity may be one Attio created from an email, while the record with your data is the imported one. Prefer the record carrying the migrated fields and the Salesforce ID, and let the activity move onto it.
What to verify
- Person count against Contacts plus the Leads you chose to import, minus the merges you performed.
- Every person attached to exactly one company record.
- Opportunity totals against your Salesforce pipeline report — this is the number executives will check.
- Salesforce IDs present and unique on the surviving records.
- A weekly scheduled scan for the first months, while integrations are still being connected one by one.
Scan before the team starts working the new workspace
Connect your Attio workspace, write one match rule, and run a scan. Scans are read-only — you see every group and the reason it matched before anything is merged.
Start a free Attio duplicate scanRelated
- DemandTools alternative for Attio · Cloudingo alternative for Attio — if Salesforce data-quality tooling was part of your stack.
- Duplicates after a HubSpot to Attio migration · …after a Pipedrive migration
- The Attio deduplication guide · CSV import duplicates