Campaigns in Customer.io

Campaigns in Customer.io are workflows of multiple messages which adapt to and send in response to user or data 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.

image.png
image.png

Trigger Types

When you create a campaign, we ask you What triggers this campaign? Your answer determines how, and when, people trigger your campaign.

Campaigns can have two different subjects: people and data.

A People campaign is a traditional messaging campaign: you trigger the campaign when a person meets certain criteria; they receive messages, attribute updates, etc.

A Data campaign is based on data from an external source, letting you transform that data, associate it with people—like Zapier or Segment but entirely within Customer.io. Because data, not people, is the subject of your campaign, data campaigns don’t typically send messages directly. Rather, they let you associate data with people—which can trigger subsequent campaigns.

Select a campaign trigger
Select a campaign trigger

People campaign triggers

They meet conditions lets you specify one or more segments that people are in or not in to trigger a campaign. Because segments have conditions determining who is in the segment, we call this a conditional trigger campaign. If you use this option, people enter your campaign as soon as they match the condition(s) defined by your segment. This option is best for things like recurring NPS surveys, onboarding drip campaigns, or inactivity reminders.

A particular date triggers a campaign on a specific or relative date based on an attribute in a person’s profile. Date triggered campaigns are useful for recurring cases such as birthdays, anniversaries, and subscription renewals.

They perform an event indicates an event triggered campaign. This kind of campaign helps you respond to a person’s activity in your app or website. They’re helpful for providing receipts, confirmations, etc.

They fill out a form indicates a Form triggered campaign. This kind of campaign lets you take advantage of form responses to trigger campaigns. You can connect a form to your workspace or have a Facebook Lead Ad integration. Use this type of campaign to send messages to new leads and try to convert them to customers or users.

Condition Trigger

Selecting the They meet conditions option indicates a condition-based trigger. We’ll prompt you to choose one or more segments that your audience is in or not in. If you haven’t created a segment yet, you can click Create a new data-driven segment to set conditions for a new segment.

Use the They Meet Conditions option to trigger a campaign
Use the They Meet Conditions option to trigger a campaign

You can set multiple segments using and or or conditions. Using and means that people need to match all the segments before they enter the campaign; Using or means that a person can be a member of any one segment to trigger your campaign.

Frequency

By default, people will enter condition-triggered campaigns once. If your campaign does not use a Filter, you can let customers enter your campaign multiple times with the Frequency setting.

When you enable the Frequency setting, you use one of these options to determine how often a person can re-enter your campaign:

  1. Every re-match: people must stop matching the trigger and filter conditions before they can match the campaign conditions and trigger the campaign 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.
    image.png
    image.png

  2. 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.

     This interval is measured beginning when a person enters the campaign

    Even if your campaign includes a delay, this the interval window begins when a person matches your campaign conditions.
    image.png
    image.png

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 date
  • before: Numbers of days prior to the recurrence date to trigger the campaign
  • after: 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.

 Attributes updated on the same day as the campaign

When you set the Person’s attribute value on the same day specified as the trigger, if it is set before the specified trigger time for the campaign, it will fire on that same day since the date in the attribute match the criteria and the trigger time has not passed yet.

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:

event-filter.gif
event-filter.gif

Need to match more than one event attribute value? Set the event attribute to match: “attribute contains/ does not contain value1|value2, like so:

image.png
image.png

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:

image.png
image.png

Choosing yes means that you can limit how many times people can move through campaigns. If you do so, you will have two options:

  1. 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.
image.png
image.png
  1. 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.
image.png
image.png

Data campaign triggers

When you set up a campaign and select the Data arrives via webhook option, you’ll get a webhook URL. You’ll provide this URL to the service that you want to collect data from.

the data campaign trigger exposes a webhook URL
the data campaign trigger exposes a webhook URL

This campaign runs whenever this URL is called. The data from your external service can take any shape. You’ll manipulate the data and associate it people as a part of your campaign. This lets you perform Zapier-like transformations on your data without having to build an integration.

Right now, you can’t filter or otherwise limit data campaign triggers within Customer.io. You’ll have to make sure that your external service is set up to call your data campaign’s webhook URL with a relatively uniform data set and only when you want it to call the URL.

Because data campaigns aren’t associated with people—at least not directly—they don’t have many of the options that you’ll see in people campaigns. They have a much more streamlined workflow: data comes in, you convert it to the format you want, and the campaign ends. You won’t set a Conversion goal, Frequency, etc.

Filters

While triggers decide when your people campaign begins, filters determine whether or not the person who triggered the campaign 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.

You cannot set a Frequency limit on campaigns that include filters.

 Note for event triggered campaigns

