# When to use campaign filters

This article covers the difference between triggers and filters for all types of campaigns.

## How it works[](#how-it-works)

Both triggers and filters are sets of conditions that determine who enter your campaigns.

*   A **trigger** determines who’s eligible to enter a campaign and when.
*   A **filter** is additional criteria that a person or triggering data must meet for people to enter or remain in the campaign.

[![trigger-filter-2025.png](https://docs.customer.io/images/trigger-filter-2025.png)](#26c8538ca569418c197ccf29eeb80cec-lightbox)

For example, you might want to send a message when someone views the pricing page (event trigger: page view) of your website, but only send that message to people who aren’t on a paid plan (filter: free plan).

**You should think about triggers and filters separately** to help differentiate the condition that triggers a campaign from the state of the user going through it (or the data they’re related to). In the case of [legacy segment-triggered campaigns](#segment-triggered-campaigns), using a segment filter with a segment trigger may not matter when there’s no delay at the beginning of your campaign.

### How we evaluate filters[](#how-we-evaluate-filters)

For most of our campaigns (see the [exception for legacy segment-triggered campaigns](#segment-triggered-campaigns) below), we evaluate filters:

*   at the *start* of a campaign
    *   If trigger conditions are met but not filter conditions, we recheck up to 30 minutes.
*   *during* the campaign - specifically, before workflow actions **if you include filters in your [exit conditions](/journeys/campaigns-in-customerio/#how-we-evaluate-exit-conditions)**:
    *   They stop matching the filters or
        
    *   They match the conversion criteria **or** they stop matching the filters
        
        [![goal-and-exit-example.png](https://docs.customer.io/images/goal-and-exit-example.png)](#022c88f5376edaa09ba70a18a394c09b-lightbox)
        

### Legacy segment-triggered campaigns[](#segment-triggered-campaigns)

You know you’re working in a legacy segment-triggered campaign if you can add a filter in the trigger panel:

Legacy segment trigger

Latest segment trigger

[![Outlines what differentiates a legacy segment trigger from the latest segment trigger.](https://docs.customer.io/images/legacy-segment-trigger-comparison.png)](#d0eeedf63cef35bb6836fc31b106fa91-lightbox)

[![Outlines what differentiates the latest segment trigger from the legacy segment trigger.](https://docs.customer.io/images/latest-segment-trigger-comparison.png)](#ecc08a60e4d2a7956072fbc9599e04ef-lightbox)

When people meet the trigger condition, they start a journey. However, they won’t move through your workflow until they meet filter conditions. We pause their journeys until they meet your filter conditions, or they exit after a period of time.

If they continue forward, we will re-evaluate filter conditions only if the campaign uses one of these exit conditions:

*   They stop matching the trigger segment or filters
*   They match the conversion criteria **or** they stop matching the trigger segment or filters

Looking for more info on grace periods? Learn about [how they impact legacy segment-triggered campaigns](/journeys/grace-periods/).

 You cannot change the *Frequency* on segment-triggered campaigns that include filters.

The frequency is always “One time;” people only enter the first time they match the trigger criteria.

## Types of filters[](#types-of-filters)

For **all campaigns except webhooks** you can add one or more **segment filter** conditions. A segment filter checks for people in or not in a segment. For example, you might want to send a message when someone views the pricing page (event trigger: page view) of your website, but only send that message to people who aren’t on a paid plan (filter: free plan).

In [legacy segment-triggered campaigns](/journeys/campaign-triggers/#condition-trigger), you should weave filter criteria into the trigger conditions. But see [below](#segment-trigger-vs-segment-filter) to understand when to include a separate filter.

For [object and relationship campaigns](/journeys/object-and-relationship-campaigns/#trigger-campaigns-based-on-objects-or-relationships), you can also add object or relationship filters.

*   An **object filter** refines your audience based on the attributes of the object they’re related to.
    
*   A **relationship filter** refines your audience based on the attributes on people’s relationships to the object.
    
     We check filters, not triggers, during an object campaign
    
    For object and relationship-triggered campaigns, we do not check trigger criteria during a campaign after the initial match. Therefore, if you want specific object or relationship attributes checked during people’s journeys, you must include them as filters and choose an exit condition that checks filters.
    

## FAQs[](#faqs)

### Do people still get a journey for the campaign if they don’t meet the filter?[](#do-people-still-get-a-journey-for-the-campaign-if-they-dont-meet-the-filter)

For legacy segment-triggered campaigns, yes. For all other campaigns, they won’t if they don’t match the filter after a 30 min pause. Check out [Journeys](/journeys/campaign-journeys/#when-journeys-begin) for more information.

### Legacy segment trigger vs segment filter[](#segment-trigger-vs-segment-filter)

You might be wondering, “When do I put my filter conditions in my segment trigger criteria?” In most cases, you should! But if you want people to trigger a campaign based on segment criteria AND filter them out after a certain time period, you’ll want to create both a segment trigger and a segment filter. Think of this as a way to ensure people move through this campaign only when it’s relevant to them and not accidentally later on.

Consider the example below - people have just signed up for your service and should receive a special offer if they perform certain actions within a timeframe.

Let’s say you want to send a campaign to people who have viewed your pricing page at least once within 10 days of signing up. Your goal is to convince them to upgrade with a special “newbie” offer. Here’s how to set it up:

1.  Trigger a campaign based on people joining the “Signed up” segment. Filter your campaign based on “has viewed pricing page at least once”.
2.  Set your exit condition to include filters.
3.  Add a 10-day delay to the beginning of your workflow, followed by your message with a special offer.

This means: as soon as someone signs up, they enter the campaign and the 10-day clock starts ticking. After 10 days, the campaign will send messages if they meet the filter criteria (viewed the pricing page at least once). Otherwise, people would not get this offer and would exit the campaign. Whether they move through the whole campaign or not, these people will never be eligible for this campaign again because people can only enter a segment-triggered campaign with a filter the *first* time they match the criteria.

If you had combined both conditions into the trigger, the 10-day campaign clock would **not** start ticking until people had both signed up AND viewed the pricing page once. This combination of conditions could happen at any time, no matter when they signed up, so your customer could receive this newbie offer a year later.