Duplicate deals in Attio
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.
Attio's interface cannot merge deals — merge is available for company and person records only. So a duplicate deal is either deleted, which loses its history, or merged through the API. Before doing either, be sure the two records are one opportunity and not two real ones with similar names.
Why duplicate deals are a different problem
With people and companies, two records describing the same entity are simply wrong. Deals are not like that. A single customer can correctly have several open opportunities at once: a renewal and an upsell, two business units, this quarter's project and next quarter's. They often carry near-identical names, the same company, the same owner and overlapping dates.
That means the first question is never "how do I merge these?" but "is this one opportunity or two?" Get that wrong and you have not cleaned data, you have deleted a deal from the forecast.
How duplicate deals actually appear
- Two people, one account. An AE and an SDR each create a record for the same conversation.
- Resurrection. A deal was closed lost, the buyer came back, and someone started a fresh one instead of reopening.
- Automation per enquiry. A form or integration creating a deal on every inbound message rather than checking for an open one.
- Migration. Opportunities arriving twice from an export run twice, or from two source objects mapping onto one Attio object.
- Duplicate parents. Two company records, each with their own deal. Clean the companies first and the deals collapse into an obvious pair — this is why objects with reference keys should be scanned last.
Deciding whether two deals are one
Strong evidence that they are the same opportunity:
- the same company and the same primary contact;
- overlapping value and close date;
- activity that interleaves — emails on one record continuing a thread on the other;
- one of them stalled at an early stage the moment the other was created.
Evidence that they are two real deals, no matter how similar the names look:
- different products, regions or business units;
- different buyers or economic owners inside the same account;
- a renewal alongside a new-business deal — these are supposed to coexist and merging them corrupts both the forecast and the renewal date.
The three ways to resolve one
- Copy across and delete. Move what matters onto the surviving deal by hand, then delete the other. Free, and fine when the duplicate is empty. Anything attached to the deleted record is gone permanently.
- Close one as a duplicate. Set the loser to a lost or void stage with a reason, and keep it for the audit trail. Nothing is deleted, reporting stays honest as long as your stage filters exclude it, and the pipeline number is correct.
- Merge through the API.Attio's record merge endpoint covers objects the interface does not, so deals can be merged — notes, tasks and activity move to the survivor rather than being deleted. This is what Deduptio does for deals and custom objects.
One caveat worth knowing before you merge deals: a required status or select attribute with no stored value comes back set to that attribute's first option if the merge is later rolled back, so a restored deal can return at a different stage. Check the stage after a restore.
Matching rules for deals
Deals have no natural unique identifier — no email, no domain — so rules are built from references and combinations:
- Same company reference combined with an overlapping close date window, or a similar value.
- Same external id if the deal originated in another system. This is the strongest signal available and worth storing during a migration.
- Same company plus normalized deal name. Useful, and still worth reviewing individually.
- Never name alone. Deal names are templated — "Acme — Q3" describes half a pipeline.
Because deals reference companies, the parent object needs to be clean first. Deduptio resolves reference keys through pending duplicate groups so that two deals pointing at two copies of the same company still match — the mechanics are in cross-object matching.
Stopping the pattern
Duplicate deals are as much a process problem as a data one. The two changes that work: require an account check before opening an opportunity, and reopen rather than recreate when a lost deal comes back. A weekly scan on the Deals object catches the rest while the pipeline number still matters.
Scan your Deals object
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 scanRelated
- Duplicate companies in Attio — clean these first; duplicate deals often follow from duplicate parents.
- Deduptio vs Attio's native merge — what the built-in merge covers and what it does not.
- Cross-object matching · The full guide