Attio
The Attio integration writes one record per submission to an object you pick. Unlike most integrations it upserts: if a record already matches on the attribute you nominate, that record is updated instead of a duplicate being created.
Connect your Attio workspace
Connecting is a one-time step per team, and requires a team admin:
- In Attio, go to Workspace settings → Developers and create an API key with read access to object configuration and write access to records.
- In Formiary, go to Settings → Integrations, click Connect Attio account, and paste the key.
Formiary verifies the key with Attio before saving it (stored encrypted; it's never shown again). Pasting a new key for the same workspace later — for example after rotating it — updates the existing connection.
Add the integration to a form
- Open the form and go to its Integrations tab.
- Click Add integration and choose Attio.
- Pick the workspace (pre-selected if your team has exactly one), then the
object to write to —
Person,Company, or one of your custom objects. - Choose what to match records on. Only Attio attributes marked unique can be used, since that's what Attio deduplicates against.
- Map your form's fields onto the object's attributes. The matching attribute must be mapped — a record can't be matched on a value the submission never supplies.
- Use Send test event to write a sample record and confirm the setup.
How matching works
Each submission is sent to Attio's assert endpoint with your chosen matching attribute:
- If a record already has the same value for that attribute, it is updated with the mapped fields.
- If nothing matches, a new record is created.
Matching on Email addresses for people is the usual choice: repeat
submissions from the same address enrich one record instead of piling up
duplicates.
How fields map
The mapping is explicit: you choose which form field fills each attribute.
- Form fields you don't map are not sent.
- A mapped field left blank on a submission is omitted, so it won't overwrite a value already on the record.
Only attribute types Formiary knows how to format are offered — text, number, checkbox, date, select, status, email, phone, domain, and name attributes.
What happens on failure
Deliveries that fail are retried with exponential backoff. A rejected key (401/403), a missing object (404), or a request Attio will always refuse (400 — usually a mapped value that doesn't suit its attribute type) stops retrying immediately and is marked dead-lettered in the delivery log.