Campaigns in Customer.io

Campaigns in Customer.io are workflows that send people messages and perform other actions when people meet certain criteria. This page describes the basic aspects of campaigns to help you get started.

How it works

A campaign is a workflow to send messages or otherwise manipulate data in Customer.io, and it consists of three major components:

  1. Trigger: this determines who enters your campaign and when. Along with your trigger, you can set filter and frequency settings refining who can enter your campaign and how often.
  2. Workflow: the messages you want to send and other activities you want to perform for people who enter your campaign.
  3. (Optional) Goal and exit conditions: The outcome you want to achieve from the campaign and the reasons people might leave your campaign early. You don’t need to define a goal, but it can be helpful to gauge the success and health of your campaigns.

Your campaign starts when someone (or some data) matches your trigger condition. Then they move through your workflow until they meet your goal and exit conditions.

flowchart LR a{Does a person meet
trigger conditions?}-->|yes|c{Does person meet
filter conditions?} a-.->|no|i[person doesn't
enter campaign] c-.->|no|i c-->|yes|j subgraph b [Your campaign] direction TB j{Does person meet
goal/exit conditions?}-->|no|d[Send message] d-->f{Does person meet
goal/exit conditions?} f-->|no|g[Send message] end j-.->|yes|e[exit campaign] f-.->|yes|h[exit campaign] g-->|Person finishes
campaign|k[exit campaign]

Campaign triggers

Your campaign trigger determines who (or what) enters your campaign and when. Most triggers are based around people: people enter your campaign when they match certain criteria, and these people are the subject of your campaign—you’ll send them messages, set their attributes, and so on.

Select a campaign trigger
Select a campaign trigger
  • When a person moves in or out of a segment lets you create a segment or specify existing segmentsA 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. that people must be in (or not in) to trigger a campaign. You can set segment criteria based on your audience’s attributes, events, etc. This option is best for things like recurring NPS surveys, onboarding drip campaigns, inactivity reminders, and so on.

  • When someone performs an eventSomething that a person in your workspace did. Events can trigger campaigns, add people to segments, etc. You can access event properties in liquid with {{event.<property>}} helps you respond to a person’s activity in your app or website. They’re helpful for behavioral messages like abandoned cart reminders and responding to page views or transactional messages like receipts and confirmations.

  • When a specific date occurs triggers a campaign on a specific or relative date based on an attributeA key-value pair that you associate with a person or an object—like a person’s name, the date they were created in your workspace, or a company’s billing date etc. Use attributes to target people and personalize messages. that people in your audience have. You can trigger based on any customer attributes that are properly formatted dates. This is useful for recurring campaigns like birthdays, anniversaries, subscription renewals, and payment reminders.

  • When someone submits a form lets you take advantage of form responses to trigger campaigns. You can connect a form to your workspace or integrate with Facebook Lead Ads. Use this type of campaign to send messages to nurture new leads or respond to support requests.

Create your own trigger from a webhook creates a special, webhook-triggered campaigns based around data rather than people. The purpose of your campaign is to manipulate this data and associate it with people—like Zapier or Segment, but entirely within a campaign. Because data, not people, is the subject of your campaign, webhook-triggered campaigns don’t typically send messages directly; rather, they let you associate data with people, which can trigger subsequent campaigns.

Webhook campaigns help you perform one-to-many interactions with your audience, like notifying a group of people when you post a job or a product becomes available that a cohort of your audience is interested in.

The Audience setting

If you’re using our Subscription Center feature, you’ll set your campaign’s topicA category of message, set within your workspace’s subscription center, that people can subscribe to or unsubscribe from. Topics let your audience determine the kinds of messages they want to get from you. in the Audience setting. If people are unsubscribed from the topic, they won’t get messages from the campaign. If your campaign includes non-message actions (like Create or Update Person actions to update attributes) those actions will still apply to people who aren’t subscribed to the topic.

set the topic for a broadcast
set the topic for a broadcast

If you don’t want to set a topic, you can use the All Subscribed and Unsubscribed people setting. You should use this setting sparingly—for things like transactional-style campaigns and important notices. Sending messages to unsubscribed people can violate their trust—or even violate local laws and regulations (GDPR, CAN-SPAM, etc)!

Workflows

The workflow is where you create the messaging experience or journey of the people that the campaign is sent to. For webhook-triggered 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.

Journeys

When a person enters a campaign, they start a journeyA person or data object’s path through your campaign.. We use Journeys to show where your audience is in a campaign. You can find journeys and see where people are in your campaign in the Journeys tab:

image.png
image.png

Journeys work a little differently depending on your campaign’s trigger:

  1. Segment-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 matches your filter conditions within 30 minutes they enter the campaign and start a journey. Otherwise, they don’t enter the campaign or start a journey.

We do this because you can set filters using a customer’s attributesA key-value pair that you associate with a person or an object—like a person’s name, the date they were created in your workspace, or a company’s billing date etc. Use attributes to target people and personalize messages. while the trigger is based on an event. The 30-minute retry prevents race conditions that can occur when you update a person’s attributes close to the same time as the campaign trigger event. 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

You can decide whether to send to unsubscribed people across the entire campaign or for individual messages. At the campaign level, you set this within the workflow settings.

