Iterable
Updated over a week ago

Iterable is a growth marketing automation platform that is used by organizations to create and manage personalized marketing campaigns across various channels. It is primarily used for email and digital marketing purposes.



Connect Anedot to Iterable

To connect Anedot to Iterable, follow the steps below:

  1. Access the Settings>Integrations>Directory tab.

  2. Click the blue + New Connection button.

  3. Select Iterable from the Directory

  4. Next, select the Action Pages you would like synced with Iterable.

    1. To exclude Action Pages, enter the individual Action Page IDs within the Action Page IDs for Exclusion field, separating each ID with a comma (no spaces).

  5. Apply your Iterable API Key.

    1. To locate your Iterable API Key, log in to Iterable. Hover over Integrations, then click API Keys. Copy API Key and paste into Iterable API Key field.

  6. List IDs (Optional): Enter List ID(s) to automatically subscribe donors and supporters to specific Iterable Lists.

    1. To apply a List ID, click the Add button to the right of List IDs (above the Iterable API Key field). Click Add multiple times for additional List IDs.

  7. Campaign ID (Optional): Connect a Hidden Custom Field to the Campaign ID by clicking the dropdown menu.

  8. Template ID (Optional): Connect a Hidden Custom Field to the Template ID by clicking the dropdown menu.

  9. Custom Event (Optional): Apply a Custom Event for additional tracking.

    1. Locate your Custom Event within the Settings>Custom Event Usage tab or under Project Settings in Iterable.

    2. When provided, Lead Submissons will relay via the Custom Event and not the Purchase Event.

  10. Include Formatted Amounts (Optional): Check the box for Include Formatted Amounts to relay additional fields such as amount, amount_cents, amount_decimal, and amount_dollars on Purchase Event payloads.

  11. Field Names (Optional): Apply custom Field Names (Field Labels in relays). If left blank, data will be relayed as the default format.

  12. Click Save to complete your connection!


Data Relays

  • Anedot relays data from Donation and Lead Pages to Iterable.

  • Purchase events are relayed for donations.

    • These events can be viewed in Iterable's Insights>Logs>Purchases tab.

  • When Abandoned Actions has been enabled within the Action Page Builder, Iterable will send relays for potential submitters.

    • The Abandoned Cart Support can be found under an individual Contact Lookup.

  • If a List ID has been included in the connection, a Subscribe event is created, and the donor will be subscribed to the list.

    • Subscribe events can be viewed within the Iterable Events, Subscriptions, and List tabs.

  • If a Custom Event is included in the connection, this event will be relayed for Lead Page submissions.

    • When specified, Lead Page submissions are only relayed through Custom Events.

    • When specified, Donation Page submissions continue to be relayed only through Purchase events.

    • Custom Events in Iterable can be viewed within the Insights>Logs>Events tab.

  • Two Custom Hidden Fields are supported: one for Campaign ID and one for Template ID. Other custom fields will not be relayed.


Field Mapping

Custom Field Names

Field Names set up within Step 8 of the Anedot to Iterable connection replace the default field labels within all types of relays. As a reminder, the Field Name setup is optional.

  • Address Line 1 (default: street)

  • Address Line 2 (default: street_2)

  • City (default: city)

  • State (default: state)

  • Zip Code (default: zip)

  • Country (default: country)

  • Employer (default: employer)

  • First Name (default: first_name)

  • Last Name (default: last_name)

  • Occupation (default: occupation)

  • Referrer (default: referrer)

  • Source Code (default: source_code)

  • UTM Campaign (default: utm_campaign)

  • UTM Medium (default: utm_medium)

  • UTM Source (default: utm_source)

  • UTM Term (default: utm_term)

  • Highest Contribution Amount (default: highest_contribution_amount)

  • Most Recent Contribution Amount (default: most_recent_contribution_amount)

  • Most Recent Contribution Date (default: most_recent_contribution_date)

  • Recurring (default: recurring)

  • Total Amount Processed (default: total_amount_processed)

  • Total Contributed this Year (default: total_contributed_this_year)

  • First Contribution Amount (default: first_contribution_amount)

Abandoned Cart

Abandoned Cart does not create a Submission or Donation record in Anedot. This data will not be found in the Anedot Staff areas.

Anedot Field

Iterable Field

-
email
{}
"true"

user {
email
dataFields
mergeNestedObjects }

-
id
"Donation"
amount (x100)
"1"
{}

items {
id
name
price
quantity
dataFields }

Custom Event/LeadSubmission

The Anedot Fields match the Submission's Raw Data and the Iterable Fields match the Request Body relay.

Anedot Field

Iterable Field

email

email

created_at

createdAt

User-defined in Step 6

eventName

*Custom Hidden Field from Step 8

campaignId

-
referrerToForm
utmCodes {term}
utmCodes {medium}
utmCodes {source}
sourceCode
utmCodes {campaign}
actionPageName

dataFields {
**referrer
**utm_term
**utm_medium
**utm_source
**source_code
**utm_campaign
**action_page_name }

*Custom Hidden Field from Step 8

templateId

"true"

createNewFields

*Custom Hidden Fields must be added to the Anedot AP in order to be relayed.

**This table shows the default field mapping. If custom Field Name mapping is saved within Step 9, it will display those Field Names here instead. UTM fields can be added to the Page URL.

Purchase Events

The Anedot Fields match the Submission's Raw Data and the Iterable Fields match the Request Body relay.

Anedot Field

Iterable Field

email

email

-
address {zip}
address {city}
email
address {region}
address {line1}
employerName
address {line2}
lastName
firstName
occupation
phone
first_contribution_amount
highest_contribution_amount
total_contributed_this_year
most_recent_contribution_date
most_recent_contribution_amount