To enter your campaign, people must match both the event attribute filter and any segment filters within 30 minutes after the event occurred. When a triggering event is sent to us but it doesn’t trigger the event-triggered campaign, it will retry for approximately 30 minutes, giving the person a chance to match the filter criteria and enter the campaign within that time. This buffer allows for a very common situation where, due to internet latency or other such delays, we get the event before we get other qualifying data.

Workflows

The workflow is where you create the messaging experience or journey of the people that the campaign is sent to. For data campaigns, the workflow is where you’ll manipulate your incoming data and associate it with people or forward it to external services.

Here, you can add a variety of items—messages, webhooks, attribute updates, or time delays. Use these to set up your campaign. Each item has 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

When people enter your campaign, you can use data associated with them in Customer.io dynamically with liquidA syntax that supports variables, letting you personalize messages for your audience. For example, if you want to reference a person’s first name, you might use the variable {{customer.first_name}}.. You can reference people data in 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

  1. 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.
  2. 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.
  3. They can include attachments Deprecated. 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:

image.png
image.png

For each trigger type, they work a little differently:

  1. Condition-triggered campaigns start a journey as soon as the person matches the campaign’s trigger conditions.

  2. 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:

image.png
image.png

Each individual message can override this:

image.png
image.png

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 a message, 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 are tracked as a conversion.

In Customer.io, a conversion is both a goal and a metric. When a person meets the goal (by entering or exiting a segment), Customer.io looks for the last delivery before the conversion goal was met, and attributes a conversion to that delivery.

We track conversions against the following deliveries:

Conversions attributed Conversions not attributed
Email Slack Message
Twilio SMS Attribute update action
Customer.io Push Notifications
Webhooks1

1 You must enable webhook conversions manually.

Slack and attribute update actions are often internal or used for analytics purposes, and don’t always send messages to end-users. For that reason, we don’t attach conversions to them.

You can enable webhook conversions on individual webhook actions.

 We do not retroactively count conversions.

Our conversion numbers only include people who convert after you add (or update) the conversion goal. They do not include people who previously met that goal. Updating a conversion goal will not update your conversion metrics for messages that were previously marked as converted.

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.

However, you can override this behavior and determine the conditions that cause people to exit your campaign.

  1. People will move through the entire campaign People will only exit your campaign after they’ve completed their journey, even if they stop matching your campaign’s trigger conditions during their journey.

  2. People will exit when it’s time to send a message and any of the following are true This lets you set conditions that cause a person to exit your campaign early. You can select one or both conditions.

    • They meet the conversion goal If you set a conversion goal, this setting causes people to exit your campaign early when they meet the goal—they enter or exit the specified conversion goal segmentA segment is a group of people in your audience that you want to target with campaigns, messages, etc. You can join groups of people manually, or by attribues and event data.. With this option, you can choose whether a person should exit if they received a message from your campaign or not. You might use this setting to ensure that people only leave your campaign if you can attribute their conversion to the campaign.

    • They don’t match the campaign’s triggers Before we send a message to a person, we’ll check if they still match the campaign trigger. If they don’t, they won’t receive the message and will exit the campaign early.

set your campaign exit conditions to determine when people quit their journeys
set your campaign exit conditions to determine when people quit their journeys

Grace periods for exit conditions

For condition-triggered campaigns, if we notice that someone meets an an exit condition when we try to send someone a message, we pause 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, 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.

There is no grace periods 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:

image.png
image.png

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.

image.png
image.png

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.

stopping_a_campaign.png
stopping_a_campaign.png

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:

  1. Force People to exit immediately, or
  2. Allow People to finish their Journey and exit the Campaign naturally. The Campaign will be in a “Stopping” state until all People have exited.
    stopping_a_campaign_with_active_journeys.png
    stopping_a_campaign_with_active_journeys.png

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.

restarting a campaign.png
restarting a campaign.png

When restarting a Segment-triggered Campaign, there are two options for determining which people will enter the Campaign:

  1. 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.
  2. Future additions only. Choose this option if only People who match your Campaign trigger conditions after the Campaign is restarted should enter.
restarting_a_segment_triggered_campaign.png
restarting_a_segment_triggered_campaign.png

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.

archive_campaign.png
archive_campaign.png

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.

unarchive_campaign.png
unarchive_campaign.png

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.

delete_campaign.png
delete_campaign.png

When deleting a Campaign, all message content, settings, and report data will be removed.

 Deleting a Campaign is a permanent action

Deleting a Campaign cannot be undone. Make sure to save any important data or content before deleting a Campaign.
Copied to clipboard!