Iterable
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.
- Select Iterable from the list of providers.
- Select the Iterable method for authorization.
- Enter a Label to identify your authorization.
- (Optional) Enter a Description for further context on your authorization.
- In the API Key textbox, enter your Iterable API key.
- Click Save Authorization.
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:
- Query for a CSV of all users in your Iterable account. This CSV is imported to the
iterable_users
stream in Lytics. - 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
, anditerable_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 Field | Lytics User Field | Description | Type |
---|---|---|---|
city | city | City | string |
country | country | Country | string |
email(email) | email unique id | Email Address | string |
emaildomain(email) | email_domain | Email Domain | string |
firstName | first_name | First Name | string |
gender | gender | Gender | string |
lastName | last_name | Last Name | string |
timeZone | timezone | Timezone | string |
userId | it_user_id | Iterable User Id | string |
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 Field | Conditional | Lytics User Field | Description | Type |
---|---|---|---|---|
count(event) | IF eq(event, "emailBounce") | it_bouncect | Iterable Bounce Count | int |
count(event) | IF eq(event, "emailClick") | it_clickct | Iterable Click Count | int |
count(event) | IF eq(event, "emailOpen") | it_openct | Iterable Open Count | int |
count(event) | IF eq(event, "emailSend") | it_sendct | Iterable Send Count | int |
email(email) | email unique id | Email Address | string | |
emaildomain(email) | email_domain | Email Domain | string | |
map(experience_id, 1) | IF eq(event, "emailClick") | it_conversions | Converted on Iterable Experience | map[string]int |
map(experience_id, 1) | IF eq(event, "emailOpen") | it_impressions | Reached with Iterable Experience | map[string]int |
max(epochms()) | IF eq(event, "emailBounce") | it_lastbounce_ts | Iterable Last Bounce | date |
max(epochms()) | IF eq(event, "emailClick") | it_lastclick_ts | Iterable Last Click | date |
max(epochms()) | IF eq(event, "emailOpen") | it_lastopen_ts | Iterable Last Open | date |
max(epochms()) | IF eq(event, "emailSend") | it_lastsend_ts | Iterable Last Send | date |
max(epochms()) | IF eq(event, "emailUnSubcribe") | it_unsub_ts | Iterable Unsub Date | date |
max(epochms()) | IF eq(event, "emailOpen") | last_active_ts | Last Active | date |
min(epochms()) | IF eq(event, "emailBounce") | it_firstbounce_ts | Iterable First Bounce | date |
min(epochms()) | IF eq(event, "emailClick") | it_firstclick_ts | Iterable First Click | date |
min(epochms()) | IF eq(event, "emailOpen") | it_firstopen_ts | Iterable First Open | date |
min(epochms()) | IF eq(event, "emailSend") | it_firstsend_ts | Iterable First Send | date |
recipientState | state | State | string | |
set(campaignId) | it_campaigns | Iterable Campaigns IDs | []string | |
set(campaignName) | it_campaign_names | Iterable Campaigns | []string | |
set(channelId) | it_channels | Iterable Channels | []string | |
set(city) | it_activity | Iterable Open Cities | []string | |
set(device) | it_devices | Iterable Open Devices | []string | |
set(emailListId) | it_lists | Iterable Lists | []string | |
set(ip) | ip_addresses | IP Addresses | []string | |
set(messageId) | it_messages | Iterable Messages | []string | |
set(messageTypeId) | it_message_types | Iterable Message Types | []string | |
set(oneof(linkUrl, url)) | it_email_urls | Iterable Click URLs | []string | |
set(region) | it_regions | Iterable Open Regions | []string | |
set(templateId) | it_templates | Iterable Template IDs | []string | |
set(templateName) | it_template_names | Iterable Templates | []string | |
set(userAgent) | it_user_agents | Iterable User Agents | []string | |
set(workflowId) | it_workflow_ids | Iterable Workflow IDs | []string | |
set(workflowName) | it_workflow_names | Iterable Workflow Names | []string | |
signupSource | it_signup_source | Iterable Signup Source | string | |
unsubSource | IF eq(event, "emailUnSubcribe") | it_unsubreason | Iterable Unsubscribe Reason | string |
valuect(event) | it_event | Iterable Events | map[string]intsum | |
valuect(hash(urlmain(oneof(linkUrl, url)))) | hashedurls | Hashed Urls Visited | map[string]intsum | |
valuect(hourofday()) | IF eq(event, "emailOpen") | it_hourlyopen | Iterable Hourly Events | map[string]intsum |
valuect(hourofweek()) | IF eq(event, "emailOpen") | it_hourofweek | Iterable Hour of Week Events | map[string]intsum |
valuect(yymm()) | IF eq(event, "emailOpen") | it_monthly | Iterable Events By Month | map[string]intsum |
Stream: iterable_in_app_activity
The following fields are included in the default mapping of the iterable_in_app_activity
stream:
Source Field | Conditional | Lytics User Field | Description | Type |
---|---|---|---|---|
count(event) | IF eq(event, "inAppClick") | it_in_app_clickct | Iterable In-App Click Count | int |
count(event) | IF eq(event, "inAppOpen") | it_in_app_openct | Iterable Open In-App Message Open | int |
email(email) | email unique id | Email Address | string | |
emaildomain(email) | email_domain | Email Domain | string | |
map(experience_id, 1) | IF eq(event, "inAppOpen") | it_conversions | Converted on Iterable Experience | map[string]int |
map(experience_id, 1) | IF eq(event, "inAppClick") | it_impressions | Reached with Iterable Experience | map[string]int |
max(epochms()) | IF eq(event, "inAppClick") | it_last_in_app_click_ts | Iterable Last In-App Click | date |
max(epochms()) | IF eq(event, "inAppOpen") | it_last_in_app_open_ts | Iterable Last In-App Message Open | date |
max(epochms()) | IF eq(event, "inAppOpen") | last_active_ts | Last Active | date |
min(epochms()) | IF eq(event, "inAppClick") | it_first_in_app_click_ts | Iterable First In-App Click | date |
min(epochms()) | IF eq(event, "inAppOpen") | it_first_in_app_open_ts | Iterable First In-App Message Open | date |
set(campaignId) | it_campaigns | Iterable Campaigns IDs | []string | |
set(campaignName) | it_campaign_names | Iterable Campaigns | []string | |
valuect(event) | it_event | Iterable Events | map[string]intsum |
Stream: iterable_push_activity
The following fields are included in the default mapping of the iterable_push_activity
stream:
Source Field | Conditional | Lytics User Field | Description | Type |
---|---|---|---|---|
count(event) | IF eq(event, "pushBounce") | it_push_bouncect | Iterable Bounce Push Count | int |
count(event) | IF eq(event, "pushOpen") | it_push_openct | Iterable Open Push Count | int |
count(event) | IF eq(event, "pushSend") | it_push_sendct | Iterable Send Push Count | int |
email(email) | email unique id | Email Address | string | |
emaildomain(email) | email_domain | Email Domain | string | |
map(experience_id, 1) | IF eq(event, "pushOpen") | it_conversions | Converted on Iterable Experience | map[string]int |
map(experience_id, 1) | IF eq(event, "pushSend") | it_impressions | Reached with Iterable Experience | map[string]int |
max(epochms()) | IF eq(event, "pushBounce") | it_last_push_bounce_ts | Iterable Last Push Bounce | date |
max(epochms()) | IF eq(event, "pushOpen") | it_last_push_open_ts | Iterable Last Push Open | date |
max(epochms()) | IF eq(event, "pushSend") | it_last_push_send_ts | Iterable Last Push Send | date |
max(epochms()) | IF eq(event, "pushUninstall") | it_unsub_ts | Iterable Unsub Date | date |
max(epochms()) | IF eq(event, "pushOpen") | last_active_ts | Last Active | date |
min(epochms()) | IF eq(event, "pushBounce") | it_first_push_bounce_ts | Iterable First Push Bounce | date |
min(epochms()) | IF eq(event, "pushOpen") | it_first_push_open_ts | Iterable First Push Open | date |
min(epochms()) | IF eq(event, "pushSend") | it_first_push_send_ts | Iterable First Push Send | date |
set(campaignId) | it_campaigns | Iterable Campaigns IDs | []string | |
set(campaignName) | it_campaign_names | Iterable Campaigns | []string | |
set(channelId) | it_channels | Iterable Channels | []string | |
set(messageId) | it_messages | Iterable Messages | []string | |
set(messageTypeId) | it_message_types | Iterable Message Types | []string | |
set(oneof(deeplink_ios, deeplink_andriod)) | it_push_deeplink | Iterable Push Notification Deeplink | []string | |
set(templateId) | it_templates | Iterable Template IDs | []string | |
set(templateName) | it_template_names | Iterable Templates | []string | |
set(workflowId) | it_workflow_ids | Iterable Workflow IDs | []string | |
set(workflowName) | it_workflow_names | Iterable Workflow Names | []string | |
valuect(event) | it_event | Iterable Events | map[string]intsum | |
valuect(hourofday()) | IF eq(event, "pushOpen") | it_mobile_hourlyopen | Iterable Hourly Mobile Events | map[string]intsum |
valuect(hourofweek()) | IF eq(event, "pushOpen") | it_mobile_hourofweek | Iterable Hour of Week Mobile Events | map[string]intsum |
valuect(yymm()) | IF eq(event, "pushOpen") | it_mobile_monthly | Iterable Mobile Events By Month | map[string]intsum |
Stream: iterable_sms_activity
The following fields are included in the default mapping of the iterable_sms_activity
stream:
Source Field | Conditional | Lytics User Field | Description | Type |
---|---|---|---|---|
count(event) | IF eq(event, "smsBounce") | it_sms_bouncect | Iterable Bounce SMS Count | int |
count(event) | IF eq(event, "smsReceived") | it_sms_receivedct | Iterable Open SMS Received | int |
count(event) | IF eq(event, "smsSend") | it_sms_sendct | Iterable Send SMS Count | int |
email(email) | email unique id | Email Address | string | |
emaildomain(email) | email_domain | Email Domain | string | |
map(experience_id, 1) | IF eq(event, "smsReceived") | it_conversions | Converted on Iterable Experience | map[string]int |
map(experience_id, 1) | IF eq(event, "smsSend") | it_impressions | Reached with Iterable Experience | map[string]int |
max(epochms()) | IF eq(event, "smsBounce") | it_last_sms_bounce_ts | Iterable Last SMS Bounce | date |
max(epochms()) | IF eq(event, "smsReceived") | it_last_sms_received_ts | Iterable Last SMS Received | date |
max(epochms()) | IF eq(event, "smsSend") | it_last_sms_send_ts | Iterable Last SMS Send | date |
max(epochms()) | IF eq(event, "smsOpen") | last_active_ts | Last Active | date |
min(epochms()) | IF eq(event, "smsBounce") | it_first_sms_bounce_ts | Iterable First SMS Bounce | date |
min(epochms()) | IF eq(event, "smsReceived") | it_first_sms_received_ts | Iterable First SMS Received | date |
min(epochms()) | IF eq(event, "smsSend") | it_first_sms_send_ts | Iterable First SMS Send | date |
set(campaignId) | it_campaigns | Iterable Campaigns IDs | []string | |
set(campaignName) | it_campaign_names | Iterable Campaigns | []string | |
set(channelId) | it_channels | Iterable Channels | []string | |
set(messageTypeId) | it_message_types | Iterable Message Types | []string | |
set(templateId) | it_templates | Iterable Template IDs | []string | |
set(templateName) | it_template_names | Iterable Templates | []string | |
set(workflowId) | it_workflow_ids | Iterable Workflow IDs | []string | |
set(workflowName) | it_workflow_names | Iterable Workflow Names | []string | |
toPhoneNumber | phone | Phone Number | string | |
valuect(event) | it_event | Iterable Events | map[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.
- Select Iterable from the list of providers.
- Select Import Audiences & Activity Data job type.
- Select the Authorization you would like to use or create a new one.
- Enter a Label to identify this job you are creating in Lytics.
- (Optional) Enter a Description for further context on your job.
- (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.
- (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.
- (Optional) If you would like users and their activity to be updated continually, select Keep Updated.
- (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.
- (Optional) If you would like to skip importing user event activity and just import users, select Skip Activity Event Import.
- Click Start Import.
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:
- Check if an existing list was selected, if not, create a new list with the name provided in the configuration.
- Run a backfill by creating or updating existing users in Iterable.
- After a backfill, the job will receive real-time updates when a user enters or exits the audience.
- 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]
. - For each user exiting the selected audience, the job will unsubscribe the user from the selected list.
- 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 Field | Description | Iterable Field | Type |
---|---|---|---|
Email Address | string | ||
configurable | Iterable User ID | userID | string |
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.
- Select Iterable from the list of providers.
- Select the Export Audiences job type from the list.
- Select the Authorization you would like to use or create a new one.
- Enter a Label to identify this job you are creating in Lytics.
- (Optional) Enter a Description for further context on your job.
- Select the audience(s) to export.
- From the List text input, choose the Iterable list to export to, or enter a name to create a new list in Iterable.
- (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.
- (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.
- (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.
- (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
()
. - (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.
- (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.
- (Optional) From the Include Lytics Audience Membership checkbox, select to include the user's audience membership as a data field called
LyticsAudiences
. - Click the Start Export button.
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.
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.
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:
- Target - select the target audience for your Experience.
- 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.
- 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.
- Open up the campaign in Iterable, and navigate to the Setup step.
- Under Send Lists, select the list you configured your Experience to sync to.
- Save your changes and proceed to the Launch step.
- Once you're ready to deploy, opt to Send Campaign Right Now or Schedule Campaign for Later.
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.
- Open up the workflow associated with your Experience in Iterable.
- Make sure your workflow Start When condition is set to Subscribed to List, and choose the list you configured for your Experience in Lytics.
- 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.
- Connect the nodes in your workflow, or add additional nodes for delay or additional logic.
- Save your workflow.
- Once you're ready to deploy, toggle the switch to enable users to begin receiving their Experience.
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.
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
- Email tactics:
-
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
- Email tactics:
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.
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:
-
Log into your Iterable account.
-
Navigate to Integrations > System Webhooks.
-
Click +CREATE WEBHOOK.
-
In the Endpoint URL box, enter:
https://api.lytics.io/collect/json/iterable?access_token=YOUR_API_TOKEN
whereYOUR_API_TOKEN
is your Lytics API token which can be generated in your account settings. -
Set the Auth Type to NoAuth by clicking the NoAuth radio button.
-
Click CREATE WEBHOOK.
-
Then scroll to the far right edge and click the EDIT button.
-
Click the Enabled checkbox.
-
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
-
Click 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.
- Ensure that the Iterable integration is importing audiences and activity data (default).
- Log in to Iterable and navigate to Templates > Templates and select your email template.
- Select Advanced Option tab.
- Select Enable Custom Link Parameters.
- Set the following in the custom parameters:
- Key =
encoded_email
- Value =
{{#base64}}{{email}}{{/base64}}
- Key =
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==
Updated 12 months ago