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

# gtm attio

> Command reference for gtm attio — Attio CRM commands. Generated from the CLI help text.

Attio CRM commands.

Every command follows the [CLI contract](/concepts/cli-contract): JSON on stdout, errors on stderr, and command-specific mutation safety controls. Keys resolve as described in [Secrets and API keys](/secrets).

## Examples

Search people by any combination of criteria (name, email, domain, phone, company):

```bash theme={"system"}
uv run gtm attio people search --email-domain "acme.dev" --limit 10
```

```bash theme={"system"}
# Browse recent records without a filter.
uv run gtm attio people search --sample
```

Create a person. This writes immediately after the default Modal deployment-parity
preflight; `--modal-sync` controls that preflight, not whether the write happens:

```bash theme={"system"}
uv run gtm attio people add "jane@acme.dev" \
  --first-name "Jane" \
  --last-name "Doe" \
  --company "acme.dev"
```

Update an existing person by email:

```bash theme={"system"}
uv run gtm attio people update --email "jane@acme.dev" \
  --company "acme.dev" \
  --first-name "Jane"
```

Create or update deterministically by email with `upsert`:

```bash theme={"system"}
uv run gtm attio people upsert "jane@acme.dev" \
  --first-name "Jane" \
  --last-name "Doe"
```

Company creation also writes when invoked (it does not use `--apply`):

```bash theme={"system"}
uv run gtm attio companies add --domain "acme.dev" --name "Acme Corp"
```

## `gtm attio people`

Manage people records in Attio.

### `gtm attio people add`

```bash theme={"system"}
uv run gtm attio people add [OPTIONS] [EMAIL]
```

| Argument | Type | Required |
| -------- | ---- | -------- |
| `EMAIL`  | text | no       |

| Option                    | Type    | Default | Description                                                                                                                |
| ------------------------- | ------- | ------- | -------------------------------------------------------------------------------------------------------------------------- |
| `--add-email`             | text    | `[]`    | Additional email for this person (repeat for multiple).                                                                    |
| `--first-name`            | text    | —       | First name                                                                                                                 |
| `--last-name`             | text    | —       | Last name                                                                                                                  |
| `--phone`                 | text    | —       | Phone number                                                                                                               |
| `--linkedin`              | text    | —       | LinkedIn profile URL                                                                                                       |
| `--location`              | text    | —       | Primary location                                                                                                           |
| `--country-code`          | text    | —       | ISO-3166-1 alpha-2 country code paired with --location (e.g. US, IN). Required for the location to be written; see ai-sfp. |
| `--company`               | text    | —       | Company domain                                                                                                             |
| `--notes`                 | text    | —       | Intake notes                                                                                                               |
| `--strict`                | boolean | `false` | Fail fast on optional-field mismatches                                                                                     |
| `--location-mode`         | text    | `city`  | Location normalization mode: city\|raw                                                                                     |
| `--no-connectivity-probe` | boolean | `false` | Skip Modal connectivity preflight                                                                                          |
| `--modal-sync`            | text    | `check` | Modal sync strategy for mutation commands: check\|deploy\|skip                                                             |
| `--json`                  | text    | —       | JSON payload (overrides flags)                                                                                             |
| `--attio-api-key`         | text    | —       | Override Attio API key                                                                                                     |

### `gtm attio people search`

```bash theme={"system"}
uv run gtm attio people search [OPTIONS]
```

| Option                    | Type    | Default | Description                                                            |
| ------------------------- | ------- | ------- | ---------------------------------------------------------------------- |
| `--name`                  | text    | —       | Search by name (fuzzy, case-insensitive)                               |
| `--email`                 | text    | —       | Search by exact email address                                          |
| `--email-domain`          | text    | —       | Search by email domain (e.g. continue.dev)                             |
| `--phone`                 | text    | —       | Search by phone number (partial match)                                 |
| `--company`               | text    | —       | Search by company name or domain                                       |
| `--sample`                | boolean | `false` | Fetch recent records without filtering (overrides all search criteria) |
| `--limit`                 | integer | `25`    | Max results to return                                                  |
| `--no-connectivity-probe` | boolean | `false` | Skip Modal connectivity preflight                                      |
| `--json`                  | text    | —       | JSON payload (overrides flags)                                         |
| `--attio-api-key`         | text    | —       | Override Attio API key                                                 |

### `gtm attio people update`

```bash theme={"system"}
uv run gtm attio people update [OPTIONS]
```

