Iterable is a popular growth marketing platform that lets you maximize customer interaction and improve your customers' overall LTV (Life Time Value).

This guide will help you set up Iterable as a source in RudderStack.

Getting started

Follow these steps to set up Iterable as a source in the RudderStack dashboard:

  1. Go to your RudderStack dashboard and click on Add Source. From the list of Event Stream sources, select Iterable.
  2. Assign a name to your source and click Continue.
  3. The Iterable source is now configured. Go to the Settings tab and note the Webhook URL, as shown:
Iterable webhook URL
  1. Go to your Iterable account and navigate to Integrations > System Webhooks.
  2. Click on Create Webhook and enter the webhook URL obtained in Step 3 in the Endpoint URL field, as shown:
Iterable source webhook URL
  1. Finally, click Create.

Event transformation

RudderStack ingests the events from Iterable after converting them into the RudderStack event format. It also populates the following properties from the Iterable event payload into the RudderStack event:

Iterable propertyRudderStack property
emailcontext.traits.email
userIduserId
dataFieldsproperties
eventNameevent

The userId is a unique identifier in the output payload. If not provided, Rudderstack creates a unique userId using email.

Iterable supports the following events list:

  • Blast Send
  • Email Bounce
  • Email Click
  • Email Complaint
  • Email Open
  • Email Send Skip
  • Email Subscribe
  • Email Unsubscribe
  • Hosted Unsubscribe Click
  • In-App Click
  • In-App Open
  • In-App Send
  • In-App Send Skip
  • Push Bounce
  • Push Open
  • Push Send
  • Push Send Skip
  • Push Uninstall
  • SMS Bounce
  • SMS Click
  • SMS Send
  • SMS Received
  • SMS Send Skip
  • Triggered Send
  • Web Push Send
  • Web Push Send Skip
Refer to the complete list of the supported webhook events for more information.

How RudderStack creates the event payload

This section details how RudderStack receives the data from the Iterable source platform and creates the resulting payload.

A sample payload sent by Iterable is shown below:

{
"email": "docs@iterable.com",
"userId": "1",
"eventName": "hostedUnsubscribeClick",
"dataFields": {
"country": "United States",
"city": "San Jose",
"campaignId": 1074721,
"ip": "192.168.0.1",
"userAgentDevice": "Mac",
"messageId": "ceb3d4d929fc406ca93b28a0ef1efff1",
"emailId": "c1074721:t1506266:docs@iterable.com",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36",
"workflowName": "My workflow",
"locale": null,
"templateId": 1506266,
"emailSubject": "My email subject",
"url": "https://iterable.com",
"labels": [],
"createdAt": "2020-03-21 00:24:08 +00:00",
"templateName": "My email template",
"messageTypeId": 13406,
"experimentId": null,
"region": "CA",
"campaignName": "My email campaign",
"workflowId": 60102,
"email": "docs@iterable.com",
"channelId": 12466
}
}

RudderStack transforms the above payload into the following payload:

{
"userId": "1",
"context": {
"integration": {
"name": "Iterable",
"version": "1.0.0"
},
"library": {
"name": "unknown",
"version": "unknown"
},
"traits": {
"email": "docs@iterable.com"
}
},
"event": "hostedUnsubscribeClick",
"integrations": {
"Iterable": false
},
"properties": {
"country": "United States",
"city": "San Jose",
"campaignId": 1074721,
"ip": "192.168.0.1",
"userAgentDevice": "Mac",
"messageId": "ceb3d4d929fc406ca93b28a0ef1efff1",
"emailId": "c1074721:t1506266:docs@iterable.com",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36",
"workflowName": "My workflow",
"locale": null,
"templateId": 1506266,
"emailSubject": "My email subject",
"url": "https://iterable.com",
"labels": [],
"createdAt": "2020-03-21 00:24:08 +00:00",
"templateName": "My email template",
"messageTypeId": 13406,
"experimentId": null,
"region": "CA",
"campaignName": "My email campaign",
"workflowId": 60102,
"channelId": 12466
},
"receivedAt": "2020-03-21T00:24:08.000Z",
"timestamp": "2020-03-21T00:24:08.000Z",
"type": "track"
}

Contact us

For more information on the topics covered on this page, email us or start a conversation in our Slack community.

Contents