Flows use the same contact filters as segments — see the Contact filter reference for the full field list and How filters work in Spoks for operators. Inside a flow there are two flow-specific additions: trigger filters and suppression.
Contact filters vs. trigger filters
Inside a flow there are two filter slots near the trigger:
Contacts Filter — tests the contact's standing attributes and history (consent status, total orders, last purchase date, and so on). This is the same contact filter used in segments.
Trigger Filter — tests the triggering event itself rather than the contact's profile. Added with the Add Trigger Filter button; the available options depend on which trigger the flow uses.
Trigger filters available by trigger
Trigger filter options are specific to the trigger you chose:
Trigger | Trigger filter(s) |
New tag | Added tags — pick one or more of your tags (contains) |
Form submission | Form submission — pick one or more of your forms (contains) |
Checkout started, Placed order, Cart abandoned, Product viewed, Order delivered | Product, Collections, Vendor |
Where filters live: trigger vs. step
Filters can sit in two places within a flow:
At the trigger — the Contacts Filter and Trigger Filter control who qualifies for the whole flow.
On an individual step — each send step (email or SMS) can carry its own contacts filter, so different contacts in the same flow receive different messages. The Thank You template filters one step to Total orders equals 1 and a later step to Total orders equals 2.
Trigger filters also act as suppression filters
Suppression applies only to the filters at the trigger (the Contacts Filter and Trigger Filter). The builder notes it: "This filter also acts as a suppression filter."
A trigger-level filter keeps checking after enrollment: if a contact stops matching while partway through the flow, they're removed and won't receive the remaining messages. For example, in an Abandoned Checkout flow filtered on Last purchase is before flow started, a shopper who completes their purchase no longer matches and drops out before the reminder.
Per-step filters do not suppress. A filter on a step only decides who receives that message; it never removes a contact from the flow.
How filters interact with re-enrollment
Most templates allow contacts to re-enroll, passing through the flow again each time they meet the trigger. Trigger-level filters are re-evaluated on each enrollment, so the "flow started" reference resets to that new enrollment. This is why date filters like is before flow started stay meaningful across repeat enrollments.
In short
Contact filters test the person; trigger filters test the enrolling event and are specific to the chosen trigger.
Only the filters at the trigger suppress — contacts who stop matching are removed mid-flow. Per-step filters gate that one message only.
On re-enrollment, trigger-level filters and the "flow started" reference are re-evaluated.