For example, order confirmations and password reset emails are triggered campaigns of a transactional nature, while emails or push notifications sent after users look at a particular product or section of a website are marketing-focused triggered campaigns.
This guide describes how to create and send a triggered campaign.
Table of contents
- Step 1: Set up the campaign
- Step 2: Choose a template
- Step 3: Edit and preview the template
- Step 4: Turn on Send Time Optimization (optional)
- Step 5: Turn on Quiet Hours (optional)
- Step 6: Set a send rate limit (optional)
- Step 7: Activate the campaign
- Step 8: Trigger the campaign
- Step 9: Monitor your campaign results
- Viewing past sends of triggered campaigns
- Viewing scheduled sends of triggered campaigns
- Journey campaigns
- Further reading
To work with campaigns in Iterable, you'll need various permissions:
To view your project's campaigns, you must have the Workflows, Campaigns & Experiments > View permission.
To draft a campaign, you must have the Workflows, Campaigns & Experiments > Draft permission.
To activate a triggered campaign, you must have the Workflows, Campaigns & Experiments > Activate & Manage permission.
To create and activate a triggered campaign, follow these instructions:
Step 1: Set up the campaign
To create and configure a triggered campaign, navigate to Messaging > Campaigns and click New Campaign:
Then, on the New Campaign page:
Specify a Campaign Name (this value is for your reference only, and can help you locate the campaign in the future).
Select Conversion events if you want to track how many and which events contribute to conversions for this campaign. See Track custom conversions.
Select Labels to apply to the campaign if you want to tag it for easier searchability in your project. See Adding Labels to Your Campaigns.
For Campaign Type, select Triggered.
Choose a Message Medium.
For an in-app message campaign, set Display Priority to Critical, High, Medium or Low:
This setting influences the order that users will see your in-app messages. Iterable's mobile SDKs sort the display of in-app message campaigns by priority (greater priority messages first), and then by send time (first sent, first displayed).
- Since transactional messages are sometimes urgent or sent as a response to a user's action (for which they may need confirmation or more details), you should generally give transactional campaigns a greater priority than marketing campaigns.
- You cannot change an in-app message campaign's priority after it has been sent. However, you can update the priority of a scheduled campaign before its send time.
- This value is reflected on the message's
priorityLevelfield, which is saved as a double on the message's
priorityLevelfield. You can use this in segmentation, for example, by searching for in-app send events that have
priorityLevelset to low (
400.5), medium (
300.5), high (
200.5) or critical (
100.5). Proofs receive an in-app priority of
- For more information about this feature, see its release notes.
To send a triggered in-app message or push notification campaign to only some of your mobile apps (rather than all of them), enable Selective In-App or Selective Push. Then, choose the specific apps to which you'd like to send the campaign. When you trigger the campaign to a particular user, Iterable will only send them the campaign if they've installed any of those apps.
- With Selective In-app disabled, Iterable sends triggered in-app message campaigns to triggered users regardless of whether or not they've installed any apps that will display them.
- With Selective Push disabled, Iterable sends triggered push notification campaigns to triggered users only if they've installed any app associated with any push integration defined in your project.
- When enabling Selective In-App or Selective Push, you can only select apps that have a valid push integration.
To choose content for the campaign, click Continue to Templates.
Step 2: Choose a template
On the Template step of the campaign creation process, you can select a pre-existing template or campaign on which to base the new campaign (you can edit the new campaign before sending it, and changes won't impact the original). Alternatively, you can start the new campaign from scratch.
To base your new campaign on one of your project's reusable templates, select the Templates tab and pick the template you'd like to use.
To base your new campaign on a previous campaign, select the Campaign Content or Journey Content tab and choose the campaign you'd like to use.
To search for a campaign, enter its name or an ID in the search input.
After you've selected a template or campaign (or if you've decided not to), click one of the buttons at the bottom of the page:
Use Selected Template (or Use Selected Content) copies the selected template or campaign content into your new campaign, so that you can edit it without impacting the original.
Pre-populate Selected Template with Data Feed (or Pre-populate Selected Content with Data Feed) causes Iterable to make a single request to an external data feed and merge the returned data into the selected template or campaign, overwriting any Handlebars expressions the data can resolve.
Iterable makes this data feed query once, as you're creating the campaign. However, Iterable also supports per-recipient data feed queries, as described in Personalizing Templates with Data Feeds.
Start from Scratch allows you to select a template editor (and, if you'd like, a pre-built layout), and start your campaign's content with a blank slate.
Step 3: Edit and preview the template
The Design step allows you to create the content for your campaign and preview it.
To edit the details and design of this campaign, use the Edit details and Edit design buttons.
To learn about the editing and previewing options available for each message medium, see:
- Creating Email Templates
- Creating In-App Templates
- Creating Push Notification Templates
- Creating SMS Templates
- Creating Web Push Templates
You can also use the overflow menu (three vertical dots) to complete additional tasks.
To copy this template within this project or to another project, click Make a copy.
If you choose to copy a template within the current project, you'll find the copied template on the Content > Templates page.
For email campaigns, you can also export the HTML, generate a spam report, and preview the content in a new tab.
For in-app campaigns, you can also export the HTML.
To personalize this content for each of your campaign's recipients, you can use:
- Handlebars expressions to reference data from a user's Iterable user profile (whether to display it directly or use it to show specific content to specific users).
- Data Feeds to call a a web service—once for each of the campaign's recipients—and display it in the message.
- Catalog to dynamically find and display information about your organization's relevant products or services that a given recipient might find interesting.
When you're done editing and previewing your template, click Continue to review, where you can enable Send Time Optimization and schedule or send the campaign.
Step 4: Turn on Send Time Optimization (optional)
On the Review & Launch page, you can activate your campaign. Before doing that, decide whether or not to enable Send Time Optimization (email and push notification campaigns only).
Send Time Optimization tries to automatically improve some particular campaign metrics:
- For email campaigns, it works to maximize the Email Open Rate (Unique Email Opens or Clicks / Total Emails Delivered) and Email Click Rate (Unique Email Clicks / Total Emails Delivered).
- For push notification campaigns, it tries to maximize the Push Open Rate (Unique Pushes Opened / Total Pushes Delivered).
To do this, it uses machine learning to analyze each recipient's historical engagement behavior (in the same Iterable project), and then chooses a send time when they're likely to open the message.
For more information about Send Time Optimization, read:
To enable Send Time Optimization for a triggered campaign:
Enable Send Time Optimization:
If Send Time Optimization isn't available, your Iterable project doesn't yet have enough historical engagement data to support the Send Time Optimization machine learning models. This is common for staging and test projects.
Specify the maximum number of hours (between 6 and 24) after a campaign triggering event that Send Time Optimization can send the corresponding message. Send Time Optimization optimizes send times at a one-hour granularity and sends messages at the top of the hour.
- If a triggering event specifies a specific send time (
sendAt), Iterable will not use Send Time Optimization for that send.
- You cannot disable Send Time Optimization after you activate the campaign.
Step 5: Turn on Quiet Hours (optional)
This feature is currently available in public beta. Want to give it a try? Reach out to your customer success manager to get started.
Quiet Hours lets you pause campaign sends during a specified time frame to avoid disturbing your users at inconvenient times. Consider turning this on for SMS campaigns or if you have users in multiple locales and time zones.
To turn on Quiet Hours in your campaign, switch on the Use quiet hours toggle on the Review and Launch page.
Step 6: Set a send rate limit (optional)
Send rate limits are a beta feature. To enable them, talk to your Iterable customer success manager.
To set a send rate limit for your campaign:
Next, you can decide whether or not to enable a send rate limit for your campaign:
A send rate limit can help prevent your website and servers from being overwhelmed with traffic when many of your contacts simultaneously interact with a message you've just sent. They can also help you mitigate deliverability issues that can occur when you are sending high email volumes.
There are three ways to set a send rate limit in Iterable:
- On each of your project's message types, you can set the default send rate limit that new campaigns associated with that type should use.
- When configuring a data feed, you can set a rate limit. Campaigns that query the data feed will respect the data fee a campaign that queries the data feed
- You can adjust the send rate limit on any given campaign, as you set it up (like you're doing in this step).
Some important things to remember about send rate limits:
- When you send multiple campaigns associated with the same rate-limited message type, they do not compete for the rate limit's capacity. That is, each campaign can independently send as fast as the rate limit you select for it when setting it up (with the default rate limit being the one defined on the message type).
- When you send multiple campaigns that access the same rate-limited data feed, they do compete for the rate limit's capacity. That is, the overall traffic to the data feed, across all campaigns, will not exceed the data feed's rate limit.
- When a campaign has a rate limit, Iterable does not necessarily send at that exact rate. However, it will not exceed the rate limit.
- If you enable both Send Time Optimization and a rate limit, it's possible that the rate limit will cause the sends to continue beyond the bounds of your Send Time Optimization window.
- In situations where more than one rate limit is applicable, Iterable uses the most restrictive limit
Step 7: Activate the campaign
For a triggered campaign to send a message, you must first activate it. To do this, on the Review & Launch page click the Activate Campaign button.
After you activate a campaign, it will be in the Running state, and you can trigger it by calling Iterable's API.
Step 8: Trigger the campaign
To send a triggered campaign, use Iterable's API:
POST /api/campaigns/trigger- Sends the specified campaign to the supplied lists of users.
POST /api/email/target- Sends a particular email campaign to the specified user.
POST /api/inApp/target- Sends a particular in-app message campaign to the specified user.
POST /api/push/target- Sends a particular push notification campaign to the specified user.
POST /api/sms/target- Sends a particular SMS campaign to the specified user.
POST /api/webPush/target- Sends a particular web push notification campaign to the specified user.
For example, you might trigger these APIs from your server when your contacts complete particular actions on your website.
To cause a triggered message to send at a specific time, its triggering event can
sendAt value. However, this disables Send Time Optimization for that
- To learn how to authenticate with Iterable's API, read API Keys.
- In order for users to receive push notification campaigns from Iterable, their user profiles must have a device token associated with your mobile app. Iterable's mobile SDKs (iOS, Android, React Native) populate these tokens when the users run the app.
To view a sample request for your triggered campaign, open it and click the Show Sample API Request link:
You'll see a sample request such as the following:
To execute this request, use curl. Be sure to populate it with an API key from your Iterable project first!
Step 9: Monitor your campaign results
After activating a triggered campaign, you can use Iterable to monitor its results and understand how your contacts are engaging with it.
To do this, navigate to Messaging > Campaigns and open the campaign. You'll see its Campaign Analytics page, where you can inspect various metrics about its performance.
For more information, see our support guide on Viewing Campaign Analytics.
Viewing past sends of triggered campaigns
To view past sends for your triggered campaigns, navigate to Insights > Logs > Sent Messages.
From here, you can see a list of sent messages, preview them, and resend them. To preview and resend, hover over the message and click the View and Resend links that appear.
When resending a message, Iterable uses the current version of the original message's template. Since that template may have been modified, the resend may look different than the original.
Viewing scheduled sends of triggered campaigns
To view message sends scheduled by a triggered campaign, navigate to Insights > Logs > Scheduled Messages.
To schedule the triggered campaign to send at a future time, include a
value in the body of the request to Iterable's API.
Use the delete buttons at the top of the page to delete scheduled sends.
It's also possible to send triggered campaigns from journeys, which are multi-step customer experiences that let you tailor your interactions with your contacts based on their interactions with your brand. To learn more about journeys, read the Journeys documentation.