Match rules & scanning
A match rule defines when two records of an object count as the same entity. Each object (people, companies, deals, custom objects) gets its own rule.
Building a rule
- Keys — the attributes to compare: email addresses, domains, names, phone numbers, text, record references, selects and statuses.
- Exact or fuzzy — exact matches after normalization (case, whitespace, email/domain shape), or fuzzy similarity for names and free text that tolerates typos and variations. Fuzzy matching is available on paid plans.
- ANY or ALL — with ANY, records match if any key agrees (email or domain). With ALL, every key must agree at once.
Then decide what a merge does with the group: Survivor & field rules covers the two settings below the keys.
Attributes that hold more than one value
A person can have three email addresses and two phone numbers, and a company several domains. Every value is keyed, not just the first one — two records match if they share anyvalue of a key attribute. That matters because the duplicate filed under someone's second address is exactly the one an email key is meant to catch.
Rules that can't match anything
Some rules save cleanly and then find nothing, no matter how many duplicates the object holds. The Rules page warns you about the two common ones as soon as you open or save the rule.
- Email address on its own. Attio will not let two records hold the same email address, so duplicates in an Attio workspace nearly always differ on email — one copy has a typo in it, or a work address against a personal one, or no address at all. Matching on email alone is close to a guaranteed empty result. Key on Name as well; that is what finds duplicate people in practice.
- ALL over three or more attributes. ALL means every key has to agree on both records at once. Over three attributes — a name, a description and a logo URL, say — that is a coincidence rather than a duplicate, and free-text attributes make it near-impossible. Use ANY, or key on fewer attributes.
The warnings do not block saving. If you know your data and want the rule anyway, keep it.
A rule you saved while Attio is disconnected
Rules live in Deduptio, not in Attio. If the Attio connection expires, the Rules page can no longer show you the attribute list — that comes live from Attio, and so does each attribute's type — so it shows a Reconnect prompt instead of the editor. Underneath it, your saved rules are still listed: which object each covers, its keys, ANY or ALL, the survivor and field-conflict settings, and when it was last saved. The attributes appear under Attio's slugs rather than their titles there, because the titles are part of what needs the connection.
Nothing about a saved rule changes while you are disconnected, and scans use it again as soon as you reconnect. Editing a rule is the part that has to wait.
Why an attribute isn't in the list
The key picker only offers attribute types that make a meaningful duplicate signal. Owners and other people-references, currencies, numbers, dates and timestamps are deliberately left out: grouping on them matches records that merely share a value — the same owner, the same amount, the same created month — and are not duplicates.
If the attribute you want is a text or select field on the object and still isn't listed, reload the Rules page; the attribute list comes live from Attio, so an attribute added since you opened the page appears after a refresh.
One fuzzy key when combining with ALL
With ANY, as many keys can be fuzzy as you like. With ALL, only one attribute may be fuzzy — the other keys must match exactly. Fuzzy comparison works by grouping on a narrowed candidate set, and two independent fuzzy keys combined with ALL have no such set to narrow. The checkbox greys out once one is ticked, and the server enforces the same rule.
In practice this is the rule you want anyway: exact email and fuzzy name is a strong signal; two fuzzy keys is a guess made twice.
Running a scan
Start a scan from the Scan page. Deduptio pages through the object's records, applies your rule, and groups records that point to the same entity. Each group shows why its members matched. Groups you skip stay skipped; new scans only add groups that aren't already pending.
If the Scan page offers no objects to choose from, that is the same thing: the object list comes from Attio, and the page tells you the connection has expired rather than leaving you with an empty dropdown.
When a scan finds nothing
A finished scan reports three numbers: records scanned, records with a match key, and duplicate groups. The middle one is the one to read when the last is zero — a record only gets a match key once it has a value in your key attributes, and only records with a key can ever be grouped.
- No record had a match key. Nothing in the object filled in any of your key attributes, so there was nothing to compare. This is a rule problem, not an absence of duplicates — pick attributes your records actually use.
- Records have some key values but none got a key. Your rule combines with ALL, which needs every key present on a record before it counts at all. Switch to ANY, or key on fewer attributes.
- Most records got a key and no two shared one. The rule ran properly and found no duplicates under it. If you expect duplicates here, widen the rule — add a key attribute, or match names fuzzily rather than exactly.
Scheduled scans
Turn on the schedule to scan automatically, daily or weekly. A scheduled scan covers every object that has a match rule, not just the one you last scanned by hand, and emails you only when it finds new duplicate groups. More on automation →
Lists
Duplicate list entries (the same record sitting in a list twice) are checked live on the Duplicates page — no scan needed. See Lists.