Attio

Create or update an Attio record for each form submission.

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:

  1. In Attio, go to Workspace settings → Developers and create an API key with read access to object configuration and write access to records.
  2. 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

  1. Open the form and go to its Integrations tab.
  2. Click Add integration and choose Attio.
  3. 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.
  4. Choose what to match records on. Only Attio attributes marked unique can be used, since that's what Attio deduplicates against.
  5. 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.
  6. 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.