| Option                    | Type    | Default | Description                                                                                                                |
| ------------------------- | ------- | ------- | -------------------------------------------------------------------------------------------------------------------------- |
| `--email`                 | text    | —       | Email to look up person                                                                                                    |
| `--id`                    | text    | —       | Attio record ID                                                                                                            |
| `--add-email`             | text    | `[]`    | Email to merge onto the person (repeat for multiple). Existing addresses are kept; duplicates are dropped.                 |
| `--replace-emails`        | boolean | `false` | Replace stored emails with lookup identity (--email) plus --add-email only (no merge with existing).                       |
| `--first-name`            | text    | —       | First name                                                                                                                 |
| `--last-name`             | text    | —       | Last name                                                                                                                  |
| `--phone`                 | text    | —       | Phone number                                                                                                               |
| `--linkedin`              | text    | —       | LinkedIn profile URL                                                                                                       |
| `--location`              | text    | —       | Primary location                                                                                                           |
| `--country-code`          | text    | —       | ISO-3166-1 alpha-2 country code paired with --location (e.g. US, IN). Required for the location to be written; see ai-sfp. |
| `--company`               | text    | —       | Company domain                                                                                                             |
| `--notes`                 | text    | —       | Intake notes                                                                                                               |
| `--strict`                | boolean | `false` | Fail fast on optional-field mismatches                                                                                     |
| `--location-mode`         | text    | `city`  | Location normalization mode: city\|raw                                                                                     |
| `--no-connectivity-probe` | boolean | `false` | Skip Modal connectivity preflight                                                                                          |
| `--modal-sync`            | text    | `check` | Modal sync strategy for mutation commands: check\|deploy\|skip                                                             |
| `--json`                  | text    | —       | JSON payload (overrides flags)                                                                                             |
| `--attio-api-key`         | text    | —       | Override Attio API key                                                                                                     |

### `gtm attio people upsert`

```bash theme={"system"}
uv run gtm attio people upsert [OPTIONS] [EMAIL]
```

| Argument | Type | Required |
| -------- | ---- | -------- |
| `EMAIL`  | text | no       |

| Option                    | Type    | Default | Description                                                                                                                |
| ------------------------- | ------- | ------- | -------------------------------------------------------------------------------------------------------------------------- |
| `--add-email`             | text    | `[]`    | Extra email to store (repeat for multiple). On update, merged with existing unless --replace-emails.                       |
| `--replace-emails`        | boolean | `false` | On update, set emails to identity email plus --add-email only.                                                             |
| `--first-name`            | text    | —       | First name                                                                                                                 |
| `--last-name`             | text    | —       | Last name                                                                                                                  |
| `--phone`                 | text    | —       | Phone number                                                                                                               |
| `--linkedin`              | text    | —       | LinkedIn profile URL                                                                                                       |
| `--location`              | text    | —       | Primary location                                                                                                           |
| `--country-code`          | text    | —       | ISO-3166-1 alpha-2 country code paired with --location (e.g. US, IN). Required for the location to be written; see ai-sfp. |
| `--company`               | text    | —       | Company domain                                                                                                             |
| `--notes`                 | text    | —       | Intake notes                                                                                                               |
| `--strict`                | boolean | `false` | Fail fast on ambiguity or optional-field mismatches                                                                        |
| `--location-mode`         | text    | `city`  | Location normalization mode: city\|raw                                                                                     |
| `--no-connectivity-probe` | boolean | `false` | Skip Modal connectivity preflight                                                                                          |
| `--modal-sync`            | text    | `check` | Modal sync strategy for mutation commands: check\|deploy\|skip                                                             |
| `--json`                  | text    | —       | JSON payload (overrides flags)                                                                                             |
| `--attio-api-key`         | text    | —       | Override Attio API key                                                                                                     |

## `gtm attio companies`

Manage company records in Attio.

### `gtm attio companies add`

Add a company to Attio.

```bash theme={"system"}
uv run gtm attio companies add [OPTIONS] [NAME]
```

| Argument | Type | Required |
| -------- | ---- | -------- |
| `NAME`   | text | no       |

| Option            | Type | Default | Description                                    |
| ----------------- | ---- | ------- | ---------------------------------------------- |
| `--domain`        | text | —       | Company domain                                 |
| `--description`   | text | —       | Company description                            |
| `--json`          | text | —       | JSON payload (overrides flags)                 |
| `--attio-api-key` | text | —       | Override the Attio API key for this invocation |

### `gtm attio companies search`

Search for companies in Attio.

```bash theme={"system"}
uv run gtm attio companies search [OPTIONS]
```

| Option            | Type    | Default | Description                                    |
| ----------------- | ------- | ------- | ---------------------------------------------- |
| `--name`          | text    | —       | Search by company name                         |
| `--domain`        | text    | —       | Search by exact domain                         |
| `--limit`         | integer | `25`    | Max results to return                          |
| `--json`          | text    | —       | JSON payload (overrides flags)                 |
| `--attio-api-key` | text    | —       | Override the Attio API key for this invocation |

### `gtm attio companies update`

Update an existing company in Attio.

```bash theme={"system"}
uv run gtm attio companies update [OPTIONS]
```

| Option            | Type | Default | Description                                    |
| ----------------- | ---- | ------- | ---------------------------------------------- |
| `--domain`        | text | —       | Domain to look up company                      |
| `--id`            | text | —       | Attio record ID                                |
| `--name`          | text | —       | New company name                               |
| `--description`   | text | —       | New description                                |
| `--json`          | text | —       | JSON payload (overrides flags)                 |
| `--attio-api-key` | text | —       | Override the Attio API key for this invocation |

