Overview

Iterable is an integrated, cross-channel platform that supports email, mobile, and web touch points.

Integrating Lytics with Iterable allows you to import user and activity data such as clicks and opens to your Lytics user profiles, or export users based on audience membership in real-time to update lists or trigger timely email or push notifications.

The Lytics Canvas supports Iterable email, SMS, Push, and In-app Experiences. Using the Lytics Canvas you can manage the cross-channel customer lifecycle and use Iterable campaigns as your email and mobile touch points.

Read more on using Iterable with Lytics below. Plus, check out our comprehensive Playbook and blog, How to increase email conversions with intent based personalization.

Authorization

If you haven't already done so, you will need to setup an Iterable account before you begin the process described below. You will also need to be a Admin or Super Admin user who can add or edit API Keys as you will need an Iterable API Key to authorize Lytics to use your Iterable account.

πŸ“˜

If you are setting up Iterable webhooks you will also need a Lytics API token. You can find your API tokens in your account settings.

If you are new to creating authorizations in Lytics, see the Authorizations documentation for more information.

  1. Select Iterable from the list of providers.
  2. Select the Iterable method for authorization.
  3. Enter a Label to identify your authorization.
  4. (Optional) Enter a Description for further context on your authorization.
  5. In the API Key textbox, enter your Iterable API key.
  6. Click Save Authorization.

Iterable Configure Step

Import Audiences & Activity Data

Import Iterable users and activity data to add information such as clicks and opens to your Lytics user profiles. Use that data to build behavioral audiences and refine your targeting.

Integration Details

  • Implementation Type: Server-side Integration.
  • Implementation Technique: REST API Integration to download CSV formatted data.
  • Frequency: Batch Integration imported once, or on an hourly, continuous basis.
  • Resulting Data: Full User Profiles for all Iterable users complete with activity/interaction data.

This integration utilizes the Iterable APIs to receive user data. On each run of the job, it will:

  1. Query for a CSV of all users in your Iterable account. This CSV is imported to the iterable_users stream in Lytics.
  2. Query for a CSV of all events including email, SMS, custom, push, and in-app events. These events are imported to Lytics streams based on the type of activity, i.e. iterable_activity (email), iterable_push_activity, iterable_sms_activity, and iterable_in_app_activity.

In addition to running this job, you can also use webhooks for real-time event capture of your Iterable events. Learn more about how to configure webhooks in Iterable to send data to Lytics.

Fields

The fields that are included in the default mapping for various streams (user, email, in-app, push and sms) are shown below in their respective stream tables:

Stream: iterable_users

The following fields are included in the default mapping of the iterable_users stream:

Source FieldLytics User FieldDescriptionType
citycityCitystring
countrycountryCountrystring
email(email)email unique idEmail Addressstring
emaildomain(email)email_domainEmail Domainstring
firstNamefirst_nameFirst Namestring
gendergenderGenderstring
lastNamelast_nameLast Namestring
timeZonetimezoneTimezonestring
userIdit_user_idIterable User Idstring

Lytics will import any and all custom fields from Iterable, however this stream does not automatically map these fields. Any custom fields brought in from Iterable must be mapped.


Stream: iterable_activity

The following fields are included in the default mapping of the iterable_activity stream:

