Campaign Triggers

Campaign triggers determine who enters your campaigns and when. This page describes different kinds of triggers and why you might use them.

If you’re just getting started, we’ve created a quick video to help you understand what each campaign trigger does. To learn about object and relationship triggers, read on. If you’re just getting started, we’ve created a quick video to help you understand what each campaign trigger does. To learn about object and relationship triggers, read on.

How it works

A campaign trigger determines who enters your campaign and when. You can set up filters to narrow your trigger criteria. People need to meet your trigger and filter criteria to enter your campaign. You can also set your exit conditions to make people exit your campaign when they quit matching your trigger and filter criteria, ensuring that your campaign is relevant to your audience.

If you want to let people experience a campaign multiple times, you can set frequency settings, determining how often a person can trigger a campaign.

flowchart LR a{Does a person meet
trigger conditions?}-->|yes|c{Does person meet
filter conditions?} c-->|yes|d[person enters
campaign] a-.->|no|i[person doesn't
enter campaign] c-.->|no|i

What kinds of actions trigger a campaign?

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.

Segment change

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.

Segments are based on audience criteria—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. Attributes are analogous to traits in Data Pipelines. your audience has, events they’ve performed, making this one of our more flexible campaign types.

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.

 You can use JSON dot notation in condition logic

If you store attributes or event data in JSON objects or arrays, you can use JSON dot notation in your branch conditions to evaluate these properties. Use array[] to represent any item in an array or array[0] to represent the first item in the array. See Storing and using JSON for more information about dot notation in Customer.io.

Frequency

By default, people will enter your campaign 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 Frequency settings, you’ll use one of these options to determine how often a person can re-enter your campaign:

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

  • 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, the interval window begins when a person matches your campaign conditions.

image.png
image.png

 Frequency settings apply to people you manually remove from campaigns

You can manually remove people from campaigns, but this won’t necessarily cause them to re-enter the campaign. For example, if a person can only enter a campaign once ever, and you remove a person from the campaign, they’ll never re-enter the campaign.

Changing frequency

Like other trigger settings, you can change your campaign’s frequency settings while your campaign is running.

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

Object change

You can trigger a campaign when 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. This type of campaign only triggers for future additions; that is, only people who match the trigger, audience, frequency, and filter conditions AFTER you start the campaign will enter into a journey.

On the Trigger step of setting up a campaign, you will see a list of all object types in your workspace. Underneath each object type, you’ll see object triggers listed as “Object_name updated,” like “Account updated.”

 To use an object trigger, you must create at least one object.

If you select Object updated, you must specify which attributes to target. This type of campaign triggers when specific attributes change, not when any attribute changes. For instance:

The trigger summary reads: 'Trigger when when account's attribute plan updates to be equal to premium. Add the people who are related to the account and their role is equal to admin. Add the person every time the conditions are met. People enter the campaign and move through the full campaign.'
The trigger summary reads: 'Trigger when when account's attribute plan updates to be equal to premium. Add the people who are related to the account and their role is equal to admin. Add the person every time the conditions are met. People enter the campaign and move through the full campaign.'

You can use a variety of operators like “equal to” or “exists.” You cannot use operators like greater than, less than, etc. If you need other operators, consider adding a segment filter or passing your information to Customer.io so the existing operators work.

 We only evaluate trigger conditions before a person enters a journey

This means a person could continue to move through your object-triggered campaign if the object were deleted or their relationship to the object was removed or changed. If they shouldn’t, add filters to your campaign (see below).

It also means messages could fail to send if you reference this deleted relationship or object in liquid, so make sure you provide a liquid fallback.

Frequency

For now, campaigns with custom object triggers only support the “every time” frequency. Stay tuned for more frequency options in upcoming releases.

Audience

You have the flexibility to decide who your audience is. The audience could be:

  • every person related to the object
  • certain people related to the object based on profile or relationship attributes

 Your audience cannot exceed 1,000 people each time the campaign triggers.

If it does, the people will not start a journey. You will see “Failed Journeys for Object/Relationship Campaign” in your activity log. Keep this in mind anytime you choose “Every person in the object” or “Certain people in the object” as your audience settings.

Check out Considerations for audiences over 1,000 for more information.

Filters

You can apply filters to further refine who should enter and stay in the campaign. We evaluate filters when the person first meets the trigger criteria and before action items in your workflow. For example, if your campaign is designed to nurture leads, you might filter out people who’ve already paid for your services.

Exit Conditions

You can decide when a person exits an object-triggered campaign. You can find these on the Goal & Exit tab of campaigns. You can choose that:

  • they never exit.
  • they only exit when they achieve the conversion goal.
  • they exit when they stop matching filter criteria.
  • they exit when they stop matching filter criteria OR achieve the conversion goal.

We evaluate exit conditions before every journey and before action items in your workflow. We do not evaluate whether people meet the trigger criteria after they’ve entered the campaign.

Relationship change

You can trigger a campaign based on a relationship by targeting people that were added to an object or targeting a change in the relationship. 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.

