Introduction to campaigns

Updated

Campaigns are automated 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.

If you’re new to Customer.io, checkout Campaigns, broadcasts, and transactional messages to make sure you’re creating the right kind of automation.

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 to refine who can enter your campaign and how often. Go to Triggers vs Filters for more info.
  2. Workflows: the messages you want to send and other actions you want to perform for people who enter your campaign.
  3. Goal and exit criteria: The goal is the outcome you want to achieve through the campaign. Exit conditions determine if people should leave your campaign early or not. 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 or data meet
trigger conditions?}-->|yes|c{Does person or data 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 or take action] d-->f{Does person meet
goal/exit conditions?} f-->|no|g[Send message or take action] 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 enters your campaign and when. Most triggers are based around people, like when they match certain criteria. Typically, these people are the subject of your campaign—you’ll send them messages, set their attributes, and so on.

The campaign trigger has a left hand column with a list of trigger categories including All Triggers, People, Object Types indicated by their names, Dates, and Webhooks. All Triggers is selected and shows a list of People triggers: segment change, event, and form submission.
The campaign trigger has a left hand column with a list of trigger categories including All Triggers, People, Object Types indicated by their names, Dates, and Webhooks. All Triggers is selected and shows a list of People triggers: segment change, event, and form submission.

Trigger options

You have seven types of triggers to choose from:

Segment change

Segment change lets you create a 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. or specify existing segments 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.

Event

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>}}-triggered campaign helps you respond to a person’s activity in your app or website. For instance, you could trigger a campaign based on a user abandoning their cart, viewing a specific page on your app, or completing an order.

Form submission

Form submission lets you take advantage of formConnected Forms in Customer.io allow you to automatically trigger campaigns, send data to other services, and add or update people when they submit forms on your website or in your app. 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.

Object updated

Use Object updated when you want people to enter the campaign every time an objectNot to be confused with a JSON object, an object in Customer.io is a non-person entity that you can associate with one or more people—like a company, account, or online course. You can use objects to message people based on changes to their company, account, or course itinerary. is updated in your workspace. For instance, if you were tracking accounts as objects and updated the name of one, you could notify everyone that managed the account that the account went through a rebrand. Keep in mind, only people enter into journeys, not objects.

You’ll see this as “Object_type_name updated” in your trigger list.

The object type Companies, one of the object types in the workspace, is selected. There are three trigger options: Company updated, Person added, and Relationship changed.
The object type Companies, one of the object types in the workspace, is selected. There are three trigger options: Company updated, Person added, and Relationship changed.

When you use objects to trigger campaigns, you can choose who enters into the campaign. The audience could be:

  • every person in the object
  • certain people related to the object
Relationship added or changed

A relationship is the association between an objectNot to be confused with a JSON object, an object in Customer.io is a non-person entity that you can associate with one or more people—like a company, account, or online course. You can use objects to message people based on changes to their company, account, or course itinerary. and a person. Use this trigger type when you want people to enter a campaign after their relationship to an object has changed. For instance, if you track accounts as objects, this could mean they joined an account (person added), or they are now a manager (relationship changed).

You’ll see this as “Person added” or “Relationship changed” in your trigger list.

The new campaign trigger selection page where Companies, one of the object types in the workspace, is selected. There are three trigger options: Company updated, Person added, and Relationship changed.
The new campaign trigger selection page where Companies, one of the object types in the workspace, is selected. There are three trigger options: Company updated, Person added, and Relationship changed.

When you use relationships to trigger campaigns, you can choose who enters into the campaign. That is, the recipient of the message in this kind of campaign doesn’t have to be the person in the relationship that triggered it. The audience could be:

  • the person whose relationship to the object is updated (default)
  • every person in the object
  • certain people related to the object
Important date

An important date triggers campaigns 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. Attributes are analogous to traits in Data Pipelines. 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.

Webhook

A webhook triggers a campaign based on data from an external service. The purpose of your campaign is to manipulate this data and associate it with people, much like you can with 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.

Settings

Subscription preference

If you use 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 Subscription preference setting. Keep in mind, subscription preferences only affect whether people receive a message, not whether they enter your campaign.

  • If people are unsubscribed from the topic, they won’t get messages from the campaign. They would, however, continue to receive in-app messages; subscription preferences apply to email, SMS, and push.
  • If your campaign includes non-message actions (like Create or Update Person), those actions will still apply to people who aren’t subscribed to the topic.