For a message, you set this by selecting the message in the workflow and editing its settings:

Select a message from the workflow canvas. A panel on the left contains a dropdown field for Sending to Unsubscribed.
Select a message from the workflow canvas. A panel on the left contains a dropdown field for Sending to Unsubscribed.

Goal & Exit

Your campaign’s conversion goal helps you track the success of messages and journeys based on whether or not a person performs an event, enters a segment, or exits a segment after they receive a message. If a person performs your goal criteria within a configurable time frame of a message in your campaign, the messageThe instance of a message sent to a person. When you set up a message, you determine an audience for your message. Each individual “send”—the version of a message sent to a single member of your audience—is a delivery. and journeyA person or data object’s path through your campaign. are marked converted. You can set goals to determine the success of your campaigns and messages, and follow conversion rates over time to try and improve your messaging strategies. See Conversion goals and exit criteria for more information about conversions.

We track conversions for the following message/delivery types:

Conversions attributedConversions not attributed
EmailSlack Message
Twilio SMSCreate or update person action
Customer.io Push Notifications
Webhooks1
1You must enable webhook conversions manually.

Slack and Create or update person 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.

Exit Conditions

By default in Customer.io, people leave a campaign when they stop matching your trigger and filter conditions. However, you can override this behavior and determine the conditions that cause people to exit your campaign.

We evaluate exit conditions before people enter your campaign and before messages in your workflow. If someone meets the exit conditions, they’ll leave the campaign before they receive the next message in the campaign. If people already meet your exit criteria when they trigger the campaign, they’ll exit your campaign immediately, without going through any part of the campaign workflow!

If a person receives a message and then meets your exit criteria, they’ll continue through the campaign and any Create or Update Person, Create Event, or other actions until they reach the next message in the campaign.

For example, if your campaign notifies a person about items they left in their shopping cart, you probably don’t want to keep sending them reminders if they purchase the items in their cart. You can set people to exit the campaign if they’ve completed their purchase (the goal, in this case) before the next follow-up message.

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

Early exit conditions include:

  • They achieve the goal: When you set a conversion goal, this setting causes people to exit your campaign when they perform the conversion action (your audience performs an event, enters a segment, or leaves a segment)—even if they haven’t received a message from the campaign yet.

  • They stop matching the trigger segment or filters: If a person stops matching the campaign criteria, they’ll exit the campaign before they reach the next message in the campaign workflow.

  • They achieve the goal or they stop matching the trigger segment or filters: If you set a conversion goal, a person exits the campaign if they either perform your conversion action or they stop matching the campaign’s trigger criteria—even if they haven’t received a message from the campaign yet.

  • People don’t exit early, they move through the entire workflow: People won’t exit your campaign early. They’ll complete their entire journey, even after they meet your goal or stop matching your campaign’s trigger conditions during their journey.

 Conversion goal timing does not affect exit criteria

If you set a conversion goal, you can use the conversion action as exit criteria. However, your exit criteria is independent of the conversion goal time frame. For example, if your conversion goal is to enter a segment, people who enter the campaign but already belong to the conversion segment will exit your campaign immediately—before they ever receive a message—and the journey won’t record a conversion.

Grace periods for exit conditions

For segment-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.

Reviewing your campaign

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 segment-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

Segment-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 segment-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 view reports and export them to CSV from the Metrics tab.

Within a Campaign, select Metrics beneath the campaign title. On the right hand side, there is a dropdown to export reports.
Within a Campaign, select Metrics beneath the campaign title. On the right hand side, there is a dropdown to export reports.

The export will reflect the dropdown selection: All time metrics, Message, or Journey. If you select ‘Message’ for the ‘last 30 days,’ for example, this is the data the export will contain.

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.

Liquid and customer data in campaigns

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.

Stopping, editing, and deleting 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

Stopping a campaign prevents users from entering the campaign. While the campaign’s stopped, you can edit it. And messages that were already sent from the campaign will continue to generate metrics normally.

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. In this case, we stop sending messages to anybody who was already in the journey and recall in-app messages that haven’t been seen (opened) yet. See the section below for more information.
  2. Allow People to finish their Journey and exit the Campaign naturally. Your campaign will sit in a Stopping state until all People have exited the campaign, and then it’ll switch to Stopped.
    stopping_a_campaign_with_active_journeys.png
    stopping_a_campaign_with_active_journeys.png

What happens to messages when people exit immediately?

When you stop a campaign using the Exit Immediately option, we’ll stop sending messages immediately. But all emails, SMS messages, push notifications, webhooks, and slack messages that are already Sent are likely to be delivered to your audience. We don’t control the delivery providers for these message types, so we can’t easily recall these messages after they’re sent.

In-app messages are an exception to this rule: any in-app messages that have been “Sent” but not “Opened” are recalled. We control the delivery mechanism for these messages, so we can stop them before they make it to your audience.

flowchart LR a(Stop campaign)-->b{Set to exit
immediately?} b-.->|no|c(People with an active journey
keep receiving messages) b-->|yes|d{Will sent messages
be delivered?} d-->|email, push, SMS,
Slack, and webhooks|e(Normal delivery) d-.->|In-app messages|f(Cancelled)

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!
  Contents
Is this page helpful?