This page describes how to use Census with Iterable.
Please note that for larger syncs, it might take ~10 minutes for you to see the new data in Iterable's UI.

🏃‍♀️ Getting Started

In this guide, we will show you how to connect Iterable to Census and create your first sync.


1. Create a new Iterable API key

To connect Census to your Iterable, you'll need to provide Census with an API key so that we can talk to it directly.
A. Go to your Integration > API keys page
In the top right, click on your name, and select Account Settings
B. Create a new key for Census
Click the Create New API key button in the top right.
Select the "Server-side" key type from the subsequent dropdown.
Copy the resulting key (a string of 32 characters) to add it to Census.
C. Create a new Iterable connection in Census
  • Visit the Destinations tab in Census
  • Click New Destination and select Iterable from the menu
  • Finally, paste in the API Key you just created. You can customize the name of the connection if you plan to connect multiple instances of Iterable.
Iterable will now appear as a new destination for Census syncs.

2. Syncing data into Iterable

Once the service is added, you can sync users from your database into your Iterable audience (and augment existing contacts with new product data).
When creating a sync in Census, you can use email or userId as an identifier.
You can map data fields into your existing Iterable audience schema (including into nested schemas). You can also create new custom fields by clicking "+ Add Custom Field" when editing the mapping.

🗄 Supported Objects

Object Name
Sync Keys
User ID, Email
Event ID
Static List
User ID, Email
Contact us if you want Census to support more objects for Iterable.

Handling Nested Objects

Iterable supports nested objects and fields on its User object. If you would like to send JSON, Arrays, or JSON Arrays to a field in Iterable, you may.
For most data warehouses, there are specific datatypes for these types of values. However, Amazon Redshift does not natively support JSON, so you will want to store this type of data as a string value. Provided that the values are valid JSON, Census will ensure that it is nested as expected when sending the data to Iterable.
As an example, valid JSON for a field named "subscription" could have the following value:
"plan": "Premium",
"products": [
We recommend testing your JSON fields in Redshift by using Redshift's IS_VALID_JSON and IS_VALID_JSON_ARRAY functions, especially before creating new fields in Iterable via Census's field mapper.

Syncing to GeoLocation Fields

Iterable has a field data type called GeoLocation that stores a latitude and longitude in an object. To create or sync to an existing Iterable GeoLocation field with Census there are a couple of requirements.
  • The destination field name must use the suffix _geo_location . NOTE: The suffix is case sensitive
  • The geo_location object data can only contain two fields, lat and lon
    • Example: { "lat": 31, "lon": -14 }
    • For more information on using structured data within Census please visit our Structured Data documentation.

Syncing to Catalogs

Iterable Catalogs let you create custom objects within Iterable that can be associated with users. Here's a few tips when using Catalogs to make sure your sync is successful.
  • Census will rely on the schema you've defined inside Iterable. We don't currently allow you to create fields from Census.
  • We strongly recommend that you specify the type of each catalog field through the Iterable UI before using Census to sync items. Untyped fields are not searchable by collections. And any catalog item uploaded before a field is typed will not have searchable by that field. If we see an untyped field in Census, we will send string values to that field because we don't know what type it should be.
  • In practice, even if a field is typed, Iterable will accept and update field values of different types. For instance, if the age field is typed as a Long, but we send a value of "25", Iterable will accept and update records to use the string "25" as age.
  • Iterable can take a while to process new Catalog items. In some cases, we see Iterable take as long as 20 minutes before the record appears.

Invalid Email Rejections

When syncing to the User object Iterable may reject some records with the message Invalid Email. This is thrown for in the following cases
  • Invalid Email Formatting: When an email address is not properly formatted. For more information about the formatting guide used by Iterable please refer to Iterable's documentation linked here.
  • Forgotten/Deleted Emails: Iterable will also send reject a record with Invalid Email when a user has been previously forgotten or deleted. For more information regarding this functionality in Iterable please refer to the Iterable documentation linked here.

🔄 Supported Sync Behaviors

Learn more about what all of our sync behaviors on our Core Concept page.
Update or Create
User, Catalog
Update Only
Catalog, Static List
Contact us if you want Census to support more Sync Behaviors for Iterable.

🚑 Need help connecting to Iterable?

Contact us via [email protected] or start a conversation with us via the in-app chat.