Source FieldConditionalLytics User FieldDescriptionType
count(event)IF eq(event, "emailBounce")it_bouncectIterable Bounce Countint
count(event)IF eq(event, "emailClick")it_clickctIterable Click Countint
count(event)IF eq(event, "emailOpen")it_openctIterable Open Countint
count(event)IF eq(event, "emailSend")it_sendctIterable Send Countint
email(email)email unique idEmail Addressstring
emaildomain(email)email_domainEmail Domainstring
map(experience_id, 1)IF eq(event, "emailClick")it_conversionsConverted on Iterable Experiencemap[string]int
map(experience_id, 1)IF eq(event, "emailOpen")it_impressionsReached with Iterable Experiencemap[string]int
max(epochms())IF eq(event, "emailBounce")it_lastbounce_tsIterable Last Bouncedate
max(epochms())IF eq(event, "emailClick")it_lastclick_tsIterable Last Clickdate
max(epochms())IF eq(event, "emailOpen")it_lastopen_tsIterable Last Opendate
max(epochms())IF eq(event, "emailSend")it_lastsend_tsIterable Last Senddate
max(epochms())IF eq(event, "emailUnSubcribe")it_unsub_tsIterable Unsub Datedate
max(epochms())IF eq(event, "emailOpen")last_active_tsLast Activedate
min(epochms())IF eq(event, "emailBounce")it_firstbounce_tsIterable First Bouncedate
min(epochms())IF eq(event, "emailClick")it_firstclick_tsIterable First Clickdate
min(epochms())IF eq(event, "emailOpen")it_firstopen_tsIterable First Opendate
min(epochms())IF eq(event, "emailSend")it_firstsend_tsIterable First Senddate
recipientStatestateStatestring
set(campaignId)it_campaignsIterable Campaigns IDs[]string
set(campaignName)it_campaign_namesIterable Campaigns[]string
set(channelId)it_channelsIterable Channels[]string
set(city)it_activityIterable Open Cities[]string
set(device)it_devicesIterable Open Devices[]string
set(emailListId)it_listsIterable Lists[]string
set(ip)ip_addressesIP Addresses[]string
set(messageId)it_messagesIterable Messages[]string
set(messageTypeId)it_message_typesIterable Message Types[]string
set(oneof(linkUrl, url))it_email_urlsIterable Click URLs[]string
set(region)it_regionsIterable Open Regions[]string
set(templateId)it_templatesIterable Template IDs[]string
set(templateName)it_template_namesIterable Templates[]string
set(userAgent)it_user_agentsIterable User Agents[]string
set(workflowId)it_workflow_idsIterable Workflow IDs[]string
set(workflowName)it_workflow_namesIterable Workflow Names[]string
signupSourceit_signup_sourceIterable Signup Sourcestring
unsubSourceIF eq(event, "emailUnSubcribe")it_unsubreasonIterable Unsubscribe Reasonstring
valuect(event)it_eventIterable Eventsmap[string]intsum
valuect(hash(urlmain(oneof(linkUrl, url))))hashedurlsHashed Urls Visitedmap[string]intsum
valuect(hourofday())IF eq(event, "emailOpen")it_hourlyopenIterable Hourly Eventsmap[string]intsum
valuect(hourofweek())IF eq(event, "emailOpen")it_hourofweekIterable Hour of Week Eventsmap[string]intsum
valuect(yymm())IF eq(event, "emailOpen")it_monthlyIterable Events By Monthmap[string]intsum

Stream: iterable_in_app_activity

The following fields are included in the default mapping of the iterable_in_app_activity stream:

Source FieldConditionalLytics User FieldDescriptionType
count(event)IF eq(event, "inAppClick")it_in_app_clickctIterable In-App Click Countint
count(event)IF eq(event, "inAppOpen")it_in_app_openctIterable Open In-App Message Openint
email(email)email unique idEmail Addressstring
emaildomain(email)email_domainEmail Domainstring
map(experience_id, 1)IF eq(event, "inAppOpen")it_conversionsConverted on Iterable Experiencemap[string]int
map(experience_id, 1)IF eq(event, "inAppClick")it_impressionsReached with Iterable Experiencemap[string]int
max(epochms())IF eq(event, "inAppClick")it_last_in_app_click_tsIterable Last In-App Clickdate
max(epochms())IF eq(event, "inAppOpen")it_last_in_app_open_tsIterable Last In-App Message Opendate
max(epochms())IF eq(event, "inAppOpen")last_active_tsLast Activedate
min(epochms())IF eq(event, "inAppClick")it_first_in_app_click_tsIterable First In-App Clickdate
min(epochms())IF eq(event, "inAppOpen")it_first_in_app_open_tsIterable First In-App Message Opendate
set(campaignId)it_campaignsIterable Campaigns IDs[]string
set(campaignName)it_campaign_namesIterable Campaigns[]string
valuect(event)it_eventIterable Eventsmap[string]intsum

Stream: iterable_push_activity

The following fields are included in the default mapping of the iterable_push_activity stream:

