Deduptio

Duplicates from a CSV import into Attio

The short answer

Map a unique attribute — email for people, domain for companies — and Attio updates the record that already holds that value instead of creating a second one. Skip that step and every row becomes a new record. There is no undo for an import, so the mapping screen is the whole game.

How Attio decides to update or create

Attio's importer checks incoming rows against existing records using unique attributes. If a row's value matches an existing record, that record is updated. If it matches nothing, a record is created. Email address is the usual unique attribute for people and domain for companies; record IDs work when you are re-importing data you exported from Attio.

There is no third option. The importer never deletes, which is the fact behind almost every surprise on this page.

The two mapping mistakes

MistakeWhat you getThe fix
No unique attribute mappedEvery row is created. Import 3,000 contacts you already have and the object doublesMap email address for people, domain for companies, before running the import
Importing into a list without entry IDsThe same record added to the list more than once — one record, several entries, with counts to matchMap entry IDs when updating multiple entries that share a parent record — see duplicate list entries

Before you import: five minutes that saves an afternoon

  1. Deduplicate the file itself. Two rows with the same email will be applied in sequence — the second one overwrites the first. This is the one place a spreadsheet is genuinely the right tool.
  2. Normalize the identifying column. Lowercase and trim emails. Strip https://, www. and trailing slashes from domains. A value that looks equal to you may not be equal to a matcher.
  3. Fill the identifier or accept the consequence. Rows with a blank email or domain cannot match anything and will always create. If a third of your file has no identifier, a third of the file is new records.
  4. Import companies before people. Associations resolve against companies that already exist; the other order creates company records as a side effect.
  5. Test with twenty rows. Import a slice, look at what happened in Attio, then run the rest. This catches every mapping error at a cost of twenty records.

If the import has already run

Do not re-import a cleaned file: it cannot delete anything, and correcting an identifying value while cleaning turns an update into yet another new record. Work on the live records instead.

  1. Scope it. The duplicates are the ones created in the import window and they share the shape of the file, which makes them unusually easy to match on the exact attribute you failed to map.
  2. Decide delete or merge. If the newly created records have no activity yet — nothing emailed, nothing noted — deleting them is clean. If anything has landed on them, merge so the history moves onto the survivor rather than being destroyed.
  3. Choose the survivor deliberately.Usually the original record, which carries the history. The imported one often has better field values, so copy those across or let the merge's field rules do it.
  4. Clean the lists afterwards. If the import also added entries, merging the records leaves the survivor in the list twice.
  5. Re-check counts. Compare the object count against what it was before the import. That number, not a spot check, tells you the cleanup is complete.

Doing the cleanup with Deduptio

An import-created duplicate set is the easiest kind to clear because the match is exact: two records, same email or same domain, one created minutes ago. Run an exact rule on the object, dry-run it, check a sample, and merge the batch. Every merge is snapshotted and restorable for 24 hours, and duplicate list entries left behind are cleaned automatically.

Find out what the import created

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