Deduptio

Deduptio vs a CSV export and a spreadsheet

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

StepCSV export + spreadsheetDeduptio
CostFree, plus your afternoonFree plan; Pro $59/month
Exact-match detectionYes COUNTIF, pivot tables, conditional formattingYes Exact rules on any attribute
Normalized matchingPartial Only what you build: TRIM, LOWER, suffix strippingYes Built in for emails, domains, phones and company suffixes
Fuzzy matchingNo Not without scripting or an add-onYes On paid plans, with the match reason shown per group
Groups larger than twoPartial Visible, but painful to act onYes Grouped and merged as one unit
MergingNo Impossible from the spreadsheetYes Attio's native merge, one group or hundreds
Preserves activity, notes, list entriesNo Not applicable — nothing is mergedYes Attio moves them onto the surviving record
UndoN/AYes 24-hour rollback from an automatic snapshot
Stays true tomorrowNo The export is stale the moment it downloadsYes 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:

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?

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 scan

Related