Source FieldConditionalLytics User FieldDescriptionType
count(event)IF eq(event, "pushBounce")it_push_bouncectIterable Bounce Push Countint
count(event)IF eq(event, "pushOpen")it_push_openctIterable Open Push Countint
count(event)IF eq(event, "pushSend")it_push_sendctIterable Send Push Countint
email(email)email unique idEmail Addressstring
emaildomain(email)email_domainEmail Domainstring
map(experience_id, 1)IF eq(event, "pushOpen")it_conversionsConverted on Iterable Experiencemap[string]int
map(experience_id, 1)IF eq(event, "pushSend")it_impressionsReached with Iterable Experiencemap[string]int
max(epochms())IF eq(event, "pushBounce")it_last_push_bounce_tsIterable Last Push Bouncedate
max(epochms())IF eq(event, "pushOpen")it_last_push_open_tsIterable Last Push Opendate
max(epochms())IF eq(event, "pushSend")it_last_push_send_tsIterable Last Push Senddate
max(epochms())IF eq(event, "pushUninstall")it_unsub_tsIterable Unsub Datedate
max(epochms())IF eq(event, "pushOpen")last_active_tsLast Activedate
min(epochms())IF eq(event, "pushBounce")it_first_push_bounce_tsIterable First Push Bouncedate
min(epochms())IF eq(event, "pushOpen")it_first_push_open_tsIterable First Push Opendate
min(epochms())IF eq(event, "pushSend")it_first_push_send_tsIterable First Push Senddate
set(campaignId)it_campaignsIterable Campaigns IDs[]string
set(campaignName)it_campaign_namesIterable Campaigns[]string
set(channelId)it_channelsIterable Channels[]string
set(messageId)it_messagesIterable Messages[]string
set(messageTypeId)it_message_typesIterable Message Types[]string
set(oneof(deeplink_ios, deeplink_andriod))it_push_deeplinkIterable Push Notification Deeplink[]string
set(templateId)it_templatesIterable Template IDs[]string
set(templateName)it_template_namesIterable Templates[]string
set(workflowId)it_workflow_idsIterable Workflow IDs[]string
set(workflowName)it_workflow_namesIterable Workflow Names[]string
valuect(event)it_eventIterable Eventsmap[string]intsum
valuect(hourofday())IF eq(event, "pushOpen")it_mobile_hourlyopenIterable Hourly Mobile Eventsmap[string]intsum
valuect(hourofweek())IF eq(event, "pushOpen")it_mobile_hourofweekIterable Hour of Week Mobile Eventsmap[string]intsum
valuect(yymm())IF eq(event, "pushOpen")it_mobile_monthlyIterable Mobile Events By Monthmap[string]intsum

Stream: iterable_sms_activity

The following fields are included in the default mapping of the iterable_sms_activity stream:

Source FieldConditionalLytics User FieldDescriptionType
count(event)IF eq(event, "smsBounce")it_sms_bouncectIterable Bounce SMS Countint
count(event)IF eq(event, "smsReceived")it_sms_receivedctIterable Open SMS Receivedint
count(event)IF eq(event, "smsSend")it_sms_sendctIterable Send SMS Countint
email(email)email unique idEmail Addressstring
emaildomain(email)email_domainEmail Domainstring
map(experience_id, 1)IF eq(event, "smsReceived")it_conversionsConverted on Iterable Experiencemap[string]int
map(experience_id, 1)IF eq(event, "smsSend")it_impressionsReached with Iterable Experiencemap[string]int
max(epochms())IF eq(event, "smsBounce")it_last_sms_bounce_tsIterable Last SMS Bouncedate
max(epochms())IF eq(event, "smsReceived")it_last_sms_received_tsIterable Last SMS Receiveddate
max(epochms())IF eq(event, "smsSend")it_last_sms_send_tsIterable Last SMS Senddate
max(epochms())IF eq(event, "smsOpen")last_active_tsLast Activedate
min(epochms())IF eq(event, "smsBounce")it_first_sms_bounce_tsIterable First SMS Bouncedate
min(epochms())IF eq(event, "smsReceived")it_first_sms_received_tsIterable First SMS Receiveddate
min(epochms())IF eq(event, "smsSend")it_first_sms_send_tsIterable First SMS Senddate
set(campaignId)it_campaignsIterable Campaigns IDs[]string
set(campaignName)it_campaign_namesIterable Campaigns[]string
set(channelId)it_channelsIterable Channels[]string
set(messageTypeId)it_message_typesIterable Message Types[]string
set(templateId)it_templatesIterable Template IDs[]string
set(templateName)it_template_namesIterable Templates[]string
set(workflowId)it_workflow_idsIterable Workflow IDs[]string
set(workflowName)it_workflow_namesIterable Workflow Names[]string
toPhoneNumberphonePhone Numberstring
valuect(event)it_eventIterable Eventsmap[string]intsum

Configuration

