> For the complete documentation index, see [llms.txt](https://docs.chord.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chord.co/activate/event-streaming/destinations/email-and-marketing/iterable.md).

# Iterable

**Iterable** is a marketing automation platform that helps brands build personalized, real-time engagement across channels from one platform. This destination sends your Chord events to Iterable as custom events and user updates.

## Getting started

Before connecting Iterable, create an API key in your Iterable account:

1. Go to **Integrations** > **API Keys** in the top menu.
2. Click **+ New API Key**.
3. In the **New API key** window, name the key and select **Server-side** as the key type. Chord requires the server-side type. For details on Iterable's key types, see [Iterable's documentation](https://support.iterable.com/hc/en-us/articles/360043464871-API-Keys).

![The API Keys option in Iterable's Integrations menu](https://2938842758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5Oy2IAsu7IvAGAlWgC36%2Fuploads%2Fgit-blob-25c895f89d1c87a0de0877c53b679e947c9b7fe4%2Fiterable-api-keys-menu.png?alt=media)

![The New API key window with the Server-side type selected](https://2938842758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5Oy2IAsu7IvAGAlWgC36%2Fuploads%2Fgit-blob-73dd37ef746dbb1dc8dd7094ed0ccd0013869374%2Fiterable-server-side-key-type.png?alt=media)

## Settings

* **Destination Name** (required): a name to tell this destination apart.
* **Iterable API Key** (required): your Iterable server-side API key, found under **Integrations > API Keys** in Iterable.
* **Consent Requirements** (optional): the consent categories a visitor must accept before Chord sends data to this destination. See [Consent](/activate/event-streaming/consent.md).

## Connect

Add **Iterable** from the destination catalog, using the settings above. See [Connect a destination](/activate/event-streaming/connect-a-destination.md) for the full steps.

## Event mapping

Chord sends `track`, `identify` and `page` events. Iterable identifies users by `userId`, so Chord skips a `track` or `page` event that has no `userId`. This means anonymous events are skipped. Chord skips an `identify` event only when it has neither a `userId` nor an email. Chord rejects other event types, such as `group` and `screen`, and doesn't retry them.

| Chord event                                                         | Iterable event           | Notes                                                                        |
| ------------------------------------------------------------------- | ------------------------ | ---------------------------------------------------------------------------- |
| [`Order Completed`](/collect-data/tracking-plan/order-completed.md) | `commerce/trackPurchase` | Chord skips the event if it has no products or no total                      |
| All other `track` events                                            | `events/track`           | Event name passed as-is. Custom events need no setup                         |
| `identify`                                                          | `users/update`           | Creates or updates the Iterable user                                         |
| `page`                                                              | `events/track`           | Event name is `properties.title` followed by `page`, for example `Home page` |

## Event fields

For `track` events, Chord sends:

| Chord source (priority order)                      | Iterable field | Notes                                        |
| -------------------------------------------------- | -------------- | -------------------------------------------- |
| Chord event name                                   | `eventName`    |                                              |
| `properties`                                       | `dataFields`   | All event properties                         |
| `properties.campaignId` > `properties.campaign_id` | `campaignId`   | Only sent when it is a positive whole number |
| `timestamp`                                        | `createdAt`    |                                              |

## Purchases

| Chord source (priority order)                                                             | Iterable field                                                | Notes                   |
| ----------------------------------------------------------------------------------------- | ------------------------------------------------------------- | ----------------------- |
| `properties.order_id` > `properties.orderId` > `properties.id`                            | `id`                                                          | Only sent when present  |
| `properties.total` > `properties.value` > `properties.price` > the sum of the item prices | `total`                                                       |                         |
| `product_id` > `id` > `sku`                                                               | `items[].id`                                                  |                         |
| `name`                                                                                    | `items[].name`                                                | Defaults to the item ID |
| `price`                                                                                   | `items[].price`                                               | Defaults to `0`         |
| `quantity`                                                                                | `items[].quantity`                                            | Defaults to `1`         |
| `sku`, `category`, `description`, `url`, `image_url`                                      | `items[].sku`, `categories`, `description`, `url`, `imageUrl` | Only sent when present  |
| `properties`                                                                              | `dataFields`                                                  | All order properties    |

## User profile

For `identify` events, Chord sends the `email` and `userId` it finds, plus the user fields below as `dataFields`.

| Chord source (priority order)                                                                                             | Iterable field | Notes |
| ------------------------------------------------------------------------------------------------------------------------- | -------------- | ----- |
| `properties.email` > `context.traits.email` > `traits.email`                                                              | `email`        |       |
| `userId`                                                                                                                  | `userId`       |       |
| The user's anonymous ID, email, phone, name, gender, birthday, address, locale, IP address, user agent and device details | `dataFields`   |       |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.chord.co/activate/event-streaming/destinations/email-and-marketing/iterable.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