This type of campaign only triggers for future additions; that is, only people who match the trigger, audience, frequency, and filter conditions AFTER you start the campaign will enter into a journey.

On the Trigger step of setting up a campaign, you will see a list of all object types in your account. Underneath each object type, you’ll see relationship triggers listed as “Person added” or “Relationship changed.”

 To use a relationship trigger, you must create at least one object.

If you select Person added, you can optionally refine the audience by relationship attributes to funnel the right people into the campaign. Otherwise, the campaign will trigger when any person is added to any object within the specified object type.

The trigger Person added was selected for the Account object type on the previous screen. This screen shows how to configure the trigger settings. The trigger summary reads, 'Trigger when a person is added to an account, and their relationship's role is equal to admin. Add the person that was added to the account. Add the person every time the conditions are met. People enter the campaign and move through the full campaign.'
The trigger Person added was selected for the Account object type on the previous screen. This screen shows how to configure the trigger settings. The trigger summary reads, 'Trigger when a person is added to an account, and their relationship's role is equal to admin. Add the person that was added to the account. Add the person every time the conditions are met. People enter the campaign and move through the full campaign.'

If you select Relationship changed, you must specify which relationship attributes to target. For instance:

The trigger summary reads, 'Trigger when relationship attribute app_status changes to be equal to accepted. Add the person whose relationship with the company was changed. Add the person every time the conditions are met. People enter the campaign and move through the full campaign.'
The trigger summary reads, 'Trigger when relationship attribute app_status changes to be equal to accepted. Add the person whose relationship with the company was changed. Add the person every time the conditions are met. People enter the campaign and move through the full campaign.'

You can use a variety of operators like “equal to” or “exists.” You cannot use operators like greater than, less than, etc. If you need other operators, consider adding a segment filter or passing your information to Customer.io so the existing operators work.

You cannot target any change to a relationship; you must specify what a relationship attribute is specifically changing to or changing from (role is equal to admin or role is not equal to admin, for instance).

 We only evaluate trigger conditions before a person enters a journey

This means a person could continue to move through your relationship-triggered campaign if the object were deleted or their relationship to the object was removed. For example, imagine a campaign triggered by a relationship matching role equal to admin for an object. If a person matches this criteria then their role changes to member, the person would continue their journey. If they shouldn’t, add filters to your campaign (see below).

It also means messages could fail to send if you reference this deleted relationship or object in liquid, so make sure you provide a liquid fallback.

Frequency

For now, campaigns with relationship triggers only support the “every time” frequency. Stay tuned for more frequency options in upcoming releases.

Audience

You have the flexibility to decide who your audience is. The audience could be:

  • the person that was added to the object (default)
  • every person in the object
  • certain people related to the object based on profile or relationship attributes

 Your audience cannot exceed 1,000 people each time the campaign triggers.

If it does, the people will not start a journey. You will see “Failed Journeys for Object/Relationship Campaign” in your activity log. Keep this in mind anytime you choose “Every person in the object” or “Certain people in the object” as your audience settings.

Check out Considerations for audiences over 1,000 for more information.

Filters

You can apply filters to further refine who should enter and stay in the campaign. You can find these on the Goal & Exit tab of campaigns. We evaluate filters when the person first meets the trigger criteria and before every non-delay action item after that. For example, if your campaign is designed to nurture leads, you might filter out people who’ve already paid for your services.

Exit Conditions

You can decide when a person exits a relationship-triggered campaign. You can find these on the Goal & Exit tab of campaigns. You can choose that:

  • they never exit.
  • they only exit when they achieve the conversion goal.
  • they exit when they stop matching filter criteria.
  • they exit when they stop matching filter criteria OR achieve the conversion goal.

We evaluate exit conditions before every journey and before every action that impacts a person (message delivery, attribute updates, static segment updates, collection queries, create event actions, or batch updates). We do not evaluate whether people meet the trigger criteria after they’ve entered the campaign.

Form submission

You can connect forms—Facebook Lead Ads, Jotform, Typeform, your own custom web forms, etc—to your workspace. You can trigger a campaign when someone fills out your form. This can help you nurture new leads or respond to support requests.

When you select the When someone fills out a form on your website option, you can either connect a new form or select an existing form—if you’ve already added forms to your workspace.

trigger a campaign when people submit a form
trigger a campaign when people submit a form

Filters

You can apply segment-based filters to determine whether someone in the campaign should receive messages. For example, if your campaign is designed to nurture leads, you might filter out people who’ve already paid for your services.

Frequency

Much like event-triggered campaigns, a person enters your campaign every time they fill out your form by default. You can limit the campaign frequency if you don’t want to send your audience a campaign every time they fill out your form.

Toggle frequency to limit how often people move through your campaign.

  • Once ever: people will only enter the campaign the first time they fill out your form.
  • Once within a time period: people can only enter the campaign once within a time period, no matter how many times they fill out your form.

Event

Event-triggered campaigns help you respond to your audience’s behavior in your app or on your website—like encouraging people to complete their purchase when they abandon your cart, or messaging people who visit a product page on your website to let them know when the product goes on sale.

