> ## Documentation Index
> Fetch the complete documentation index at: https://formbricks.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Attio

> Learn how to integrate Formbricks with Attio to automatically create or update records when survey responses are submitted.

<Note>
  There is no native Attio integration yet. Connect Formbricks to Attio with Attio Workflows, Make, n8n, or a custom webhook.
</Note>

## Prerequisites

* A Formbricks survey that collects email addresses
* An Attio plan that includes Workflows or API access
* An Attio access token (n8n and webhook methods only)

### Attio access token

<Steps>
  <Step title="Create an Integration">
    In Attio, go to **Workspace Settings** → **Developers** and click **Create a new integration**.
  </Step>

  <Step title="Set Scopes and Copy the Token">
    Grant `record_permission:read-write` and `object_configuration:read`, save, and copy the access token.
  </Step>
</Steps>

See [Attio's authentication docs](https://docs.attio.com/rest-api/guides/authentication) for details.

***

## Method 1: Attio Workflows

Attio [Workflows](https://attio.com/help/reference/automations/workflows/overview-of-workflows) can receive Formbricks webhooks directly, so no third-party tool is needed.

<Steps>
  <Step title="Create a Workflow">
    In Attio, go to **Workflows** → **Create workflow** and choose **Webhook received** as the trigger. Copy the generated URL.
  </Step>

  <Step title="Add the Webhook in Formbricks">
    Go to **Configuration** → **Integrations** → **Manage Webhooks** → **Add Webhook**. Paste the Attio URL, select **Response Finished**, and choose your survey.

    <img src="https://mintcdn.com/formbricks/ciPr-k8rsK4LGtZI/images/platform/features/integrations/webhooks/integrations-tab.webp?fit=max&auto=format&n=ciPr-k8rsK4LGtZI&q=85&s=6701827c1d1c7b24eaec63f2c3450601" alt="Integrations Tab" width="3534" height="1988" data-path="images/platform/features/integrations/webhooks/integrations-tab.webp" />
  </Step>

  <Step title="Add a Parse JSON Block">
    Submit a test response, then add a **Parse JSON** block. Set **Input** to **Webhook Payload Body** and generate the schema by pasting the sample Formbricks payload. Answers are under `data.data`, keyed by `questionId`.
  </Step>

  <Step title="Add a Create/Update Record Action">
    Choose **People** or **Companies** and map the parsed fields. To avoid duplicates, match People on email (e.g. `data.data.email`) and Companies on domain.
  </Step>

  <Step title="Test and Activate">
    Submit another response, confirm the record in Attio, and turn the workflow on.
  </Step>
</Steps>

***

## Method 2: Make.com

<Steps>
  <Step title="Set Question IDs">
    Give each question a meaningful `questionId` so mapping is easier. These can only be changed before publishing; for a published survey, duplicate it first.

    <img src="https://mintcdn.com/formbricks/ciPr-k8rsK4LGtZI/images/platform/features/integrations/make/update-question-id.webp?fit=max&auto=format&n=ciPr-k8rsK4LGtZI&q=85&s=34ef2a99e6353651275474585b319bd6" alt="Update Question ID" width="931" height="363" data-path="images/platform/features/integrations/make/update-question-id.webp" />
  </Step>

  <Step title="Add the Formbricks Trigger">
    In a new [Make](https://make.com) scenario, add **Formbricks** → **Watch Response Finished**. Click **Create a webhook**, enter your API host (default `https://app.formbricks.com`) and [API key](/docs/api-reference/rest-api#how-to-generate-an-api-key), and select your survey.

    <img src="https://mintcdn.com/formbricks/ciPr-k8rsK4LGtZI/images/platform/features/integrations/make/search-formbricks.webp?fit=max&auto=format&n=ciPr-k8rsK4LGtZI&q=85&s=4ccc17e459b6999a6e5c9a2853548bda" alt="Search Formbricks" width="1696" height="636" data-path="images/platform/features/integrations/make/search-formbricks.webp" />

    <img src="https://mintcdn.com/formbricks/ciPr-k8rsK4LGtZI/images/platform/features/integrations/make/enter-api-key-and-host.webp?fit=max&auto=format&n=ciPr-k8rsK4LGtZI&q=85&s=635a6374fc27d2f5935dbf1204937c7a" alt="Enter API Key" width="1248" height="954" data-path="images/platform/features/integrations/make/enter-api-key-and-host.webp" />
  </Step>

  <Step title="Add the Attio Module">
    Add **Attio** → **Create or Update a Person** (or **Company**) and connect your Attio account.
  </Step>

  <Step title="Map Fields">
    | Attio Attribute | Formbricks Field |
    | - | - |
    | Email Addresses | `data.email` |
    | Name | `data.firstName` / `data.lastName` |
    | Custom Attribute | Any `data.*` or `meta.*` field |
  </Step>

  <Step title="Test and Activate">
    Submit a test response, confirm the record in Attio, and turn on the scenario.
  </Step>
</Steps>

***

## Method 3: n8n

<Note>
  The Formbricks and Attio nodes are community nodes for self-hosted n8n. On n8n Cloud, use a **Webhook** node as the trigger (with a Formbricks webhook pointing at it) and an **HTTP Request** node with the API call from Method 4. The Webhook node nests the request under `body`, so use `$json.body.data.data.*` in place of `$json.data.data.*`.
</Note>

<Steps>
  <Step title="Add the Formbricks Trigger">
    Install `@formbricks/n8n-nodes-formbricks` via **Settings** → **Community Nodes**. Then add the **Formbricks** trigger node, connect your API key and host, select **Response Finished**, and choose your survey.

    <img src="https://mintcdn.com/formbricks/ciPr-k8rsK4LGtZI/images/platform/features/integrations/n8n/add-formbricks-trigger.webp?fit=max&auto=format&n=ciPr-k8rsK4LGtZI&q=85&s=6ec754cf7fb282ae800595341304a2ea" alt="Add Formbricks Trigger" width="1050" height="1044" data-path="images/platform/features/integrations/n8n/add-formbricks-trigger.webp" />
  </Step>

  <Step title="Add the Attio Node">
    Install `n8n-nodes-attio` via **Settings** → **Community Nodes**, add it with the **Assert Record** operation, and authenticate with your access token.
  </Step>

  <Step title="Configure the Record">
    Set **object** to `people` and **matching\_attribute** to `email_addresses`, then set the `data` body (replace the keys with your `questionId`s):

    ```json theme={null}
    {
      "values": {
        "email_addresses": ["{{ $json.data.data.email }}"],
        "name": [{
          "first_name": "{{ $json.data.data.firstName }}",
          "last_name": "{{ $json.data.data.lastName }}",
          "full_name": "{{ $json.data.data.firstName }} {{ $json.data.data.lastName }}"
        }]
      }
    }
    ```
  </Step>

  <Step title="Test and Activate">
    Click **Listen for event**, submit a test response, confirm the record in Attio, and activate the workflow.
  </Step>
</Steps>

***

## Method 4: Custom webhook

<Steps>
  <Step title="Create a Formbricks Webhook">
    Go to **Configuration** → **Integrations** → **Manage Webhooks** → **Add Webhook**, enter your endpoint URL, select **Response Finished**, and choose your surveys.
  </Step>

  <Step title="Build the Handler">
    Read the answers from `data.data` (keyed by `questionId`) and call Attio's [Assert Record endpoint](https://docs.attio.com/rest-api/endpoint-reference/records/assert-a-record), which creates or updates in one call:

    ```
    PUT /v2/objects/people/records?matching_attribute=email_addresses
    ```

    ```json theme={null}
    {
      "data": {
        "values": {
          "email_addresses": ["jane@example.com"],
          "name": [{ "first_name": "Jane", "last_name": "Doe", "full_name": "Jane Doe" }]
        }
      }
    }
    ```

    For signature verification, see [Webhooks](/docs/platform/features/integrations/webhooks).
  </Step>

  <Step title="Deploy and Test">
    Deploy the handler to a public URL, submit a test response, and confirm the record in Attio.
  </Step>
</Steps>

***

## Troubleshooting

**No record created**

* Check that you're mapping the correct email `questionId`.
* Check the token has `record_permission:read-write` and `object_configuration:read`.

**Duplicate records**

* Use a create-or-update action (or the Assert endpoint) matching People on email and Companies on domain.

**Webhook not firing**

* Check the URL is public, **Response Finished** is selected, and the survey is linked.

***

Need help? Ask in [GitHub Discussions](https://github.com/formbricks/formbricks/discussions).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.