Deduptio

Duplicate list entries in Attio

The short answer

One record, two entries in the same list. It is not a duplicate record and merging will not fix it — in fact merging is usually what caused it. Remove the extra entry, deciding deliberately whether to keep the oldest (the history) or the newest (the current stage).

Records and entries are different things

In Attio a list entry is its own object: it points at a record and carries its own attributes — stage, owner, dates, whatever the list is for. That is what makes lists powerful, and it is also why a record can appear in one list twice with two different stages, each entry telling a different story about the same company.

So there are two distinct bugs, with two distinct fixes:

Where they come from

  1. Merging duplicates. The commonest cause, and an ironic one. If both duplicate records sat in the same list, both entries follow the surviving record, so a successful cleanup leaves the survivor in that list twice. Clearing a duplicate backlog without a list pass afterwards trades one problem for another.
  2. Imports into a list.Attio matches records on a unique attribute, but when you are updating several entries that share a parent record, matching by unique attribute is not enough — Attio's own guidance is to map entry IDs. Skip that and the import adds entries rather than updating them.
  3. Automations that add on every trigger. A Zap or scenario that adds a record to a list each time an event fires, without checking membership first. Both Zapier and Make expose a create-or-update action for list entries by parent record — use it.
  4. People. Two teammates adding the same account to the same list within a week of each other.

What it actually breaks

Counts, mostly, and counts are the whole point of a list. A pipeline that says 40 when it is 34. A campaign audience that overstates reach. A board where the same card sits in two columns because the two entries disagree about stage. Anything that acts per entry — notifications, sequences, reporting rollups — can also act twice.

The subtle version is worse than the obvious one: two entries at different stages, both technically current, and no way to tell from a summary view which is right.

Keep the oldest or the newest?

If entries carry no attributes of their own, it does not matter. If they do, decide deliberately:

Either way, copy anything worth keeping off the entry you are about to remove first — removing an entry removes its per-entry values with it.

Doing it in Deduptio

Deduptio treats this as a first-class problem rather than an afterthought, because its own merges create it:

The details, including the removal log, are in the lists documentation.

Preventing the next ones

  1. Use create-or-update-by-parent-record wherever an automation adds to a list.
  2. Map entry IDs when a CSV import updates existing list entries.
  3. Run the list cleanup as part of finishing a duplicate cleanup, not as a separate project.
  4. Spot-check list counts after any bulk merge — a count that dropped less than expected is the tell.

Clean the records, then the lists

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