Deduptio vs a CSV export and a spreadsheet
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.
Every Attio duplicate cleanup starts here, because it is free and it works for the first twenty minutes. Export the object, sort by email, add a COUNTIF, and there is your duplicate list. It is a genuinely good way to find out how bad the problem is.
The short version: a spreadsheet is a measuring tool, not a cleaning tool. It can tell you that 340 of your 6,000 people are duplicates. It cannot merge a single one of them, and the obvious next move — clean the file and re-import it — does not delete anything and quietly creates a second generation of duplicates.
Side by side
| Step | CSV export + spreadsheet | Deduptio |
|---|---|---|
| Cost | Free, plus your afternoon | Free plan; Pro $59/month |
| Exact-match detection | Yes COUNTIF, pivot tables, conditional formatting | Yes Exact rules on any attribute |
| Normalized matching | Partial Only what you build: TRIM, LOWER, suffix stripping | Yes Built in for emails, domains, phones and company suffixes |
| Fuzzy matching | No Not without scripting or an add-on | Yes On paid plans, with the match reason shown per group |
| Groups larger than two | Partial Visible, but painful to act on | Yes Grouped and merged as one unit |
| Merging | No Impossible from the spreadsheet | Yes Attio's native merge, one group or hundreds |
| Preserves activity, notes, list entries | No Not applicable — nothing is merged | Yes Attio moves them onto the surviving record |
| Undo | N/A | Yes 24-hour rollback from an automatic snapshot |
| Stays true tomorrow | No The export is stale the moment it downloads | Yes Scheduled scans, with an email when new groups appear |
The re-import trap
This is the mistake worth spelling out, because it is the natural thing to try and it is the one that does damage.
Attio's CSV importer matches incoming rows against existing records using a unique attribute — typically email for people, domain for companies — and updates the record it matches, or creates a new one if it matches nothing. There is no third behaviour. It never deletes.
So when you re-import a cleaned file:
- The rows you deleted in the spreadsheet are simply not in the import. The records behind them are still sitting in Attio, untouched. Nothing was cleaned.
- Any row whose identifying value you tidied while cleaning — fixing a typo in an email, switching a company to its new domain — no longer matches the record it came from, so Attio creates a new record. You have added duplicates while trying to remove them.
- If you did not map a unique attribute at all, every row is new. One import can double an object. See duplicates from a CSV import for how that plays out and how to recover.
What the export does not contain
Finding a duplicate group is the easy half. Deciding which record survives is the half that matters, and it depends on information the CSV does not carry: how many emails and calls are attached to each record, which one other records reference, which lists each one sits in, which one your automations already use, and which one someone updated this morning. In a spreadsheet you are choosing a survivor from a name and a created date.
That is also why exports go stale. By the time a careful cleanup is finished, the workspace has moved on — new records created by email sync, by a form, by a teammate — and the file describes a workspace that no longer exists.
Where the spreadsheet is genuinely right
Before the import. A file that has not landed in Attio yet has no history, no relationships and no list memberships to protect, so collapsing duplicate rows in a spreadsheet is exactly the correct move — and cheaper than any tool. Clean the file, map a unique attribute so Attio matches rather than duplicates, and load companies before people so associations resolve.
After the import, the spreadsheet's job is measurement: how many duplicates, on which object, matching on what. That number is worth having before you decide whether this is a ten-minute job in the Attio UI or something that needs a tool.
Which should you use?
- Spreadsheet for pre-import cleanup, one-off analysis, and finding out how big the problem is.
- Attio's native mergeif the answer turns out to be "about a dozen". See Deduptio vs Attio's native merge.
- Deduptio when the count runs to hundreds, when the matching needs to be fuzzy or normalized, when the object is one Attio cannot merge by hand, or when you want the whole thing reversible.
Get the number without an export
Connect Attio, write one match rule, and run a read-only scan. It gives you the count and every group behind it, without downloading anything.
Start a free Attio duplicate scanRelated
- Duplicates from a CSV import into Attio — preventing them at import time, and cleaning up after the one that got away.
- The Attio deduplication guide — rule design, survivor selection and verification.
- All comparisons · Tools that do not support Attio