user { dataFields {
**zip
**city
email
**state
**street
**employer
**street_2
**last_name
**first_name
**occupation
phoneNumber
**first_contribution_amount
**highest_contribution_amount
**total_contributed_this_year
**most_recent_contribution_date
**most_recent_contribution_amount }}

"true"

mergeNestedObjects

-
(Donation) id
"Donation"
amount (x100)
"1"
fundName

items {
id
name
price
quantity
description }

-
referrerToForm
utmCodes {term}
utmCodes {medium}
utmCodes {source}
sourceCode
utmCodes {campaign}

items { dataFields {
**referrer
**utm_term
**utm_medium
**utm_source
**source_code
**utm_campaign }}

amount (x100)

total

-
recurring
actionPageName

dataFields {
**recurring
action_page_name }

**This table shows the default field mapping. If custom Field Name mapping is saved within Step 9, it will display those Field Names here instead. UTM fields can be added to the Page URL.


Example Payloads

Payloads are available for Purchase Events, Abandoned Actions, and Custom Events (for lead submissions when specified).

Additional fields are added to each payload to send List ID, Campaign ID, Template ID, and Amount Formatting (when they are specified).

Request Headers - Potential Submitter (Abandoned Cart)

{
"Api-Key": "[REDACTED]",
"User-Agent": "Anedot/6a9989c4",
"Content-Type": "application/json",
"X-Uniq-Identifier": "i2209cdadd44305cc5210"
}

Request Body - Purchase Event (without Amount Formatting Enabled)

{
"user": {
"email": "anna.dote@anedot,com",
"dataFields": {
"zip": "99999",
"city": "New Orleans",
"state": "LA",
"street": "123 Anedot Way",
"country": "US",
"employer": "retired",
"street_2": "",
"last_name": "Dote",
"first_name": "Anna",
"occupation": "retired",
"phoneNumber": "2252501301"
},
"mergeNestedObjects": true
},
"items": [{
"id": "d12ff55f0bff0f80c72ab",
"name": "Donation",
"price": 50.0,
"quantity": 1,
"dataFields": {
"referrer": "https://secure.anedot.com/finerthingsinlife/donate",
"utm_term": null,
"utm_medium": null,
"utm_source": null,
"source_code": null,
"utm_campaign": null
},
"description": "General Fund"
}],
"total": 50.0
}

Request Body - Purchase Event (with Amount Formatting, Campaign ID, Template ID, and custom field labels set)

{
"user": {
"email": "[email protected]",
"dataFields": {
"zip": "99999",
"city": "New Orleans",
"email": "[email protected]",
"state": "LA",
"street": "123 Anedot Way",
"hca_amt": 104.48,
"mcr_amt": 37.14,
"employer": "student",
"street_2": "6789",
"last_name": "Dote",
"first_name": "Anna",
"occupation": "student",
"phoneNumber": "2252501301",
"first_contribution_amount": 200.0,
"highest_contribution_amount": 200.0,
"total_contributed_this_year": 322.0,
"most_recent_contribution_date": "2023-06-01T16:50:55.648-05:00",
"most_recent_contribution_amount": 50.0
},
"mergeNestedObjects": true
},
"items": [{
"id": "dc5171a5bf272359d3823",
"name": "Donation",
"price": 37.14,
"quantity": 1,
"dataFields": {
"referrer": "https://secure.anedot.com/",
"utm_term": null,
"utm_medium": null,
"utm_source": null,
"source_code": null,
"utm_campaign": null
},
"description": "General Fund"
}],
"total": 37.14,
"campaignId": 6733967,
"dataFields": {
"amount": "37.14",
"recurring": false,
"amount_cents": 3714,
"amount_decimal": 37.14,
"amount_dollars": "$37.14",
"action_page_name": "Iterable Donations"
},
"templateId": 9012209
}

Request Body - Custom Event (Example: petition.signed)

{
"email": "[email protected]",
"createdAt": 1683044154,
"eventName": "petition.signed",
"campaignId": 6733967,
"dataFields": {
"referrer": "https://secure.anedot.com/",
"utm_term": null,
"utm_medium": null,
"utm_source": null,
"source_code": null,
"utm_campaign": null,
"action_page_name": "General Fund"
},
"templateId": 9012209,
"createNewFields": true
}

Request Body - Potential Submitter (Example: Abandoned Cart)

{
"user": {
"email": "[email protected]",
"dataFields": {},
"mergeNestedObjects": true
},
"items": [{
"id": "3fe73bc5-31ea-445b-9885-32ddc03c4f5b",
"name": "Donation",
"price": 25.0,
"quantity": 1,
"dataFields": {}
}]
}

Response Body - Purchase Event

{
"msg": "Single user ingestion successful.",
"code": "Success",
"params": {
"id": "aae425e43c85479db339e17db48d4a5d"
}
}

Response Body - Custom Event (Example: petition.signed)

{
"msg": "Event with id: d63e602d29bc4cd8a41cb2e3616e458e tracked.",
"code": "Success",
"params": {
"id": "d63e602d29bc4cd8a41cb2e3616e458e"
}
}

Response Body - Potential Submitter (Example: Abandoned Cart)

{
"msg": "Single user ingestion successful.",
"code": "Success",
"params": null
}

Response Body (Failure)

{
"msg": "Invalid API key",
"code": "BadApiKey",
"params": {
"ip": "52.13.182.211",
"endpoint": "/api/commerce/trackPurchase"
}
}

Did this answer your question?