Klaviyo flow filters vs trigger filters: which one decides who gets the email
One is checked once, at the door. The other is checked again before every email, and that is where the money leaks.
Getting these two the wrong way round is the most expensive mistake in a Klaviyo flow, because nothing looks broken. The flow sends, the reports look healthy, and a share of the people receiving it should have stopped receiving it days ago.

Checked once at the door, or checked at every step
The trigger filter is the bouncer at the door. The flow filter is the steward who walks the room. One looks at somebody the moment the trigger fires, decides whether they come in, and then stops caring. The other checks everybody again before each email goes out, and shows people out when they no longer belong.
That's the whole idea, and everything else follows from it. Ask of any condition: does this describe the person at the moment they entered, or does it describe somebody who should still be getting this tomorrow?
What a trigger filter is for
The trigger is the event: a checkout started, a product viewed, an order placed, a list joined. The trigger filter narrows that event at the point it happens, and it's the right place for anything about the event itself.
Every row in that card names its trigger under the flow name, and they're all different events. That's the useful discipline: one flow, one moment, one job. If two flows share a trigger and differ only in their filters, they usually want to be one flow with a split.
What a flow filter is for
Flow filters answer a different question. Should this person still be here? They're checked before every message, so they're the right home for anything that can change while the sequence is running.
- Has not placed an order since starting the flow, which is the one every cart flow needs
- Is not already in another sequence you wouldn't want to overlap with
- Still consents to email marketing, which is checked for you but worth understanding
- Has not become a customer, for flows written to people who have never bought
- Is not in your suppression segment, saved once and used everywhere
Somebody who fails a flow filter leaves quietly. They don't get the rest of the emails and they don't show up as a problem anywhere, and that's exactly why nobody notices a filter that's too tight.
The reminder that arrives after the order
Somebody starts a checkout, gets the first reminder, buys an hour later, and then gets two more emails asking whether they forgot something. The condition was written as a trigger filter, so it was true when they entered and never looked at again.

It costs more than the embarrassment. Those sends go to people who were about to be your best customers, they train the reader to ignore the sequence, and complaints from irritated buyers are the expensive kind. The abandoned cart flow is the one to check first, because it's the one that leaks.
A conditional split isn't a filter
Splits get used as filters, and that's the second commonest fault we find. A split routes people down one path or another and keeps everybody in the flow. A filter removes them.
| Control | When it's checked | What happens to the person |
|---|---|---|
| Trigger filter | Once, as the trigger fires | They either enter or they don't |
| Flow filter | Before every message | They leave the flow the moment they stop matching |
| Conditional split | At the point it sits in the flow | They carry on, down one branch or the other |
| Time delay | Not a check at all | They wait, and the filters run again afterwards |
The split is also the honest way to handle a discount. Route the people who need one down a branch that offers it, instead of filtering out the people who don't and losing them altogether.
One more thing about delays. A filter isn't watching while somebody waits, so the useful mental model is a queue with a check at the front of it. That's why a long delay with no filter after it is the most dangerous shape a flow can take.
The order to read a flow in
Open the flow and read it in this order, writing each answer down. It takes about ten minutes per flow and it finds most faults.
- Name the trigger, and say out loud what moment it describes
- Read the trigger filters: are any of them about the person, not the event?
- Read the flow filters: is the since starting the flow condition actually there?
- Walk each split and check both branches end somewhere sensible
- Check the delays, then confirm the filters run again after each one
- Send yourself through it, buy something in the middle, and see what arrives
That last step is the one people skip, and the only one that proves anything. Every flow we rebuild gets walked this way before it goes live, and the flow library each publish the trigger and the filters we use.

Theo Tziapouras
Founder and strategy at Engage Commerce, the ecommerce agency for 7 and 8 figure DTC brands.
FAQs

What is the difference between a trigger filter and a flow filter in Klaviyo?
A trigger filter is checked once, at the moment the trigger fires, and decides who enters the flow. A flow filter is checked again before every message, so somebody who stops matching leaves partway through. Anything that can change while the sequence runs belongs in the flow filter.
Why are customers still getting cart reminders after they buy?
Almost always a missing flow filter. The condition about not having placed an order needs checking before every email, not only at entry, and it needs to count orders since the person started the flow, not orders in general.
Should I use a flow filter or a conditional split?
Use a split when the answer changes which email somebody gets, and a filter when the answer means they should get nothing more. Filtering people out to avoid sending them the wrong message loses the ones who'd have been happy with a different message.
Do flow filters run during a time delay?
They're checked before the next message, not continuously through the wait, and that's the behaviour you want. Somebody who buys in the middle of a long delay gets checked again before the next email and leaves the flow at that point instead of receiving it.
How many filters should a flow have?
As few as will do the job. Every extra condition is another way for the flow to silently stop sending, and a flow that's gone quiet is much harder to spot than one that never worked. Two or three well chosen filters cover most ecommerce flows.
Filters decide who leaves, splits decide what they read
Most flows that underperform aren't badly written. They're badly conditioned: a filter doing a split's job, a condition about the person sitting where a condition about the event belongs, and nobody able to see it because the reports only show what was sent. Read the logic before you rewrite the copy. The copy is usually fine.
Klaviyo mechanics
The settings that quietly decide what your flows do, from someone who has rebuilt a flow stack.

Building a Klaviyo back in stock flow that does not annoy people
The alert that sells the restock, and the settings that stop it firing at somebody who bought the thing last week.
Read it
The Klaviyo attribution window, and what it is actually counting
What the window credits, where it is set, why Klaviyo and Shopify never agree, and what an honest report has to say out loud.
Read it
How to stop Klaviyo flows overlapping when cart and browse fire together
Cart and browse abandonment keep double emailing the same shopping session, and each flow reports healthy on its own. One list filter referees them.
Read itWould you rather this was just handled?
Bring your Klaviyo account and the thing annoying you most. We will tell you what we would fix first, on the call, before you spend anything.


Book a call with our founder.
We're all about relationships built on trust, mutual respect and a shared vision for success. If that sounds like your vibe, let's make some waves together 🌊