### `gtm attio companies create-attribute-type`

Create an attribute on companies.

```bash theme={"system"}
uv run gtm attio companies create-attribute-type [OPTIONS]
```

| Option                                  | Type    | Default  | Description                                                      |
| --------------------------------------- | ------- | -------- | ---------------------------------------------------------------- |
| `--title`                               | text    | —        | Display title for the new attribute                              |
| `--api-slug`                            | text    | —        | API slug for the new attribute (derived from title when omitted) |
| `--type`                                | text    | `select` | Attio attribute type (e.g. select, text, number)                 |
| `--description`                         | text    | `""`     | Attribute description shown in Attio                             |
| `--is-multiselect, --no-is-multiselect` | boolean | `true`   | Allow multiple values per record                                 |
| `--is-required, --no-is-required`       | boolean | `false`  | Require a value on every record                                  |
| `--is-unique, --no-is-unique`           | boolean | `false`  | Enforce unique values across records                             |
| `--apply`                               | boolean | `false`  | Perform the write to Attio (default is preview)                  |
| `--json`                                | text    | —        | JSON payload (overrides flags)                                   |
| `--attio-api-key`                       | text    | —        | Override the Attio API key for this invocation                   |

<Warning>
  Preview by default: without `--apply` this command prints the planned mutation and writes nothing. See the [CLI contract](/concepts/cli-contract).
</Warning>

## `gtm attio notes`

Manage notes in Attio.

### `gtm attio notes add`

Add a note to a person or company in Attio.

```bash theme={"system"}
uv run gtm attio notes add [OPTIONS] [TITLE] [CONTENT]
```

| Argument  | Type | Required |
| --------- | ---- | -------- |
| `TITLE`   | text | no       |
| `CONTENT` | text | no       |

| Option            | Type | Default     | Description                                    |
| ----------------- | ---- | ----------- | ---------------------------------------------- |
| `--object`        | text | `""`        | Parent object: 'people' or 'companies'         |
| `--record-id`     | text | —           | Parent record ID                               |
| `--email`         | text | —           | Look up person by email                        |
| `--domain`        | text | —           | Look up company by domain                      |
| `--format`        | text | `plaintext` | Content format: plaintext or markdown          |
| `--json`          | text | —           | JSON payload (overrides flags)                 |
| `--attio-api-key` | text | —           | Override the Attio API key for this invocation |

### `gtm attio notes update`

Update an existing note in Attio (replaces via delete + create).

```bash theme={"system"}
uv run gtm attio notes update [OPTIONS] [NOTE_ID]
```

| Argument  | Type | Required |
| --------- | ---- | -------- |
| `NOTE_ID` | text | no       |

| Option            | Type | Default     | Description                                    |
| ----------------- | ---- | ----------- | ---------------------------------------------- |
| `--title`         | text | —           | New title                                      |
| `--content`       | text | —           | New content                                    |
| `--format`        | text | `plaintext` | Content format: plaintext or markdown          |
| `--json`          | text | —           | JSON payload (overrides flags)                 |
| `--attio-api-key` | text | —           | Override the Attio API key for this invocation |

## `gtm attio enrichment`

Backfill missing fields on Attio records.

### `gtm attio enrichment backfill-domains`

Backfill missing domains on Attio Companies.

```bash theme={"system"}
uv run gtm attio enrichment backfill-domains [OPTIONS]
```

| Option             | Type    | Default | Description                                                                       |
| ------------------ | ------- | ------- | --------------------------------------------------------------------------------- |
| `--ext-tam-filter` | text    | —       | JSON filter for ext\_tam (e.g., '\{"source":"snowflake\_scored\_accounts\_csv"}') |
| `--company-ids`    | text    | —       | Comma-separated Company record IDs                                                |
| `--limit`          | integer | —       | Max Companies to process                                                          |
| `--sleep-seconds`  | float   | `0.0`   | Sleep between Companies                                                           |
| `--apply`          | boolean | `false` | Actually PATCH (default: preview only)                                            |
| `--json`           | text    | —       | Full JSON payload (overrides flags)                                               |
| `--attio-api-key`  | text    | —       | Override the Attio API key for this invocation                                    |
| `--exa-api-key`    | text    | —       | Override the Exa API key for this invocation                                      |

<Warning>
  Preview by default: without `--apply` this command prints the planned mutation and writes nothing. See the [CLI contract](/concepts/cli-contract).
</Warning>


## Related topics

- [gtm-sdk: Go-To-Market SDK and CLI for Modal](/index.md)
- [CLI overview](/cli/index.md)
- [gtm accounts](/cli/accounts.md)
- [gtm enrichment](/cli/enrichment.md)
- [Launch week — gtm-sdk goes public (July 13, 2026)](/changelog/2026-07-13.md)
