Campaigns in Customer.io
- 17 Minutes To Read
Campaigns in Customer.io are workflows of multiple messages which adapt to and send in response to user behaviour.
Creating a Campaign
The first step in creating a campaign is giving it a name, description, and adding any appropriate tags. Once you’ve done that, you must choose a trigger type. This is what defines the foundations of your campaign.
Trigger Types
When you create a campaign, we have three trigger types for you to choose from, each one based around specific use cases.
Campaigns with conditional triggers begin as soon as a person matches the condition(s). They’re best used for things like recurring NPS surveys, onboarding drip campaigns, or inactivity reminders.
When using date triggers, people enter campaigns based on a date attribute in their profile. This is most useful for recurring cases such as birthdays, anniversaries, and subscription renewals.
Event triggered campaigns are good for transactional use cases such as password resets, receipts, or confirmations.
You can take advantage of Form triggered campaigns if you set up a Facebook Lead Ad integration and have Active forms. Use this type of campaign to send messages to new leads and try to convert them to customers or users.
Condition Trigger
For condition triggers, you’ll be prompted to choose one or more segments that the person is IN or NOT IN:
Using AND means that people need to match all the segments before they enter the campaign. Using OR means that it's enough for a person to be part of any one of the segments in order to match.
Frequency
By default, people will enter condition-triggered campaigns once. We do, however, ask if you want to allow them to enter multiple times:
Choosing yes means that people can move through the campaign multiple times. There are two different ways the campaign can recur:
- Every re-match:
people must stop matching the trigger and filter conditions in order to match again. For example, if you’d like a customer to get a nudge if they’ve been inactive for two weeks, the trigger condition would be a segment which catches people who have not logged into your app for two weeks. When people enter that segment, they’re sent a message by your campaign. If this campaign is set to re-match, they will have to exit and then re-enter that segment (become active, then become inactive again) in order to trigger the campaign again.
- At fixed intervals:
People will repeat the campaign at a set interval, provided they still match the conditions when the interval elapses. A good example of this is a campaign reminding a user to update their payment information in your system to ensure they receive their next subscription box. As soon as a failed payment comes through, you can send them a reminder to update. An interval of seven days means that if they've still not updated it seven days later, they'll enter the campaign again.
Changing frequency
Re-match to off: After the change, people will only enter the campaign once. Anyone who might have re-entered in the future will no longer do so.
Re-match to fixed interval: Only new people who match your settings will restart. This does not apply to people who have already been through the campaign.
Fixed interval to off: Any people who are scheduled to re-enter this campaign will not do so, but those who are already in the campaign will continue their journey.
Interval to re-match: People who are scheduled to re-start your campaign will not do so. They will need to stop matching the trigger conditions and re-match them to enter again. Those who are already in the campaign will continue their journey.
Date Trigger
When setting up a campaign that's triggered by a particular date, there are four things you need to choose. Once you've picked an attribute, a preview panel will be shown that lets you test your choices with people from your workspace.
#1: How often the campaign should recur
There are three options for recurrence frequency:
Only once, on this date
: This option looks at the entire date, including month, day, and year to determine when the campaign should be triggered. This date must be in the future in order for the campaign to be triggered.Every month
: This option triggers the campaign once per month on the day of the month specified by the date attribute. The month and year are ignored. For example, if the date attribute is June 5th, 1977, the campaign will trigger every month on the 5th. If the current month doesn't include that day (e.g. there is no September 31st) then Customer.io will send on the last day of the month.Every year
: This option triggers the campaign once per year on the month and day specified by the date attribute. The year is ignored. For example, if the date attribute is June 5th, 1977, the campaign will trigger once per year on June 5th.
#2: Whether the campaign should trigger on the date, or at an offset before or after
on
: Trigger the campaign on the recurrence datebefore
: Numbers of days prior to the recurrence date to trigger the campaignafter
: number of days after the reccurence date to trigger the campaign
#3: The attribute used to determine when to trigger the campaign
Customer.io will schedule the campaign based on the date value in this attribute. The attribute must contain a date in either Unix timestamp or ISO 8601 format. If the format isn't recognized or the attribute isn't present for a person, then they will never trigger the campaign.
Let's say today is July 1st, 2020 and you update a Person's value for the trigger attribute to July 1st. If the time specifed in the trigger condition has already passed, the Person will not trigger this campaign today. For the campaign to be triggered, the attribute value must be set before the specified trigger time for the campaign. For example, if the campaign is supposed to trigger at 1pm on the date, then the campaign will not trigger if the attribute is updated at 2pm on the same date.
#4: Time of day the campaign should trigger
Finally, you need to choose the time on the recurrence date that the campaign should trigger. The time stored in the date attribute will not be used to determine when the campaign is triggered.
If you're storing the timezone
attribute for your customers, then you can select the user's time zone
rather than choosing a single time zone to use when triggering the campaign.
Event Trigger
From the dropdown, choose the event that you want to use to trigger your campaign. The preview will show any recent occurrences of the event.
Event filters
If you have a particular event attribute you want to use as a filter (e.g., if you only want to target people who bought a specific product), click and add your attribute filter either by clicking on "Add as filter" next to the desired attribute in the event preview, or by adding it manually:
Need to match more than one event attribute value? Set the event attribute to match: "attribute contains/ does not contain value1|value2, like so:
Event-triggered Frequency
By default, these campaigns will send each time the event is received. We do, however, ask if you want to set a limit here:
Choosing yes means that you can limit how many times people can move through campaigns. If you do so, you will have two options:
- Once ever: people will only receive the campaign the first time they perform the event. For example, if you'd like to congratulate someone the first time they complete a lesson in your eLearning app, you can use this setting. This way, you'll ensure they don't receive the email again once they're a seasoned student and flying through lessons regularly.
- At most once within a given time period: people will only receive the campaign once within a time period of your choosing. For example, you want to send an email to someone when they receive notifications in your app. You only want them to receive the email once a day, regardless of how many application notifications they receive. Setting Frequency to “at most once within 24 hours” will ensure that, no matter how many new notifications people get, they will only get an email once.
Filters
While triggers decide when a campaign begins, filters determine whether the person should actually enter the campaign. For example, you might want to send a message when someone views the pricing page (trigger), but want to make sure you only message the ones who don't already have a paying plan (filter).
Filters are evaluated right before sending any message, working as a confirmation step to make sure the right people stay in your campaign workflow. You can read up here on the differences between the two.
Workflows
The workflow is where you create the messaging experience or journey of the people that the campaign is sent to.
Here, you can add a variety of items— messages, webhooks, attribute updates, or time delays. Use these to set up your campaign. Each item will also have its own settings, such as:
- Sending behaviour— whether or not the message sends automatically, queues a draft, or doesn’t send at all
- Send to unsubscribed/tracking for that individual workflow item (more on that below)
- The option to turn the message into an A/B test. We have documented how to create a conclusive A/B test result, as well as how to understand A/B test results.
Customer data
For all of the people who enter your campaign, you will have all of their data available to use dynamically via Liquid. Whatever data you may be sending for a particular person, it’s available for you to use using the format:
{{customer.data}}
For example, if you’re sending us a customer’s name using the attribute full_name, you can utilize it like this:
Hi, {{customer.full_name}}
!
You can also perform more complex operations using the data you send; we have more comprehensive information here.
Event attributes
A few things to remember when using event attributes
- They can be used in message content
You can use all of the data you send with an event in your messages. For example, if you send us a purchase event with the following data:
{"name":"purchase","data":{"price": "9.99", "product": "socks", "color":"blue"}}
You can send a receipt email (or push notification, or SMS, or any other action) with the product's name, price, and color in it. Whatever you send in the event attributes is available to you; you can learn more about using event data here. - They can override certain email headers
If you send any of these attributes as part of your event, they will override your campaign settings:
from_address
,recipient
,reply_to
For example: If a purchase event triggers an email to send, but that purchase event contains recipient = wile.e.coyote@example.com as an attribute, then all emails triggered by that campaign will go to wile.e.coyote@example.com, no matter the settings in the campaign itself. They can include attachmentsDeprecated. Use the Transactional API to send emails with attachments. Here's an example using a calendar .ics file.
Journeys
At Customer.io, we use Journeys to show the movement of people through a campaign. For each person, you can find these in the Journeys tab:
For each trigger type, they work a little differently:
-
Condition-triggered campaigns start a journey as soon as the person matches the campaign's trigger conditions.
-
For event-triggered campaigns, a journey starts when we receive an event that matches the campaign's trigger conditions. However:
- If the person does not meet the filter conditions when we receive the event, we will retry the event for up to 30 minutes.
- If the person still does not match the filter conditions after those 30 minutes, a journey will not be started for them and they will not enter the campaign. If the person does match the filter conditions within those 30 minutes they will enter the campaign and start a journey.
This happens to prevent race conditions that often happen when profile attribute values are updated very close to the time the event is sent. Retrying the event helps us ensure that the right people will enter your event triggered campaigns, even when various network conditions or integration issues cause us to receive API calls in an untimely manner.
Unsubscribes
Sending or not sending to unsubscribed people can be set for the entire campaign or individual messages within it. You will see the setting on the campaign level here:
Each individual message can override this:
Please keep in mind that sending to unsubscribes should only be used in transactional, important cases.
Goal & Exit
Conversion Goal
Conversion tracking allows you to track the success of your email, so you'll want to choose a relevant segment (a person using a feature, a person signing up for a paid plan, a person no longer being inactive, etc.). If a person enters/exits that segment after being sent a message, they'll be tracked as a conversion.
In Customer.io, a conversion is both a goal and a metric. When a person meets the goal (by leaving or entering a segment), Customer.io looks for the last delivery before the conversion goal was met, and attributes a conversion to that delivery.
There are a couple of limitations to this, though:
Conversions attributed | Conversions not attributed |
---|---|
Slack Message | |
Twilio SMS | Webhooks |
Customer.io Push Notifications | Attribute update action |
Urban Airship Push |
Slack, Webhook, and attribute update actions are often internal or used for analytics purposes, and aren't always sending messages to end-users. For that reason, we don't attach conversions to them.
Exit Conditions
By default in Customer.io, people leave a campaign if they no longer match your trigger and filter conditions when it's time to send them a message. This is what is selected for you on this page.
However, you can override this default and specify if people should leave a campaign when:
- Exit only when complete
If you'd like your customers to move all the way through your campaign and only exit on completion (after they've received all the relevant messages), simply select the first option.
- Exit on conversion
If you'd like them to exit when they meet your conversion goal, select the following:
- Leave if they stop matching OR meet the conversion goal
And finally, if you'd like them to leave when they meet the conversion goal or stop matching, select both of the options.
If you choose a conversion goal as an exit condition, you'll need to define your goal before you can save.
Journey and Exit Conditions
Your exit condition settings will be reflected in the campaign’s journey.
For condition-triggered campaigns, if we notice such an exit condition is met when we try to send someone a message, we hit pause on their journey and allow time for them to stop meeting the exit condition. After that time period is up, if they no longer meet the exit condition then they will continue on in their journey through the workflow. This period of time is called a grace period which can vary in length. You can read more about grace periods here.
Note that there are no grace periods, at all, for event-triggered campaigns.
Review
Once you’ve set up your campaign, the Review page will allow you to look over all of your settings once more before you get started. We’ll also surface any errors here.
In the case of a condition-triggered campaign, you’ll have the option to send to any existing matches. For other trigger types, this is not the case.
Forward-looking behaviour
Condition-triggered campaigns can be made retroactive, meaning that they allow people to be included even if they matched the trigger segments more than 24 hours before the campaign was created).
In other words, if you started a condition triggered campaign today, but want to include all the people who matched your trigger and filter conditions before the campaign was created, you can choose to do so on the Review page when you start the campaign:
We can't force an event triggered campaign to send to people who performed the event in the past. You can create a segment triggered campaign based on your specific event, but you won't be able to include any event attributes in your content.
Metrics & Reporting
Once a campaign is running, you can see the metrics on the overview page. From there, you can export them to a CSV.
The export will reflect the dropdowns selections for ‘Volume’. If you’ve selected ‘All emails’ for ‘last 30 days,’ for example, that’s what will be exported.
We also provide Email Webhooks to send email performance data from Customer.io to a URL you specify in order to receive information about events as they occur in real time. Customer.io sends the information as JSON in an HTTP POST. Read more about setup here.
You can also use Customer.io with Mixpanel or Kissmetrics.
Working with Campaigns
Stop a Campaign
To stop a Campaign, click into the individual Campaign and select "Stop" from the "Campaign Actions" dropdown menu near the top right corner of the page.
Once a Campaign is stopped,
- Users will no longer enter the Campaign.
- The Campaign workflow, triggers, goals, and exit conditions can still be edited.
If the Campaign has active Journeys in progress, you will have two options for how to handle People who are in the middle of their Journey through the Campaign's Workflow:
- Force People to exit immediately, or
- Allow People to finish their Journey and exit the Campaign naturally. The Campaign will be in a "Stopping" state until all People have exited.
Restart a Campaign
To restart a Campaign, click into the individual Campaign and select "Restart" from the "Campaign Actions" dropdown menu near the top right corner of the page.
When restarting a Segment-triggered Campaign, there are two options for determining which people will enter the Campaign:
- Current People and future additions
Choose this one if all People currently in the trigger conditions should enter. This includes any People currently in the trigger Segment, but will also take your Campaign frequency settings into account. - Future additions only.
Choose this option if only People who match your Campaign trigger conditions after the Campaign is restarted should enter.
Archive a Campaign
To archive a Campaign, click into the Campaign and select "Archive" from the "Campaign Actions" dropdown menu near the top right corner of the page.
Once a Campaign is archived,
- Users will no longer enter the Campaign.
- Any users currently in the Workflow will be forced out of the Campaign.
- Any unsent Drafts in the Campaign will be removed.
- A/B tests will automatically be paused.
- The Campaign Workflow, triggers, goals, and exit conditions will no longer be editable.
Emails from archived Campaigns will still appear in the Existing Emails section when adding new email content. Campaign Workflows from archived Campaigns will still be searchable and copy-able into new Campaigns. To remove archived content and prevent archived Workflows from being reused in the future, delete the Campaign instead.
Unarchive a Campaign
To unarchive a Campaign, click into the Campaign and select "Unarchive" from the "Campaign Actions" dropdown menu near the top right corner of the page.
When a Campaign is unarchived,
- The Campaign will move to the Active tab and be updated to "Stopped".
- Any archived Segments used in the Campaign triggers, filters, goals, and exit conditions will be unarchived along with the Campaign.
Delete a Campaign
To delete a Campaign, click into the individual Campaign and select "Delete" from the "Campaign Actions" dropdown menu near the top right corner of the page.
When deleting a Campaign, all message content, settings, and report data will be removed.
Deleting a Campaign cannot be undone. Make sure to save any important data or content before deleting a Campaign.