# `bird contacts update`

## Usage

```bash
bird contacts update <contact-id> [flags]
```

## Description

Update a contact's name, email, external-id, or custom data.

Only the fields you pass change. --data is merged into the contact's existing
data; a data key set to null via --body-file removes just that key, e.g.
{"data": {"plan": null}}.

Build the request from flags, a JSON ContactUpdateRequest body via --body-file ("-" reads
stdin), or both — a flag overrides the matching body field. Run --example to
print a ready-to-edit body, or --dry-run to print the resolved request without
sending it.

## Examples

```bash
# print the body shape (no credentials needed)
bird contacts update --example

# the body it prints:
```

```json
{
  "first_name": "Alice",
  "last_name": "Anderson"
}
```

```bash
# rename a contact
bird email contacts update con_123 --first-name Jane

# merge custom data (a null value removes that key)
bird email contacts update con_123 --data '{"plan":"pro"}'
```

## Options

#### Contact

| Name            | Description                                                                     |
| --------------- | ------------------------------------------------------------------------------- |
| `--email`       | New email address; must be unique in the workspace                              |
| `--first-name`  | The contact's first name                                                        |
| `--last-name`   | The contact's last name                                                         |
| `--external-id` | Your own identifier for this contact                                            |
| `--data`        | Custom property values to merge, as a JSON object, e.g. --data '{"plan":"pro"}' |

#### Request

| Name                | Description                                                  |
| ------------------- | ------------------------------------------------------------ |
| `--body-file`       | Read the JSON request body from this file; "-" reads stdin   |
| `--example`         | Print a complete example request body, then exit             |
| `--dry-run`         | Print the resolved request without sending it, then exit     |
| `--idempotency-key` | Deduplication key; a retry with the same key won't act twice |

#### Options

| Name                | Description                                      |
| ------------------- | ------------------------------------------------ |
| `--response-schema` | Print the fields this command returns, then exit |

## Related

| Name                                                          | Description                                                      |
| ------------------------------------------------------------- | ---------------------------------------------------------------- |
| [`bird contacts batch`](/docs/cli/reference/contacts-batch)   | Create or update many contacts in one request, matched by email. |
| [`bird contacts create`](/docs/cli/reference/contacts-create) | Create a contact by email address.                               |
| [`bird contacts delete`](/docs/cli/reference/contacts-delete) | Delete a contact                                                 |
| [`bird contacts get`](/docs/cli/reference/contacts-get)       | Get a contact                                                    |
| [`bird contacts list`](/docs/cli/reference/contacts-list)     | List contacts                                                    |