Campaign concepts & settings
UpdatedCampaigns are automated workflows you set up to send people messages and perform other actions when they meet your criteria. They’re the most flexible, robust automation offered by Customer.io. This page introduces the concepts behind 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 and manipulate data in Customer.io. It consists of four major components:
- Trigger: this determines who enters your campaign (trigger and filter conditions) and when (frequency setting). Filters are optional.
- Goals: the outcome you want your customers to achieve through the campaign. You don’t need to define a goal, but it can be helpful to gauge the success and health of your campaigns.
- Exit criteria: these determine if people should leave your campaign early or not.
- Workflows: the messages you want to send and other actions you want to perform for people who enter your campaign.
Your campaign starts when someone (or some data) matches your trigger condition. Then your customers move through the workflow - we call this a journey - until they meet your goal or exit criteria.
trigger conditions?}-->|yes|c{If filter exists, does person or
data meet 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 setup
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.
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 objectAn object is a non-person entity that you can associate with one or more people—like a company, account, or online course. 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. In the image above, “Course updated” is an example.
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 objectAn object is a non-person entity that you can associate with one or more people—like a company, account, or online course. 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. In the image above, “Person added to Course” and “Relationship changes with Course” are examples.
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.
Goals
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.
We track conversions for the following message/delivery types:
Conversions attributed | Conversions not attributed |
---|---|
Slack Message | |
Twilio SMS | Create 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. For example, imagine that you have a campaign to re-engage users if they haven’t logged into your platform for a week; your goal is for people to log back into your service. When people do log in, you probably want them to exit the campaign so you stop sending them messages after they achieve your goal.
Grace periods
Go to Grace periods to learn more about when we pause a journey to allow time for people to rematch your campaign conditions.
Message settings
Subscription preferences
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 preferences setting. Keep in mind, subscription preferences only affect whether people receive certain messages, not whether they enter your campaign or go through other actions like an attribute update.
- 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.
If you don’t want to set a topic, you can use the All subscribed and unsubscribed preference. 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)!
If you don’t use our subscription center, your campaign will send to all subscribed by default.
Message limit
If you’ve set a message limit in your workspace settings, you can determine whether your campaign, or individual messages in your campaign, count towards your message limit. A message limit determines the maximum number of messages you can send to a person within a time period.
Workflow builder
You’ll craft your workflow - the messages and actions people move through during their journey - using our Build menu.
You can add a variety of items—messages, webhooks, attribute updates, time delays, and more-to set up your campaign.
Individual message settings
Select a message in your workflow, and the settings will appear in the right-hand panel:
Settings change based on the kind of message or action you select, but common settings include:
- Tracking opens and clicks: whether or not to track opens and clicks for a message; this is on by default
- Sending behavior: whether or not the message sends automatically, queues a draft, or doesn’t send at all; we queue drafts by default
- Subscription preference setting: whether or not to use campaign settings or override them; this respects campaign settings 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
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
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 attributes 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:
- 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. - 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.
Activate your campaign
After you’ve set up your campaign, you’ll click Review items if you have setup left to do then Start campaign when you’re ready to review the entirety of your setup.
Current vs future additions
If you’re building a segment-triggered campaign, 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 in your workspace who already match your trigger criteria and those who match after will enter your campaign.
- Future additions only: this includes people who match your trigger criteria after you start the campaign. Learn about when backfilled people data can trigger campaigns.
Date-triggered campaigns always trigger for both current matches and future additions.
For event-triggered campaigns, people enter the campaign when they perform the event after you start the campaign. Learn about when backfilled event data can trigger campaigns.
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.
Campaign journeys
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:
Journeys work a little differently depending on your campaign’s trigger and filter conditions. If your campaign doesn’t have filter conditions, the journey starts immediately when a person (or data) matches your trigger criteria. If the campaign has filter conditions, the following happens:
- 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.
- 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.
Click the journey you want to end. You can only end an active journey.
Then click End this journey on the right.
You can also get to this screen by clicking 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.
Campaign metrics & reporting
Once a campaign is running, you can view reports and export them to CSV from the Metrics tab.
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, your export will only include the filtered data.
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.