Follow these steps to set up an import job for Iterable. If you are new to creating jobs in Lytics, see the Data Sources documentation for more information.

  1. Select Iterable from the list of providers.
  2. Select Import Audiences & Activity Data job type.
  3. Select the Authorization you would like to use or create a new one.
  4. Enter a Label to identify this job you are creating in Lytics.
  5. (Optional) Enter a Description for further context on your job.
  6. (Optional) Use the Activity Events to Import input to select the Iterable events you would like to import into Lytics. Events available to be imported from Iterable are located in the left column. Events added to the right column will be imported to Lytics. If nothing is selected, all activity events will be imported.
  7. (Optional) Use the User Fields to Import input to select the Iterable fields you would like to import into Lytics. Fields available to be imported from Iterable are located in the left column. Fields added to the right column will be imported to Lytics.
  8. (Optional) If you would like users and their activity to be updated continually, select Keep Updated.
  9. (Optional) If you would like to skip importing users and just import user activity, select Skip User Import. This is useful if you export users from Lytics to Iterable and you want to avoid re-importing users you already have in Lytics.
  10. (Optional) If you would like to skip importing user event activity and just import users, select Skip Activity Event Import.
  11. Click Start Import.

Iterable Import Configuration Fields

User data will begin to import into Lytics from Iterable and should be available within an hour. If Keep Updated was selected, user data and activity will be updated hourly until the import is cancelled.

Export Audiences

This job type will export a Lytics audience to an existing Iterable list or create a new Iterable list. All existing members of that audience are exported to the chosen list and new members are exported in real-time. You can use this export in conjunction with an Iterable workflow to send users a triggered Iterable email as they enter an audience in Lytics.

Integration Details

  • Implementation Type: Server-side Integration.
  • Implementation Technique: REST API Integration - Audience Trigger Integration.
  • Frequency: Real-time Integration, with a one-time Backfill of the audience after setup.
  • Resulting Data: Lytics users that are a member of the selected audience(s) are exported to Iterable and subscribed to the selected list. A new Iterable list is created if provided list name is not in Iterable. Both known users (with email) and anonymous users are exported.

This integration utilizes the Iterable API to send users to the selected list in Iterable. Upon starting, this job will:

  1. Check if an existing list was selected, if not, create a new list with the name provided in the configuration.
  2. Run a backfill by creating or updating existing users in Iterable.
  3. After a backfill, the job will receive real-time updates when a user enters or exits the audience.
  4. For each user entering the audience, it will create or update the user in Iterable to be subscribed to the selected Iterable list. Both known and anonymous users are included in the export. If a user is anonymous, it is exported using the preferUserId flag on Iterable's /api/lists/subscribe endpoint. Iterable generates a placeholder email for anonymous users of the form [email protected].
  5. For each user exiting the selected audience, the job will unsubscribe the user from the selected list.
  6. Additionally, if user field changes are selected to be triggered (configured in "Fields to Trigger"), then for users who are a part of the exported audiences, if the value of one of their selected user field changes, then the field change update will be sent to Iterable.

Fields

By default, Lytics exports the following fields to Iterable:

Lytics User FieldDescriptionIterable FieldType
emailEmail AddressEmailstring
configurableIterable User IDuserIDstring

In addition to the default fields, you can export any Lytics user fields to Iterable fields that are present in your Iterable account. Lytics allows you to map user profile fields with the corresponding Iterable field as part of the job configuration.

Configuration

Follow these steps to set up and configure an export job for Iterable. If you are new to creating jobs in Lytics, see the Jobs Dashboard documentation for more information.

  1. Select Iterable from the list of providers.
  2. Select the Export Audiences job type from the list.
  3. Select the Authorization you would like to use or create a new one.
  4. Enter a Label to identify this job you are creating in Lytics.
  5. (Optional) Enter a Description for further context on your job.
  6. Select the audience(s) to export.
  7. From the List text input, choose the Iterable list to export to, or enter a name to create a new list in Iterable.
  8. (Optional) From the Email Field input, select the email address field in Lytics. At least one of email field or ID field must be selected.
  9. (Optional) From the ID Field input, select the Lytics field that maps to the userID field in Iterable. At least one of email field or ID field must be selected.
  10. (Optional) From the Map Fields, map all the fields from Lytics to Iterable by selecting the Lytics field on the left, and its Iterable destination on the right.
  11. (Optional) From the Fields to Create input, select a list of user fields to create in Iterable. In Iterable, the created field will have the name inside the ().
  12. (Optional) From the Convert Map Fields checkbox, select to convert Lytics map fields into an array of key-value objects in Iterable. This minimizes the field count in Iterable. Uncheck if you would like to send map fields to Iterable as they are in Lytics. This can lead to a high field count since each distinct key will count as a new field in Iterable.
  13. (Optional) From the Fields to Trigger input, select up to 75 user fields to trigger user change events. For any user in the exported audience, if any of the selected field values change, then the user will be updated in Iterable.
  14. (Optional) From the Include Lytics Audience Membership checkbox, select to include the user's audience membership as a data field called LyticsAudiences.
  15. Click the Start Export button.

