Duplicate detection
When a form is submitted, Forms checks whether a matching record already exists in your Attio workspace. If a match is found, the existing record is updated instead of creating a duplicate.
How matching works
Matching is based on the type of Attio object:
People
The submitted email address is used to find an existing Person record. If a Person with that email already exists, the submission updates that record.
Forms checks the standard email_addresses attribute.
Companies
The submitted domain is used to find an existing Company record. If a Company with that domain already exists, the submission updates that record.
Forms checks the standard domains attribute.
Other objects
For custom objects or objects without email/domain attributes, a new record is created on every submission unless a unique attribute constraint exists on the object in Attio.
What happens on a match
When a matching record is found:
- New values are written to the record, updating any fields that were submitted
- Existing values on fields not included in the form are left unchanged
- For multi-select fields, new values are appended (not replaced)
- List entries are always created as new entries, even if the parent record was matched
When no match is found
A new record is created with all the submitted field values.
Related objects
Duplicate detection also applies to related object sections. If your form creates both a Company and a Person, each is matched independently — the Company by domain, the Person by email.
Tips
- Make sure your form includes an email field (for People) or domain field (for Companies) to enable duplicate detection
- Duplicate detection is automatic — there is no setting to enable or disable it
- If a match fails (e.g. Attio API timeout), the submission falls back to creating a new record