> This is a page from the ElevenLabs documentation. For an index of the documentation, fetch https://elevenlabs.io/docs/llms.txt.

# Attio

Your receptionist can recognize callers who are already in Attio, add new callers as people with their name and phone number, and leave a note with what they wanted, so your team can follow up. There are two ways to connect:

* **[Webhook tools](#option-1-webhook-tools-recommended)** call Attio's API directly, with no Zapier account and no Zapier task usage.
* **[Zapier](#option-2-zapier)** actions sign in to Attio for you, but each action uses tasks from your Zapier plan.

Use webhook tools unless you can't get an Attio admin to create an access token.

## Option 1: Webhook tools (recommended)

### Create an access token

You need to be an Attio admin. Select the dropdown beside your workspace name, open **Workspace settings**, go to the **Developers** tab, and select **New access token**. Name it, for example `Reception.ai`, and give it only the scopes these tools need: object configuration read (`object_configuration:read`), records read-write (`record_permission:read-write`), and notes read-write (`note:read-write`). The labels in Attio may differ slightly from these names.

The token doesn't expire, and it can see every person in your workspace. Delete it in Attio if it leaks.

### Create the webhook tools

For each [tool below](#find-the-caller), go to **Integrations**, select **Add integration**, and choose **Webhook Tool**. Every tool sends the same header: `Authorization` (Secret), set to `Bearer ` followed by your token.

### Add a rule

Add a [rule](/docs/reception-ai/receptionist/rules-and-procedures) telling your receptionist to use Attio only to recognize callers, and never to read records or notes back to them.

### Find the caller

| Field                | Value                                                                                                                                     |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **Name**             | `find_attio_person`                                                                                                                       |
| **Description**      | "Find the caller among our people in Attio by phone number. Use it at the start of a call. Pass the person's record_id to the note tool." |
| **Method**           | POST                                                                                                                                      |
| **URL**              | `https://api.attio.com/v2/objects/people/records/query`                                                                                   |
| **Request Headers**  | `Authorization` (Secret): `Bearer ` followed by your token                                                                                |
| **Body Parameters**  | `filter` (object, required), with the field below  `limit` (integer, fixed value): `5`                                                    |
| **Assign to agents** | **Receptionist**                                                                                                                          |

Select **Add field** on `filter` and add:

* `phone_numbers` (string, required, from the conversation): "The caller's phone number in international format, for example +14155550123."

Attio only returns people whose saved number matches exactly, so store numbers with their country code.

### Add the caller

| Field                | Value                                                                                                                           |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| **Name**             | `create_attio_person`                                                                                                           |
| **Description**      | "Add the caller as a person, only when `find_attio_person` didn't find them. Pass the new person's record_id to the note tool." |
| **Method**           | POST                                                                                                                            |
| **URL**              | `https://api.attio.com/v2/objects/people/records`                                                                               |
| **Request Headers**  | `Authorization` (Secret): `Bearer ` followed by your token                                                                      |
| **Body Parameters**  | `data` (object, required), with the fields below                                                                                |
| **Assign to agents** | **Receptionist**                                                                                                                |

Select **Add field** on `data` and add `values` (object, required). On `values`, add:

* `name` (object, required), with three fields:
  * `first_name` (string, required, from the conversation): "The caller's first name."
  * `last_name` (string, required, from the conversation): "The caller's last name, or an empty string if they didn't give it."
  * `full_name` (string, required, from the conversation): "The caller's first and last name."
* `phone_numbers` (array, required, from the conversation): "Exactly one item, for the caller's phone number." Under **Each item**, choose `string`, described as "The caller's phone number in international format, for example +14155550123."
* `email_addresses` (array, from the conversation): "Exactly one item, for the caller's email address. Leave it out if they didn't give one." Under **Each item**, choose `string`, described as "The caller's email address."

### Log a note

| Field                | Value                                                                       |
| -------------------- | --------------------------------------------------------------------------- |
| **Name**             | `add_attio_note`                                                            |
| **Description**      | "Note what the caller wanted on their person record, before the call ends." |
| **Method**           | POST                                                                        |
| **URL**              | `https://api.attio.com/v2/notes`                                            |
| **Request Headers**  | `Authorization` (Secret): `Bearer ` followed by your token                  |
| **Body Parameters**  | `data` (object, required), with the fields below                            |
| **Assign to agents** | **Receptionist**                                                            |

Select **Add field** on `data` for each of these:

* `parent_object` (string, fixed value): `people`
* `parent_record_id` (string, required, from the conversation): "The person's record_id from `find_attio_person` or `create_attio_person`."
* `title` (string, required, from the conversation): "A short title, for example: Call from Jane Doe about a quote."
* `format` (string, fixed value): `plaintext`
* `content` (string, required, from the conversation): "What the caller wanted, in a few sentences."

The parent object and format are fixed values, so notes always go on a person, even if the AI sends other values.

> **Warning**
>
> `find_attio_person` returns whatever is saved on the person. Keep the rule in place so your
> receptionist uses Attio only to recognize the caller, and callers never hear another person's
> details.

Select **Enable** on each tool, then [test your receptionist](/docs/reception-ai/receptionist/testing) with a call from a number saved on an Attio person, then as a new caller who asks for a callback. The new person and a note appear in Attio.

## Option 2: Zapier

### Connect Zapier

If you haven't yet, connect [Zapier](/docs/reception-ai/integrations/zapier) in Reception.ai.

### Add the Attio actions

In your Zapier MCP server at [mcp.zapier.com](https://mcp.zapier.com), add the [actions below](#zapier-actions) from the **Attio** app and connect your Attio workspace. For each field, either set a fixed value or let the AI fill it in, as listed.

### Assign the tools

In Reception.ai, open the Zapier integration's **Tools** tab, select **Refresh tools**, and assign each action as listed.

### Add a rule

Add a [rule](/docs/reception-ai/receptionist/rules-and-procedures) telling your receptionist to use Attio only to recognize callers, and never to read records or notes back to them.

> **Warning**
>
> Zapier acts as the Attio user who connected the workspace and can see everything that user can.
> Connect with a member whose access is limited to the records your receptionist needs, and keep the
> rule in place so callers never hear another person's details.

### Test it

[Test your receptionist](/docs/reception-ai/receptionist/testing) with a call from a number saved on an Attio person, then as a new caller who asks for a callback. The new person and a note appear in Attio.

### Zapier actions

#### Find the caller

| Field                  | Value                                                         |
| ---------------------- | ------------------------------------------------------------- |
| **Zapier action**      | **Find Records**                                              |
| **Set in Zapier**      | The object: People. The attribute to search by: phone number. |
| **Let the AI fill in** | The value to search for: the caller's phone number.           |
| **Assign to**          | **Client**                                                    |

#### Add the caller

| Field                  | Value                                                                               |
| ---------------------- | ----------------------------------------------------------------------------------- |
| **Zapier action**      | **Create Record**                                                                   |
| **Set in Zapier**      | The object: People. Any attributes that should always be the same, if you use them. |
| **Let the AI fill in** | First name, last name, phone number, and email address.                             |
| **Assign to**          | **Client**                                                                          |

#### Log a note

| Field                  | Value                                                                                                    |
| ---------------------- | -------------------------------------------------------------------------------------------------------- |
| **Zapier action**      | **Create Note**                                                                                          |
| **Set in Zapier**      | The parent object: People.                                                                               |
| **Let the AI fill in** | The parent record ID (from the previous actions), a title, and the note text with what the caller needs. |
| **Assign to**          | **Client**                                                                                               |

> **Tip**
>
> Whichever option you use, add a [procedure](/docs/reception-ai/receptionist/rules-and-procedures)
> so your receptionist searches for the caller first, only creates a person when no match is found,
> and then logs a note.

## Limitations

* Attio checks that phone numbers are valid. Tell your receptionist, in the tool's or action's description, to send numbers in international format, such as `+14155550123`.
* Creating a person fails when another person already has the same unique value, such as an email address. Your receptionist should search first.
* Tasks created through Zapier can't be linked to an Attio record, so use the note for call details.
* With Zapier, each action your receptionist runs uses tasks from your Zapier plan. Zapier currently counts two tasks per successful call; failed calls aren't counted. When the plan runs out, the actions stop until it resets.

## Troubleshooting

| Problem                                        | What to check                                                                                                                               |
| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| 401 or 403 from Attio                          | Start the header value with `Bearer ` and a space, and check that the token has the scopes above and hasn't been deleted.                   |
| An Attio action doesn't appear in Reception.ai | Select **Refresh tools** on the Zapier integration after adding actions in Zapier.                                                          |
| An action shows **Changed** and isn't used     | You edited it in Zapier. Select **Update** in the **Tools** tab.                                                                            |
| Known callers aren't found                     | Check that numbers are stored with their country code. With Zapier, check that **Find Records** searches the People object by phone number. |
| Creating a person fails                        | The phone number may not be in international format, or the caller's email address is already saved.                                        |
| Notes aren't linked to the caller              | Your receptionist needs the record ID from the find or create tool, or from **Find Records** or **Create Record** in Zapier.                |