Iterable Export Config

Users should be available in the Iterable list within a few minutes of starting the export. Larger audiences may take a few hours to be completely added to the list. You can find the new list in Iterable under Users > Lists.

Experiences

Lytics Experiencessupport Iterable email, SMS, push, and in-app campaigns. These Experiences may be run as stand-alone campaigns such as newsletters or blast emails. Using the Lytics Canvas, you can manage the cross-channel customer lifecycle and use Iterable campaigns as your email and mobile touchpoints.

Experience Import

Like all Experience enabled providers, you can import Experiences from Iterable to Lytics. During the import process, you will be asked to select an authorization. Read the Iterable authorization documentation for more information.

Import Experiences

Tactics

During the Experience import process, tactics are determined by the Campaign Type and Message Medium set during the creation of your campaign in Iterable.

Campaign Type and Message Medium

Iterable Experiences in Lytics support the following tactics:

  • Blast Email - Send an email to a list of users at one time (e.g., a weekly newsletter).
  • Blast Push - Send a mobile push notification to a list of users at one time.
  • Blast SMS - Send a mobile text message to a list of users at one time.
  • Blast In-App - Send a customized notification to a list of users when they open your mobile application.
  • Triggered Email - Send an email after a triggering event has occurred (e.g. an order confirmation).
  • Triggered Push - Send a mobile push notification after a triggering event has occurred.
  • Triggered SMS - Send a mobile text message after a triggering event has occurred.
  • Triggered In-App - Send a customized notification to users in your mobile application after a triggering event has occurred.

πŸ“˜

The "triggered" Experiences tactics will only work properly if they are set up with a workflow through the Iterable UI. See the activation details for more information.

Configuration

After importing an Iterable Experience you can configure it for activation. All tactics for Iterable Experiences have the same three configuration steps within the Experience Editor:

  1. Target - select the target audience for your Experience.
  2. Configure Iterable - set up how the audience for your Experience will be exported. This step will match the configuration instructions of the Export Audiences workflow and will generally function the same, but without the Audience selection, as that is configured by the Target step in the Experience editor.
  3. Configure Delivery - choose to turn the Delivery Optimization feature on or off. For Iterable Experiences, Delivery Optimization is most useful for the "triggered" Experience tactics as you will likely want to send a blast campaign at a specified time to a static list of users.

Once you've finished configuring the Experience you can save and activate it.

Activation

For all Iterable Experiences, activating simply pushes users to a list within Iterable. As mentioned in the configuration step, an Iterable Experience functions similarly to the Export Audiences workflow. However, the steps necessary to successfully deploy your campaign vary by the tactic.

Blast Tactics

For blast Experiences, simply assign the list exported to the associated Iterable Campaign once the list has populated. This should occur within a few minutes of activation if you do not have Delivery Optimization enabled.

  1. Open up the campaign in Iterable, and navigate to the Setup step.
  2. Under Send Lists, select the list you configured your Experience to sync to.
    Send Lists
  3. Save your changes and proceed to the Launch step.
  4. Once you're ready to deploy, opt to Send Campaign Right Now or Schedule Campaign for Later.
    Iterable Buttons

Triggered Tactics

For triggered Experiences, you will utilize an Iterable workflow to deliver your Experience as users enter or exit the list. You will need to create and configure the workflow before importing the Experience to Lytics, and enable the workflow after the Experience has been activated in Lytics.

  1. Open up the workflow associated with your Experience in Iterable.
  2. Make sure your workflow Start When condition is set to Subscribed to List, and choose the list you configured for your Experience in Lytics.
    Workflow Node
  3. For your second node, in your workflow select the execution (send email, send in-app, send SMS, or send push) and make sure your campaign is selected.
  4. Connect the nodes in your workflow, or add additional nodes for delay or additional logic.
    Complete Workflow
  5. Save your workflow.
  6. Once you're ready to deploy, toggle the switch to enable users to begin receiving their Experience.
    Enabled Workflow

Metrics

Iterable metrics are collected through webhooks. You must enable webhooks as described in that doc for Lytics to populate the reach and conversion metrics for Iterable Experiences.

