TL;DR: Klaviyo flow filters are checked when a profile enters a flow and again before every message. Trigger filters read event data once at entry. Flow and profile filters re-check profile data before each send. The stakes are real: flows drive roughly 41% of email revenue. One wrong setting, like "Placed Order over all time" on a cart flow, silently blocks every repeat buyer. This tutorial covers all three layers and the filter stack worth protecting.
Klaviyo flow filters are conditional rules that control who enters an automation and who receives each message, guarding the roughly 41% of email revenue that flows generate for Shopify brands. Get them right and your abandoned cart flow only emails people who haven't bought. Get them wrong and your best automations quietly exclude your best customers.
Most tutorials stop at definitions. This one goes further. You'll learn the three filter layers, where each one lives in the Klaviyo editor, how filters differ from conditional splits, and how to read skip reports so you can tell a healthy skip from a revenue leak.
Filters aren't busywork. Flows earn far more per send than campaigns, so a single misconfigured condition compounds every day it sits there. We'll show you the exact filter stack that protects that revenue, plus the mistakes we fix most often inside real Shopify accounts.
Let's start with the fundamentals.
What are Klaviyo flow filters?
Klaviyo flow filters are conditions evaluated at two moments: once when a profile enters a flow, and again immediately before each message sends. If a profile fails the check at any point, Klaviyo skips that message or removes the person from the flow entirely.
That double-check design is the whole point. A shopper who abandons a cart at 2 pm might buy at 4 pm. The trigger already fired, but the filter re-check catches the purchase and stops the recovery email before it embarrasses you.
According to the Klaviyo Help Center, trigger filters are evaluated a single time at entry and never re-checked, while flow filters and profile filters are re-evaluated before every single message. Understanding which layer does what is the difference between a flow that prints money and one that annoys buyers.
One more mindset shift before we go deeper. Filters exclude people. They don't reroute them. If you want different people to get different messages inside the same flow, that's a conditional split, which we'll cover shortly.
Klaviyo flow filters: 3 layers
Every Klaviyo flow filters setup has three layers, and each lives in a different spot in the editor.
Layer 1: the flow trigger. This isn't a filter at all. It's the event that starts the flow, like Started Checkout or Subscribed to List. You set it once in the trigger settings.
Layer 2: trigger filters. These live inside the trigger settings and read the event data itself. They're evaluated once, at entry, and never again. Use them to narrow which events qualify. Example: a Started Checkout trigger with a filter for "item name contains Espresso Blend" builds a product-specific cart flow. As email platform experts at Flowium put it, trigger-level logic reads event data while conditional logic reads profile data. Keep that split in your head.
Layer 3: flow filters and profile filters. Flow filters live in the Filters tab next to the trigger and apply to the whole flow. Per-message versions live in each email's Additional Filters. Both read profile data, and both are re-checked before every send. This is where "Placed Order zero times since starting this flow" belongs.
Quick recap of where everything lives: trigger settings hold the trigger and trigger filters, the Filters tab holds flow-wide filters, and each message holds its own Additional Filters. Three doors, three different jobs.
Filters or conditional splits?
Filters exclude, splits reroute. A flow or message filter removes someone from the flow or skips one message when they fail the check. A conditional split keeps everyone in the flow but sends them down a Yes or No path based on profile data. Use filters to protect, use splits to personalize.
Conversion specialists at Nudgify frame it simply: an additional filter on a message skips that one message, while a conditional split changes the journey itself. So if VIPs should get a different offer than first-timers, split them. If recent buyers should get nothing at all, filter them out.
Here's the full comparison across all three mechanisms:
Trigger filter: reads event data from the triggering action. It's evaluated once, at flow entry only. On fail, the profile never enters the flow.
Flow filter: reads profile data and behavior history. It's evaluated before every single message. On fail, the message is skipped or the profile exits the flow.
Conditional split: reads profile data and behavior history. It's evaluated once, when the profile reaches the split. On fail, the profile continues down the No path.
Half the flow bugs we see trace back to using the wrong one of these three.
Which filters protect revenue?
Four filters guard most flow revenue: "Placed Order zero times since starting this flow" on cart and checkout flows, a recent-purchase exclusion on browse abandonment, engagement filters on long nurture sequences, and Klaviyo's automatic suppression checks. Nail these four and your highest-earning automations only reach people who should hear from you.
The stakes justify the care. Eightx's flow benchmarks show flows producing about 41% of email revenue from just 5.3% of total sends, with flows earning roughly $1.94 per recipient versus $0.11 for campaigns. That's an 18x gap. Abandoned cart flows are the crown jewel: Klaviyo's own benchmark data puts them near $3.65 per recipient with open rates around 50.5%.
Now the misconfiguration that quietly kills all of it. The canonical cart filter is "Placed Order zero times since starting this flow." Swap that timeframe for "over all time" and you've excluded every person who has ever bought from you. Your repeat customers, the ones most likely to buy again, never receive a single cart recovery email. The flow looks live. The dashboard shows sends. The revenue just never shows up. Across the Shopify stores we manage at CartStrings, this is one of the first things we check, and it's a big reason our clients average 32% email-attributed revenue.
Filter hygiene also protects your list. Research from Sender.net found 43% of unsubscribes come from people getting too many emails, and deliverability analysts at Mailmend note Gmail and Yahoo now demand spam complaint rates under 0.3%. Filters are your frequency brakes. Without them, browse abandonment emails hit yesterday's buyers, complaints climb, and inbox placement follows. If your flows haven't been checked in six months, a professional Klaviyo audit will surface these leaks fast, or you can have our team rebuild the whole stack through our email automations service.
How does Smart Sending work?
Smart Sending is a safety filter that skips a flow message if the profile already received an email from you within the set window, 16 hours by default. Skipped messages are never rescheduled or delayed. They're gone. It prevents pile-ups when someone qualifies for multiple flows at once.
That "skip, not delay" behavior surprises people. If your cart email number two lands inside the Smart Sending window because a campaign went out that morning, the flow doesn't wait. It drops the message and moves the profile to the next step.
Use Smart Sending on marketing-heavy flows where frequency matters. Turn it off for messages the customer expects immediately, like order-related notifications or the first cart reminder. A skipped first cart email is a skipped $3.65 opportunity. Frequency control feeds directly into inbox placement too, which is why we bundle this review into our deliverability and compliance service, where we hold clients to 99.8% inbox delivery.
How to audit skipped emails
Skipped messages scare store owners. They shouldn't, usually. Klaviyo's official skip reasons are: failed flow filters, Smart Sending, and suppression. All three are the system working as designed. The audit skill is telling healthy skips from revenue leaks.
Here's the workflow. Open the flow, click into a message, and check Recipient Activity. Filter to Skipped and read the reasons column.
Healthy patterns: "Failed flow filters" on a cart flow usually means people bought before the email sent. That's the filter doing its job. Suppression skips mean unsubscribed profiles stayed protected.
Leak patterns: near-100% skip rates on a message signal a broken filter, often that "over all time" timeframe mistake. Heavy Smart Sending skips on your first cart email mean campaigns are colliding with your most profitable automation. Zero skips on a cart flow is also suspicious, because it means nobody's being excluded after purchase.
Run this check monthly. Fifteen minutes of reading skip reasons beats months of invisible losses. We've published more debugging walkthroughs like this in the CartStrings articles library.
Klaviyo flow filter logic
Three logic rules round out your Klaviyo flow filter knowledge, and each one changes real outcomes.
First, AND versus OR. Inside a filter group, conditions joined by OR pass if any one is true. Separate groups combine with AND, so every group must pass. A common mistake: stacking exclusions with OR when you meant AND, which makes the filter far looser than intended. Read your filter out loud as a sentence before saving.
Second, delays change timing, and timing changes results. Filters are evaluated after a time delay completes, not when it starts. If email three sits behind a two-day delay, the filter check uses the profile's status at hour 48. That's exactly what you want, since a purchase on day one correctly blocks the day-two message.
Third, re-entry has moved. Klaviyo now handles repeat entries through re-entry criteria inside the trigger settings. These replace the old "has not been in this flow" trigger filters. If your flows still use the legacy filter approach, rebuild them with the native re-entry settings, which are cleaner and easier to reason about.
The bottom line
Klaviyo flow filters come down to three layers with three jobs. Trigger filters read event data once at entry. Flow and profile filters read profile data before every send. Conditional splits reroute instead of exclude. Protect the big four: the "since starting this flow" cart filter, recent-buyer exclusions, engagement filters, and sane Smart Sending settings. Then read your skip reports monthly so healthy skips never hide a real leak.
Flows drive around 41% of email revenue, so this is the highest-ROI settings check in your account. If you'd rather have a team that does this daily take a look, book a call with CartStrings. We'll show you exactly where your flows stand and what they're leaving on the table.
Frequently Asked Questions
Flow filter vs trigger filter?
A trigger filter reads data from the triggering event and is evaluated once, at flow entry, then never checked again. A flow filter reads profile data and is re-evaluated before every message in the flow. Use trigger filters to control who gets in, and flow filters to control who keeps receiving messages as their behavior changes.
Why are flow emails skipped?
Klaviyo skips flow emails for three official reasons: the profile failed flow filters, Smart Sending blocked the send because another email went out within the window (16 hours by default), or the profile is suppressed. Most skips are healthy, like buyers being excluded from cart reminders. Audit the Recipient Activity tab if skip rates approach 100%, which signals a broken filter.
Filter vs conditional split?
A filter excludes: the profile is skipped for that message or removed from the flow when the condition fails. A conditional split reroutes: everyone stays in the flow but follows a Yes or No path based on profile data. Filter out people who shouldn't hear from you at all, and split people who should get different messages.
Stop cart emails to buyers?
Add the flow filter "Placed Order zero times since starting this flow" to your abandoned cart flow. Klaviyo re-checks it before every message, so anyone who completes their purchase mid-flow stops receiving reminders automatically. Avoid the "over all time" timeframe, which would block all repeat customers from ever entering cart recovery.
Can someone re-enter a flow?
Yes. Klaviyo controls this through re-entry criteria in the flow's trigger settings, which replaced the old "has not been in this flow" trigger filters. You can allow re-entry every time the trigger fires, block it while someone is still in the flow, or require a set time gap between entries. For cart flows, allowing re-entry per abandonment is standard practice.
.avif)