When you use this kind of trigger, you can choose the event that you want to use to trigger your campaign. If you don’t see the event, you can type the event name in the box. If the event occurred recently, click View instances to see recent event examples.

You can narrow your trigger criteria based on properties in your event. If you have a particular event attribute you want to use as a filter—like if you only want to target people who bought a specific product—click Add event data filter and set the event properties you want to match for your trigger.

event-filter.gif

 You can use JSON dot notation in condition logic

If you store attributes or event data in JSON objects or arrays, you can use JSON dot notation in your branch conditions to evaluate these properties. Use array[] to represent any item in an array or array[0] to represent the first item in the array. See Storing and using JSON for more information about dot notation in Customer.io.

Frequency

By default, a person enters an event-based campaign every time they perform the trigger event. You can limit the campaign frequency if you don’t want to send your audience a campaign every time they perform your event.

Toggle frequency to limit how many times people can move through campaigns and set your frequency options.

  • Once ever: people will only enter 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.

  • Once within a time period: people will only receive the campaign once within a time period. 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

Important date

This option lets you trigger a campaign based on a date-time 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. The attribute must contain a date in either Unix timestamp or ISO 8601 format. If a person doesn’t have this attribute, or the attribute isn’t in the right format, they’ll never trigger the campaign.

You can trigger your campaign using a relative or static date based on this attribute:

  • Relative: Remind your audience to renew their subscription 14 days before their subscription anniversary.
  • Static: Wish your audience a happy birthday on their birthdate.

When you set up a date-triggered campaign, there are four things you need to choose. When you pick your date-time attribute, you’ll see a preview panel that lets you test your choices with people from your workspace.

  1. Determine how frequently people enter your campaign. These values are all based on your date attribute.

    • Only once, on this date: A person triggers the campaign based on the entire date, including month, day, and year. This date must be in the future.
    • Every month: A person can trigger the campaign once per month on the day of the month in their 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: A person triggers the campaign once per year on the month and day in their 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. Set whether to trigger your campaign on the exact 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. Pick your audience’s date-time attribute. Customer.io schedules your campaign based on the date value in this attribute, but we don’t use the time. You’ll pick the time in the next step.

     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. Pick the time of day that you want to trigger this campaign. We won’t use the time stored in the date attribute. But, if you store your audience’s timezone as an attribute, you can select the user's time zone to trigger your campaign in your audience’s time zone.

Supported date formats

We can trigger campaigns based on a Unix timestamp or a date-time in the ISO 8601 format. These are the ISO 8601 date-time formats we support:

ISO 8601 FormatExample
YYYY-MM2024-03 (This will default to the first of the month.)
YYYY-MM-DD2023-11-15
YYYY-MM-DDThh:mm:ssZ2023-11-15T23:14:37Z
YYYYMMDDThh:mm:ssZ20231115T231437Z
YYYY-MM-DDThh:mm:ss.ms2007-11-22T12:30:22.321
YYYY-MM-DDThh:mm:ss+/-< UTC offset >2024-02-07T12:30:22-08:00

Nested date attributes

When picking the date attribute that will trigger your campaign, you can also type in nested date-time attributes, such as appointments.follow_up_date or account_details.renewal_date.

Unfortunately, we cannot preview the number of people that will receive a message when you use a nested attribute. Instead, we’ll show you how many people have the parent attribute (i.e. appointments or account_details).

Webhook

Most campaigns are triggered by people, and people are the subjects of the campaign—you set their attributes, send them messages, etc. Webhook-triggered campaigns are different: they’re triggered by data, and data (that may or may not be related to people in your audience) is the subject of the campaign.

In general, you’ll use these campaigns to manipulate incoming data and associate it with people in your audience. For example, if people are interested in a product that’s out of stock, you might use a webhook to notify Customer.io when that item is back in stock. In your campaign, you can send an event to everybody who was interested in the product, triggering a campaign to let these people know that their product is back in stock!

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

the webhook-triggered campaign trigger exposes a webhook URL
the webhook-triggered campaign trigger exposes a webhook URL

Your 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 webhook-triggered campaign triggers within Customer.io. You’ll have to make sure that your external service is set up to call your webhook-triggered campaign’s webhook URL with a relatively uniform data set and only when you want it to call the URL.

Because webhook-triggered campaigns aren’t associated with people—at least not directly—they don’t have many of the options that you’ll see in other types of 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.

Why can’t I change my campaign trigger?

Your trigger affects other settings throughout your campaign, like the actions available in your workflow, the types of 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}}. variables you can use, and so on.

After you pass the trigger step, we “create” a campaign based on your trigger type with all the related settings, liquid scopes, and campaign actions. We don’t allow you to change your trigger type after this point, because it would almost certainly break subsequent settings and workflow actions in your campaign—many of which are specific to the trigger.

If you want to change triggers, you’ll need to create a new campaign. If you’ve already filled out a campaign workflow, you can copy workflow items to your new campaign!

Copied to clipboard!
  Contents
Is this page helpful?