Iterable Experience With Metrics

Metrics from the webhooks are mapped to Lytics user fields as follows:

  • Reach - The following event types from Iterable count as impressions for Iterable campaigns of the appropriate tactic:

    • Email tactics: emailOpen
    • Push tactics: pushSend
    • SMS tactics: smsSend
    • In-app tactics: inAppOpen
  • Converted - The following event types from Iterable count as conversions for Iterable campaigns of the appropriate tactic:

    • Email tactics: emailClick
    • Push tactics: pushOpen
    • SMS tactics: smsReceived
    • In-app tactics: inAppClick

These events are also mapped to the Lytics user fields Reached with Iterable Experience and Converted on Iterable Experience, which are available in the audience builder so that you can create audiences of users who have been reached by or converted on your Iterable Experiences.

User Fields

Configure Webhooks

Lytics highly recommends setting up Iterable system webhooks for real time event capture of your events. This will allow Lytics to get real-time activity data such as clicks, opens, bounces etc. on your Iterable campaigns.

Lytics requires that webhooks are enabled to use Iterable Experiences as part of Lytics Orchestrate because it allows for the collection of reporting metrics for your Iterable Experiences.

πŸ“˜

If you are running a continous import from Iterable and using webhooks, some user activity data may be captured twice.

To set up system webhooks to go to Lytics, you will need to have a Lytics API token ready, you can read how to generate a new API token if you do not already have one. Then follow these steps:

  1. Log into your Iterable account.

  2. Navigate to Integrations > System Webhooks.

  3. Click +CREATE WEBHOOK.

    iterable integration webhook create

  4. In the Endpoint URL box, enter: https://api.lytics.io/collect/json/iterable?access_token=YOUR_API_TOKEN where YOUR_API_TOKEN is your Lytics API token which can be generated in your account settings.

    iterable integration webhook create2

  5. Set the Auth Type to NoAuth by clicking the NoAuth radio button.

  6. Click CREATE WEBHOOK.

  7. Then scroll to the far right edge and click the EDIT button.

    iterable integration webhook edit

  8. Click the Enabled checkbox.

  9. Select the events you'd like to send data to Lytics by clicking on their respective checkboxs. The available options for Webhook events are:

    • Triggered Send
    • Blast Send
    • Push Send
    • SMS Send
    • Email Open
    • Push Open
    • Email Click
    • Hosted Unsubscribe Click
    • Email Complaint (i.e. Spam)
    • Push Uninstall
    • SMS Received
    • Email Bounce
    • Push Bounce
    • SMS Bounce
    • Email Subscribe
    • Email UnSubscribe
  10. Click SAVE.

iterable integration webhook save

After saving the changes to the webhook, the selected events will be sent to your Lytics account in real-time. Events collected via the webhook are processed and mapped in the same way that activity data via the import workflow is mapped, reference the fields table for a full list of user fields.

Including Identifiers in Links

You may want to pass a unique Iterable identifier from links within your email to allow cross-channel identity resolution. This will help Lytics identify users across data streams and merge their email with web activity. For more information about dynamically passing this parameter, see Iterable's documentation on creating unique URLs for emails.

The easiest and safest way to pass a unique identifier from Iterable click-through links to Lytics is to encode the user's email with Base64, in Iterable, via the custom link parameters.

Requirements

The Lytics JavaScript tag must be installed on your site, and the Lytics Import Audiences and Activity will need to be active with email set for import (default state). In addition, a line of LQL (Lytics Query Language) will need to be added to the Iterable data mapping file in order to decode and map the email field to the user's profile. For assistance contact your Lytics representative or Lytics support.

Adding an encoded email to Iterable Links

Follow these steps to add a Base64 encoded email as an identifier to your email links in Iterable.

  1. Ensure that the Iterable integration is importing audiences and activity data (default).
  2. Log in to Iterable and navigate to Templates > Templates and select your email template.
  3. Select Advanced Option tab.
  4. Select Enable Custom Link Parameters.
  5. Set the following in the custom parameters:
    • Key = encoded_email
    • Value = {{#base64}}{{email}}{{/base64}}

Now all email clicks will pass the encoded_email to your website when users click the links, and Lytics will automatically grab the encoded_email, decode it and stitch it to the user's web behavior via our JavaScript web tag.

https://www.yourcompanyURL.com/email-campaign-page?encoded_email=amltYmVhbUBkZmRzZmRzLmNvbQ==