---
title: Iterable
slug: iterable
docTags: 
createdAt: 2026-05-14T14:46:32.834Z
---

Connect your Iterable marketing data to Chord. Iterable is the cross-channel marketing platform that powers email, SMS, push, web push, and in-app messaging for many Chord brands. Chord ingests campaigns, templates, message metadata, user history, and full event streams from Iterable so you can model engagement, deliverability, and channel attribution alongside the rest of your stack.

## What Chord ingests from Iterable

Chord pulls 10 dataset groups from your Iterable account.

- **Campaign history:** every campaign sent: name, type, status, schedule, audience, channel.
- **Templates**: base, blast, triggered, and workflow templates referenced by campaigns.
- **Channels, lists, message types**: channel definitions (email, SMS, push, etc.), all lists, and message type configurations.
- **User history**: user profile snapshots and attribute changes over time.
- **Email events**: sends, opens, clicks, bounces, complaints, subscribes, unsubscribes.
- **SMS events**: sends, clicks, bounces.
- **Push events**: sends, opens, bounces.
- **Web push events**: sends, clicks.
- **In-app message events**: sends, opens, clicks.
- **Purchase events**: commerce events sent to Iterable from your store.
- **Custom events:** any custom event types you've defined in Iterable.

## Generate an Iterable API key

You'll need a **Server-side** Iterable API key. The Chord connector reads from Iterable's REST and export APIs from a backend service, so client-side, mobile, or JWT-enabled key types are not the right fit.

:::hint{type="warning"}
**Heads up:** only Iterable users with the **Project Admin** permission can create API keys. If your role doesn't include it, ask an admin on the project to either generate the key for you or grant your user the permission first.
:::

1. Log in to your Iterable account.
2. In the top navigation, click your account name, then click **Settings** (some accounts go directly to **Integrations**).
3. Click **Integrations → API Keys**.
4. Click **New API Key**. Name the key something recognizable, e.g. `chord data sync`.
5. Select **Server-side** as the key type.
6. Leave **JWT Authentication** off (it's only required for client-side key types).
7. Click **Create**. Copy the key value immediately. Iterable shows the key only once and there is no way to reveal it later.

## Connect the key in Chord

1. Open Chord Hub and go to **Data Sources → Add Source**.
2. Pick **Iterable** from the data source list.
3. Paste the API key you just copied into the **API Key** field.
4. Click **Save,** Chord makes a test call against the Iterable channels endpoint to confirm the key works.
5. The first sync kicks off automatically; subsequent syncs run on your tenant's standard ingestion schedule. The first run can take significantly longer than steady-state syncs because Iterable's export API has to materialize historical events.

## Troubleshooting

**What does the validate step actually check?**
Chord makes a small read against `https://api.iterable.com/api/channels` with the `Api-Key` header set to your key, and confirms a 200 response. It does not pull or store any records — that happens on the first scheduled sync after you save the credential.

**The validate step failed. What now?**
A 401 means the key value is wrong, was rotated, or was copied with extra whitespace. A 200 from a different endpoint but a failure here usually means the key type isn't Server-side. Go back to **Integrations → API Keys** in Iterable, confirm the key is listed as a Server-side key and is still active, then regenerate it if needed and paste the new value into the same Chord credential entry.

**Do Iterable API keys expire?**
No. Keys stay valid until a Project Admin manually revokes them in **Integrations → API Keys**. If a previously working key suddenly fails, check that page first to confirm it's still listed and active.

**How do I rotate the key?**
Generate a new Server-side API key in Iterable, paste it into the same Chord credential entry, and save. Chord uses the new key on the next scheduled sync. Once you've confirmed the new key validates and the next sync runs cleanly, delete the old key from Iterable.

**Why are my recent events not showing up yet?**
Iterable's bulk export API materializes events on a daily partition. A purchase that happened five minutes ago will not appear in Chord until the next scheduled sync (and its export job for today's partition) completes.

**Why don't I see in-app or web push event tables?**
Those channels only generate events if they're enabled and configured in your Iterable project. If your team doesn't run in-app or web push campaigns, those tables will be empty or missing, this is expected, not a connector bug.

***

**Need help?** If you hit a credential or connectivity issue you can't resolve, reach out to [help@chord.co](mailto\:help@chord.co) with the exact error message. We'll trace the request and tell you what's failing.
