Iterable Reference

Iterable Project Types

Projects in Iterable use a specific field to identify each user. Each project can be set so email and/or userId can be selected as the project's unique identifier at the time of creation.

There are 3 types of projects available to identify users:

  • Email-based: uses email as the unique identifier

  • UserID-based: uses userId as the unique identifier

  • Hybrid: Uses email and userID as unique identifiers

Learn more about determining the best setting for your project.

Destination Info






When you call freshpaint.identify(), Freshpaint will create or update a User profile in Iterable by hitting Iterable's API identify endpoint at: /api/users/update. Here is an example of an identify call:

freshpaint.identify("<userId>", {
    "email": "<email>"
  • For email-based projects, you must include an email property.

  • For userId-based projects, you must include an userId property.

  • For hybrid projects, you must include an email and/or userId property. If you do include both email and userId at the top level of an identify call, precedence rules apply.

You can find identified users from the contact lookup page in Iterable.

When Freshpaint receives new user property data, it will update the contact properties for the corresponding user profile in Iterable.

In order to send emails to a user in Iterable, you must first send an identify call with the email property.


When you send an event to Iterable from Freshpaint, Freshpaint will create an event and attach it to the matching user's profile. It does so by sending a POST request to Iterable's events API endpoint at: /api/events/track

You can use events to segment your users and build personalized journeys.

Users need to first be identified before events can be associated with their user record, as Iterable doesn't support anonymous users. Freshpaint events for anonymous users will not be sent to Iterable.

Learn more about how to handle anonymous users in Iterable.

You can see events associated with each user by searching for the user profile under contact lookup:

You can also view all your events in the events log under "Insights":

Track Purchases

If you track an event with the special event name Order Completed, we will send this as a Purchase event in Iterable by hitting their track purchase API endpoint at: /api/commerce/trackPurchase. You can see those Purchase events populated in your purchase event log of your Iterable account.

There are some things you need to know in order to do this effectively:

  • You must include a campaignId property, which must be the id of the campaign you are associating the purchase with;

  • You must include a templateId property, which is the id of the template of the campaign being associated;

  • You must include an items property, which is an array of objects that represent the items being purchased;

  • You must have a total property, which is the total price of the purchase event.

If you do not have all of these together, then your purchase event will not be sent to Iterable. You should use Freshpaint's event tester for Iterable to verify that what you want to do in your code will work. You can find more information on Iterable's API documentation.

Page Views

When Freshpaint receives new page views, it will update the event history for the corresponding user profile in Iterable.

Configuration Options

Enable Default Identify Transformations

Enable this setting to apply a default set of transformations from Freshpaint User Properties to Iterable Properties when making Identify calls.

Freshpaint User PropertyIterable Property











Changing this setting for an existing project may leave Iterable profiles in an inconsistent state with both old and new properties.

You can find this option right below where you save your API key.

Event Transformations

Set up transformations to modify your data before it's sent to your destination. Read more about transformations here.

Date Fields in Iterable

If you are sending in a date field to Iterable, it must be a specific type of string. You may want to send date fields to Iterable in order to aid in segmentation. You can read more about that here. Iterable has a specific date format that must be used to segment a field by date.

Acceptable date formats include:

  • yyyy-MM-dd HH:mm:ss ZZ

    • 2000-01-01 00:00:00 -04:00

  • yyyy-MM-dd HH:mm:ss

    • 2000-01-01 00:00:00

  • yyyy-MM-ddTHH:mm:ss.SSSZZ

    • 2000-01-01T00:00:00.000-04:00

  • yyyy-MM-dd

    • 2000-01-01

Last updated