> This page is part of the [Customer.io documentation](https://docs-customerio.netlify.app). For the complete index, see [llms.txt](https://docs-customerio.netlify.app/llms.txt).
> Last updated: July 15, 2026

# Automation goals & conversion criteria

## How goals work

A **goal** is what you want your audience to accomplish during your automation, like purchase a product, sign up, or subscribe. When you set up a goal, you define **conversion criteria**, which are the rules that determine when we mark a message or journey as “converted.”

[![The automation goal is set. The conversion criteria is profiles leave a segment. The conversion window is within 1 week of being sent any delivery from this automation.](https://docs.customer.io/images/campaign-goal-2.png)](#d4c5c0f67b44e1f486628df4c4143255-lightbox)

The conversion criteria can be one of (and only one of) the following things:

*   An [eventSomething that a person in your workspace did. Events can trigger automations, add people to segments, etc, and you can use properties from events to personalize messages.](/journeys/people/events/) you want profiles to perform
*   A [segmentA segment is a group of people in your workspace. Use segments to trigger automations, track membership over time, or fine-tune your audience. There are two types of segments: data-driven and manual. Data-driven segments automatically update when people start or stop matching criteria. Manual segments are static.](/journeys/segmentation/segments/) you want profiles to join
*   A segment you want profiles to leave

When you set conversion criteria, you also set a **conversion window** (up to 90 days) that your customers can match the conversion criteria after they are sent, open, or click a tracked link in a message. If a profile matches your conversion criteria within the time frame, we’ll record a conversion and attribute it to your automation. If a profile does not match the conversion criteria, or they match it outside the time frame you set, we won’t record a conversion.

 Multiple automations can convert on the same criteria

We count conversions independently for each automation. If you use the same conversion criteria across multiple automations, a profile that goes through both automations and reaches the goal will achieve a conversion for each automation.

### Conversion metrics

You can check the **converted metric** to determine the percentage and number of [journeysTypically, a person’s path through your automation. If the automation is triggered by a webhook, then a journey captures the webhook’s path, not a person’s.](/journeys/send/campaigns/journeys/) and delivered messagesThe 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. that achieved your goal—and the number that haven’t. Use your conversion metrics to figure out how well your messages perform and develop strategies to increase the value of your messages over time.

[![Example of converted metrics on the Overview tab of a running campaign](https://docs.customer.io/images/overview-converted-metric.png)](#ce96dda19d0d8dd33c39e75ee34731b7-lightbox)

Example of converted metrics on the Overview tab of a running campaign

 We do not retroactively count conversions

If you edit or change your conversion criteria after you start an automation, we won’t retroactively apply your conversion criteria. Updating conversion criteria will not update your conversion metrics for messages that were previously marked as converted or not converted; your updated conversion criteria and metrics will only apply to new conversions.

### Types of messages or actions that can record conversions

We track conversions for the following message/delivery types:

Conversions attributed

Conversions not attributed

Email

Slack Message

SMS

Create or update profile action

Customer.io Push Notifications

Customer.io In-app Messages

Webhooks1

1You must [enable webhook conversions manually](/messaging/send/workflows/webhooks/action/#track-conversions).

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

## Set up conversion criteria

You can set a goal when you create an automation or add it to automations you’ve already created. However, if you set conversion criteria for a live automation, it will only apply to profiles that enter the automation *after* you set the goal. You cannot apply a goal retroactively to profiles that’ve already entered or completed the automation.

Click the upper-left menu while editing an automation. Then click **Manage** under **Goal**:

1.  Click **Set goal**.
    
    [![The automation goal is set. The conversion criteria is profiles leave a segment. The conversion window is within 1 week of being sent any delivery from this automation.](https://docs.customer.io/images/campaign-goal-2.png)](#d4c5c0f67b44e1f486628df4c4143255-lightbox)
    
2.  Select the type of conversion criteria—*performs event*, *enters segment*, or *leaves segment*.
    1.  (Optional) If your [conversion criteria is an event](#event), click **Add event data filter** to ensure that your event contains (or doesn’t contain) specific properties or values before counting a conversion.
3.  Under *Conversion*, set the maximum time (up to 90 days) after a delivery that you’ll count a conversion.
4.  Select whether to count a conversion after a profile:
    *   Is sent any deliveryThe 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. (i.e. not attempted or failed) from this automation
    *   Opens any delivery from this campaign
        
        Message opens may not be reliable for certain message types, like SMS or email, with some clients. You might want to use the *receiving* or *clicking a tracked link in* options to ensure more accurate reporting with these message types.
        
    *   Clicks a tracked link in any delivery from this campaign
        
        If a link isn’t tracked, Customer.io can’t know whether or not a profile clicks it, and therefore cannot record a conversion. See our page on [link tracking](/messaging/channels/links/tracking/) for more information.
        
5.  Save your changes.
6.  Next, decide whether you want profiles to [exit your automation](#exit-conditions) when they match the conversion criteria.

### Event-based goals

Events let you track the things that your audience does. You can use an event as an automation goal. For example, if your automation is focused on abandoned carts, your goal event might be a `purchase` event.

You can only use a single event as the goal for any given automation.

 Event names in conversion criteria are case sensitive

While event names are generally not case sensitive in Customer.io, event names used in conversion criteria *are* case sensitive. This means `purchase` and `Purchase` are treated as distinct events when you set up conversion criteria. Make sure the event name in your conversion criteria exactly matches the event name you send to Customer.io.

#### Event-based filters

You can also set up a filter to limit a conversion based on an event’s properties. This lets you make sure that your conversion event contains (or does not contain) specific properties before you count it as a conversion.

Using our purchase example above, imagine that you want to record a conversion when your audience uses a specific coupon code or makes a purchase over a certain dollar amount. You could set a filter for that!

[![a goal event set to purchase and filters looking for purchases over 49.99 with the coupon code newuser20](https://docs.customer.io/images/goal-event-and-filters.png)](#77a130f9c6c72f3ec8282e2d68c25e11-lightbox)

Click **Add event data filter** under the goal to begin. You can join multiple filter conditions (for a single event) depending on whether you select *all* or *at least one* in the dropdown:

*   **All**: all conditions need to be true to match the conversion criteria. Click *Add event data filter* to create another statement in an AND conditional, if you need.
*   **At least one**: only one condition must be true to match the conversion criteria. Click *Add event data filter* to create another statement in an OR conditional, if you need.
    
    [![add-event-data-filter-OR.png](https://docs.customer.io/images/add-event-data-filter-OR.png)](#653411a9d692f2bb2c33f2fcf0065aa7-lightbox)
    

 Event-based conversions are based on processing time, not timestamps.

We mark a delivery associated with an event-based goal as converted when we receive the event. You cannot backdate an event (with a `timestamp`) so that it triggers a conversion. For example, if you send an event outside the conversion time window, but it has a `timestamp` that would’ve fallen within the window, we won’t count that conversion.

#### Why filter by event data

You can compare properties from the conversion event to a profile’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.](/journeys/people/manage/attributes/) or even to properties from the incoming trigger event. This helps you make sure conversions are attributed to the exact data relevant to your automation and each profile’s journey.

For example, imagine you run online courses, and you want to start an automation when a profile begins one of your classes. Your objective is to help a profile finish the course they started, so you want to record a conversion when the profile finishes it. If your events use a `course_id` to differentiate between similar events for different classes, you can determine when someone has finished the course they started and mark a conversion!

[![conversion-compare-to-trigger.png](https://docs.customer.io/images/conversion-compare-to-trigger.png)](#e61c21adeccf255faa98945baa82e9b0-lightbox)

In this example is an event-triggered automation with a frequency of “Every re-match.” This means a profile can enter this automation for each course they start. It’s helpful then to set the `course_id` of the event associated with the goal to the `course_id` of the event that triggered the automation because it ensures the conversion is consistent with each journey.

### Segment-based goals

 If you capture events, try an event-based goal.

Segments let you track conversions based on profile attributes, which is useful if you don’t have an integration that sends events. You can add profiles to segments based on events, too, but if you already capture events, you may find it easier to simply set up an [event-based conversion criteria](#event).

You can set a goal based on whether someone “enters a segment” or “leaves a segment.” If you choose “enters segment,” we check whether a profile is IN the segment. If you choose “leaves segment,” we check whether a profile is NOT IN the segment.

**Consider that a profile can be IN or NOT IN a segment *before* they enter your automation:**

*   If a profile already matches your conversion-criteria segment when they enter your automation, and progress through the automation, then messages that you send to that profile won’t record a conversion.
*   If the automation has the exit criteria, “They match the conversion criteria,” profiles will enter the automation then exit before any action because they already meet the conversion criteria.
*   We calculate if someone is NOT IN a segment when they’ve never belonged to the segment as well as when they leave a segment; this means “exit segment” corresponds to profiles that have never belonged to the segment and who left the segment they belonged to.

 Add your conversion segment as a filter to your automation trigger.

If you use a segment as your conversion criteria, you might want to add your segment as a filter for your automation so only profiles that have not achieved the goal criteria enter the automation. For instance, if your goal is “leaves segment: Has not recently logged in” then you would add a segment filter of “IN: Has not recently logged in.” This way, only logged in users enter the automation.

### Conversion timing

A profile can match the conversion criteria after **being sent**, **opening**, or **clicking a tracked link** in a delivery. Conversions based on a profile performing an event are counted when we receive the event, not when the event occurred.

 Holdout tests can show conversions

You can use holdout tests to test the impact of your messages. When you use a holdout test, we show conversions on the holdout group when profiles that *don’t* receive the message perform the expected action. This helps you measure the true impact of your messages by comparing conversion rates between profiles that received messages and profiles that didn’t.

If you allow conversions after **being sent** messages, conversions will occur in the order that you send messages. For example, if a profile receives two messages, and matches your conversion criteria within your time frame of both messages, we’ll attribute the conversion to the second message—the most recently received message.

If you set conversions to occur after **opening** or **clicking** a tracked link in messages, profiles will achieve your goal against the *most recent* message that they opened or clicked.

If a profile meets conversion criteria, like performing an event, immediately after an open or click, it’s possible a conversion isn’t logged:

*   For clicks, this can happen because it takes up to 10 seconds for us to screen out machine clicks.
*   For opens or clicks, this can happen if we process the open or click AFTER the conversion criteria is met.

For example, let’s say your conversion criteria is “performs event: `subscription_activated`” and the conversion window is based on clicking a tracked link:

1.  At 8:07:42 AM, a customer clicks a tracked link in a message.
2.  At 8:07:49 AM, the customer performs the conversion criteria event `subscription_activated`.
3.  At 8:07:53 AM, we finish processing out machine clicks, and the click clears the queue. Customer.io won’t log a conversion because the click was processed *after* the conversion event was performed.

## Exit condition: match the conversion criteria

If you want profiles to exit your automation when they match your conversion criteria, include the criteria in your [exit conditions](/messaging/send/automations/exit-conditions/).

By default, a profile continues through an automation until they stop matching the automation filter criteria—even if they perform your automation’s goal action. (For a legacy segment-triggered automation, profiles will exit when they stop matching the trigger *or* filter conditions by default.)

However, you might not want a profile to continue an automation if they match your conversion criteria. For example, if your goal is for someone to complete a purchase, you probably don’t want to continue reminding profiles about the items in their cart after they make a purchase!

To view or modify your exit criteria, open your automation and click . Then click **Exit conditions**.

[![campaign-exit-criteria-default.png](https://docs.customer.io/images/campaign-exit-criteria-default.png)](#4b187ca5735256a29b60e0b7dc2db015-lightbox)

Recreate your conversion criteria in the exit conditions panel: add the event or segment criteria.

Learn more about [exit conditions](/messaging/send/automations/exit-conditions/) and how we evaluate them during an active journey.

*   *   [How goals work](#how-it-works)
        *   [Conversion metrics](#conversion-metrics)
        *   [Types of messages or actions that can record conversions](#message-types)
    *   [Set up conversion criteria](#set-up)
        *   [Event-based goals](#event)
            *   [Event-based filters](#event-filters)
            *   [Why filter by event data](#compare-conversion-event)
        *   [Segment-based goals](#segment)
        *   [Conversion timing](#conversion-timing)
    *   [Exit condition: match the conversion criteria](#exit-conditions)

Copy page

Copy page [Download .md](/messaging/send/automations/conversions.md)

Is this page helpful?

![](https://docs.customer.io/images/export-success.png) ![](https://docs.customer.io/images/export-failure.png)

# How can we make it better?

Close

Do you need help from Customer.io support?  No  
 Yes

What part of Customer.io do you need help with? 

How can we improve this page?

Email (optional):  Please provide a valid email address

 I am not a bot

 

We appreciate your feedback!

Our support team will contact you as soon as possible