set the topic for a campaign
set the topic for a campaign

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)!

Goal & Exit

A conversion goal helps you track the success of a campaign based on whether a person performs an event, enters a segment, or exits a segment. If a person achieves your goal, we mark 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. as converted. Then you can track conversion rates over time to 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
Customer.io In-app Messages
Webhooks1

Slack and Create or update person actions are often internal or used for analytics purposes; they 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

Exit conditions determine if or when a person should exit your campaign.

These are your options for exit conditions:

  • They achieve the goal: This setting causes people to exit your campaign after they perform the conversion action (your audience performs an event, enters a segment, or leaves a segment) within a certain timeframe of receiving a message.

  • They stop matching the trigger segment or filters: If a person stops matching the trigger or filter criteria, see below for how we evaluate exit conditions.

    • For campaigns not triggered by a segment (event, form, etc.), triggers are not included in the exit criteria. This option will show as They stop matching the filters.
  • They achieve the goal OR they stop matching the trigger segment or filters: In this case, a person exits the campaign after they perform your conversion goal within a timeframe of receiving a message OR they stop matching the campaign’s trigger or filter criteria.

    • For campaigns not triggered by a segment (event, form, etc.), triggers are not included in the exit criteria. This will show as They achieve the goal or they stop matching the filters.
  • 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 or filter conditions during their journey.

How we evaluate exit conditions

We evaluate exit conditions before people enter your campaign and throughout their journeys based on whether there’s a goal, trigger, or filter to check.

  • If your exit conditions include triggers and filters, we check whether people stop matching them before actions (message delivery, attribute updates, manual segment updates, collection queries, create event actions, and batch updates).

    • For example, you may want to send product recommendations to people who have not performed a purchase event in the past 30 days. You want people to exit the campaign when they make a purchase. This means people would exit when they stop matching the trigger (has not performed a purchase recently), which we evaluate before the next workflow action.
  • If your exit conditions include goals, we check whether people achieve the goal criteria after actions that cause pauses in their journeys (wait until, time window, time delay, attribute updates, and collection queries).

    • For example, if your campaign notifies a person about items they left in their shopping cart, you may want them to exit after they purchase these items. You can set people to exit the campaign if they’ve completed their purchase (the goal, in this case). They would exit after the next pause in the workflow.
    set your campaign exit conditions to determine when people quit their journeys
    set your campaign exit conditions to determine when people quit their journeys

Journeys briefly pause when people meet trigger/filter exit conditions

Segment-triggered campaigns have grace periods

For segment-triggered campaigns, if someone meets a trigger or filter exit condition when they get to a workflow action, we pause their journey and allow time for them to stop meeting the exit condition. If they still meet the exit condition after that time period is up, they will exit. Otherwise, they will continue on their journey. This is called a grace period (which can vary in length). Learn more about grace periods.

Other campaigns have 30-min pauses

For event, object, relationship, and form-triggered campaigns, if someone meets a trigger or filter exit condition when they reach a workflow action, we pause their journey for 30-minutes. This pause ensures that we don’t send messages to people who have already met the exit condition. If they match the exit condition after 30 minutes, they will exit. Otherwise, they will continue their journeys.

Workflows

The workflow is where you craft your messaging experience and automate other actions that impact people moving through your campaign.

Here, you can add a variety of items—messages, webhooks, attribute updates, or time delays-to set up your campaign. Each item has its own settings, such as:

  • Sending behavior - whether or not the message sends automatically, queues a draft, or doesn’t send at all; we queue drafts by default
  • Tracking opens and clicks - whether or not to track opens and clicks for a message; this is on by default
  • Holdout test - a type of A/B test. Check out how to Create a conclusive A/B test result and how to Understand A/B test results for help.
  • Subscription preference setting - whether or not to use campaign settings or override them; this respects campaign settings by default

Journeys

When a person enters a campaign, they start a journeyA person or data object’s path through your campaign.. We use journeys to track people’s history through a campaign like the deliveries they’ve received, conversions, and when they entered/exited. You can find them in the Journeys tab of a campaign:

A running campaign is selected. The title in the top left reads Welcome Series. Under the title is a horizontal list of tabs. The last one on the right is selected and reads Journeys.
A running campaign is selected. The title in the top left reads Welcome Series. Under the title is a horizontal list of tabs. The last one on the right is selected and reads Journeys.

