Deduptio

Duplicates after a Pipedrive to Attio migration

The short answer

Pipedrive identifies organizations by name; Attio matches companies by domain. Add a domain column to the organization export before importing, pick one primary email per person, load organizations before people before deals, and turn off mailbox auto-creation until it is finished.

The structural mismatch

Most migration problems are not bugs, they are two data models disagreeing. Here the disagreement is specific and it explains nearly every duplicate you will see:

PipedriveAttioConsequence
Organizations identified by name; domain is optional and often emptyCompanies matched on domainNothing to match on, so every organization row creates a record — including ones that already exist
Persons can hold several email addresses, one flagged primaryMatching happens on the email attribute you mapMap the wrong address and the row matches nothing, creating a second person record
Free-text organization names, entered by reps over yearsFuzzy matching available, but not automatic"Acme", "Acme Ltd" and "ACME Limited" arrive as three companies
Deals linked to an organization and a personDeals reference company and person recordsDuplicate parents produce duplicate-looking deals; clean parents first

Before you import

  1. Add a domain column to the organizations export. If Pipedrive holds a website field, derive the domain from it and normalize: lowercase, no protocol, no www., no trailing slash. This single column is the difference between an import that matches and one that duplicates.
  2. Collapse obvious organization-name variants in the file while you are in a spreadsheet — this is the one stage where a spreadsheet is exactly the right tool, because the records have no history to protect yet.
  3. Choose one email per person as the matching attribute, preferring the work address. Keep the others as additional values if your mapping allows.
  4. Turn off mailbox auto-creation until the import is done, or Attio will create people from inbound mail alongside the ones you are loading.
  5. Load in order: organizations → persons → deals, mapping the unique attribute at each step, and test with twenty rows first.

After the import: the cleanup order

  1. Companies, exact. Same normalized domain. Safe to merge in bulk after a sample check.
  2. Companies, reviewed. Fuzzy name plus one exact signal — same country, same LinkedIn URL, or associated people sharing an email domain. This is where the free-text organization names get resolved; expect to reject some, and read fuzzy matching company names before you start.
  3. People, exact. Same email. Catches the mailbox-sync collisions and any double-run rows.
  4. People, reviewed. Name plus company, or name plus phone. Now meaningful, because the companies are unique.
  5. Deals. Last, once their parents are clean — many apparent duplicate deals simply disappear when two company records become one. See duplicate deals in Attio.
  6. Lists. Merging records that shared a list leaves the survivor in it twice.

The Pipedrive-specific things to check afterwards

Scan the new workspace before the team moves in

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 scan

Related