Connect Reverse ETL Source to Iterable Audience

Configure a Reverse ETL source with your Iterable Audience destination.

This guide takes you through the steps to connect a Reverse ETL source to your Iterable Audience destination.

success
You can connect multiple Reverse ETL sources to the Iterable Audience destination.

Setup

  1. Set up and configure your Reverse ETL source.
  2. In the Overview tab of the source page, click Add destination > Create new destination. You can also select an already-configured destination here.
  3. From the list of destinations, select Iterable Audience and click Continue.
  4. Specify a unique name to identify this destination in RudderStack.
  5. In the Iterable account section, click Select to choose an existing account. To add a new account, click Add account > API Key, and specify the following settings:
Setting
Description
Account NameSpecify a unique account name.
API KeyEnter your Iterable server-side API key. RudderStack sends this value as the Api-Key header.
Data CenterSelect the Iterable data center for your project.
  • US: Uses api.iterable.com
  • EU: Uses api.eu.iterable.com
info
Syncs call the live Iterable API for your selected data center — there is no test or sandbox mode for this integration.
Project TypeSelect your Iterable project type — Email-based, User ID-based, or Hybrid — to determine which identifier fields you can map in the sync.
  1. Proceed to configure the mapping settings.

Mapping settings

This section lists the settings to correctly map data from your Reverse ETL source to the Iterable Audience destination.

Select list

In this section, you can create a new Iterable list or use an existing one. The selected list is where users are subscribed or unsubscribed during each sync.

  • Create new list: Specify the list name and optional description. RudderStack creates the list in Iterable while creating the connection.
  • Use existing list: Select an existing list from the dropdown. Click the refresh icon to fetch the latest lists from Iterable.

Update existing users only

This setting is visible only for Hybrid and User ID-based project types. It is set to No by default.

The following table describes the behavior of this setting:

Setting
Behavior
YesIterable updates only users that already exist in your project.

Rows whose userId or email is not found are reported as failed records and are not added to the list.
NoIterable creates new users when subscribing — it creates a placeholder email, if not provided .

Sync mode

RudderStack supports only Mirror mode for this integration.

Map identifiers

In this section, map your warehouse columns to Iterable identifier fields based on your project type. See Identifier mappings and validation for the fields available per project type.

Click Map another field to add additional identifier mappings as required.

Sync settings

RudderStack determines how and when to run a sync based on the sync schedule you set for your Reverse ETL connection.

Schedule typeDescription
BasicRun syncs at a given time interval and specified time (in UTC).
CRONRun syncs based on a specified CRON expression (in UTC).
ManualRun syncs manually.

Sync observability settings

SettingDescription
Retain sync logsThis setting is toggled on by default and instructs RudderStack to store the sync logs in your warehouse. You can also configure the below settings:

SettingDescription
Sync log retentionSpecify the retention period of the sync logs in your warehouse.

If you set it to 1, then RudderStack deletes any sync log older than a day (in UTC time).
Snapshot table retentionSpecify the number of snapshot tables to retain.
Retry failed recordsThis setting is toggled on by default and causes RudderStack to continually retry sending the failed records.
warning
Storing sync logs and snapshot tables may incur additional warehouse costs.

Identifier mappings and validation

You can map warehouse columns to the following Iterable identifier fields based on your project type:

Project typeIdentifier
Description
Email-basedemailMap a warehouse column to the user’s email address.
UserId-baseduserIdMap a warehouse column to the user’s Iterable user ID.
Hybridemail, userIdMap warehouse columns to both fields.

When a row includes both values, both are sent so Iterable can match on either identifier.

info
Iterable treats userId as the primary key.

In mirror mode, audience membership changes map to Iterable list operations:

Action
Iterable operation
Insert or updateSubscribe (add user to the list)
DeleteUnsubscribe (remove user from the list)

warning
Unsubscribe removes the user from this list only — it does not unsubscribe them from all Iterable messaging channels.

Note that:

Identifier validation

Before sending data to Iterable, each row is validated based on the mapped identifier fields:

Identifier
Validation
emailMust be a valid email address. Values are normalized to lowercase and trimmed before sending.
userIdMust be non-empty with no leading or trailing whitespace. Iterable treats whitespace-padded user IDs as distinct identifiers, which can cause mismatches on unsubscribe.

Rows with no valid identifier are skipped and reported as failed records in the sync report. The sync completes with failures rather than stopping entirely.

  • Invalid identifier values are not sent to Iterable.
  • If a row has no valid identifier, the entire row is marked as failed.

FAQ

Where can I find the Iterable API key?

You can get the Iterable API key by navigating to Integrations > API Keys in your Iterable account.

For more information, refer to Iterable’s API key documentation.

Why are some rows marked as failed when Update existing users only is enabled?

When Update existing users only is set to Yes, Iterable does not create users for identifiers that are not already in your project. Those rows fail with a not-found error and appear as failed records in the sync report.

Does removing a user from the audience unsubscribe them from Iterable entirely?

No. Delete actions call Iterable’s list unsubscribe API, which removes the user from the synced list only. It does not unsubscribe them from all messaging channels in Iterable.


Questions? We're here to help.

Join the RudderStack Slack community or email us for support