Journeys work a little differently depending on your campaign’s trigger and filter conditions. For any campaign, a journey will start after the campaign is triggered and there are no filter conditions. If the campaign has filter conditions, the following happens:

  1. For segment-triggered campaigns, a journey starts as soon as a person matches the campaign’s trigger conditions. The person does not have to match the campaign’s filter conditions.
  2. For campaigns triggered by an event, object, relationship, date or form, a journey starts after the trigger conditions AND filter conditions are met. Keep in mind:
    • If the person does not meet the filter conditions when we receive the event, we will retry 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.

The 30-minute retry prevents race conditions that can occur when you update attributes close to the same time as the campaign trigger event. Rechecking the filter conditions helps us ensure that the right people will enter your campaigns, even when various network conditions or integration issues cause us to receive API calls in an untimely manner.

Manually end a journey

You can end a journey for a person from the Journeys tab of a campaign or a person’s profile.

A running campaign is selected. The title in the top left reads Welcome Series. Under the title is a horizontal list of tabs. The last one on the right is selected and reads Journeys.
A running campaign is selected. The title in the top left reads Welcome Series. Under the title is a horizontal list of tabs. The last one on the right is selected and reads Journeys.

Click the journey you want to end. You can only end an active journey.

campaign-journeys-active.png
campaign-journeys-active.png

Then click End this journey on the right.

campaign-journeys-end-this-journey.png
campaign-journeys-end-this-journey.png

You can also get to this screen by clicking on a delivery in a campaign then selecting “View full journey.”

The journey will update to “Exited early.” And you’ll see this as the reason: “The person was manually removed from the campaign.” Manually ending a journey does not become an entry in the Activity Log.

Message settings

Select a message in your workflow, and the settings will appear in the left hand panel:

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.

Subscription preference

By default, your messages inherit your campaign settings. But you can change this within a message’s settings:

  • If you enabled the subscription center for your workspace, you can change this message to send to people subscribed to a different topic or all people in the campaign regardless of their subscription status.
  • If you have not enabled the subscription center, you can change this to send to all subscribed or all people regardless of their subscription status.

 Abide by your audience’s local laws

Review your campaign

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

The fifth step review is selected at the top of the campaign.
The fifth step review is selected at the top of the campaign.

 It can take a few minutes for us to process changes to your snippet.

This means your customers may receive outdated content if, for instance, your campaign is active, you update a snippet in an email, then 30 seconds later we send that email. This could also happen if the message is at the beginning of your workflow, you update a snippet in the message, then immediately activate a campaign or trigger a broadcast, newsletter, or transactional message that contains it.

In the case of segment-triggered campaigns, you can send to people who already match your campaign trigger criteria or just to people who match the criteria in the future. For other trigger types, this is not the case.

Who should match?

Depending on the type of campaign you’re building, you can decide whether current people and future additions or only future additions should trigger your campaign.

  • Current people and future additions: this means people who matched your trigger criteria more than 24 hours before you start the campaign and those who matched after will enter your campaign.
  • Future additions only: this only includes people who match your trigger criteria after you start the campaign.

When you start a segment-triggered campaign, you can choose either option:

image.png
image.png

Date-triggered campaigns always trigger for both current matches and future additions.

For event-triggered campaigns, people only enter the campaign when they perform the event after you start the campaign. Similarly, object and relationship-triggered campaigns only trigger for future matches.

You can create a campaign triggered by a segment based on a specific event so you can include current matches, but keep in mind, you won’t be able to include any event attributes in the content of the workflow.

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 metric totals
  • Message metrics
  • Journey metrics or
  • Tracked responses for in-app messages

It will also include any filters you selected. For instance, if you select “Email” for the “Last 30 days” under Delivery Metrics, that would filter the data exported.

We can also send reporting webhooks with performance data to a URL you specify so you can 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.

Check out our Data-out integrations overview for more options.

Liquid and customer data in campaigns

You can personalize data in messages using 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}}.. Reference people’s data in this format:

{{customer.<attribute_name>}}

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"}} then 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.

Change the status of a campaign

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 can either:

  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 What happens to messages when people exit immediately? 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.
    The modal shows that 2 people have active journeys and you can either select Exit immediately or Finish their journey.
    The modal shows that 2 people have active journeys and you can either select Exit immediately or Finish their journey.

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 recall these messages after they’re sent.

In-app messages native to Customer.io are an exception to this rule: any in-app message that has been “Sent” but not “Opened” is 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 who currently match 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?