The Latest/Email Flows & CopyLast updated October 4, 20261 min read

Klaviyo Flow Not Sending: The Three Layers to Check, in Order

The YOCTO editorial team is in-house lifecycle strategists, email and SMS specialists, and Klaviyo-certified operators behind every article on this site. YOCTO’s client work has been published by Klaviyo, Skio and Loop under their own names, and its retention methodology - the LTV Parthenon - is published in Forbes. Klaviyo Elite Master, 2025-2026.

A Klaviyo flow that is not sending has one of three problems, and they’re worth separating before you touch anything. The message was never live. Nobody ever entered. Or people entered and were skipped at send time.

Almost every “my flow isn’t working” question collapses into one of those three, and they have completely different fixes. Check them in that order, because each one makes the next one readable.

Free Klaviyo audit

See what your Klaviyo account is leaving on the table.

Request a free Klaviyo audit
FreeLive walkthroughYou keep the scorecard

Why is my Klaviyo flow not sending?

LayerThe questionWhere you look
1. StatusIs the message live at all?The message status in the flow builder
2. EntryDid anybody enter the flow?The flow analytics, and the trigger setup
3. SendDid they enter and then get skipped?Recipient activity, the Skipped tab

The reason to go in order is that layer 2 looks exactly like layer 1 from outside, and layer 3 looks like both. If you start by rewriting filters you’ll usually be fixing something that was never broken.

Is the message actually live?

Start here. It’s the most common cause and the least suspected one, and it costs people days.

Klaviyo flows have no on/off switch. Klaviyo’s own documentation puts it plainly: flows don’t have an on/off switch, and each individual message in a flow carries its own send status. Turning the flow on isn’t a thing you can do. You turn each message on.

StatusWhat it does
DraftDoesn’t send, and doesn’t queue anybody either. Nothing’s waiting
ManualQueues people up, but sends nothing until you review and send it by hand
LiveQueues people and sends automatically at the right time

There are two consequences people get caught by, and they’re both quiet. If a message sat on manual and has recipients waiting review, switching it to live does not release them; they still have to be sent by hand. And changing a status never reaches back. It affects new people entering the flow, not anyone who’s already passed that step.

If your flow says “waiting”, that isn’t a fault. Those are profiles sitting inside a time delay, and they’ll move when it’s up.

How do you tell whether anyone entered the flow?

If the status is right and the flow’s still quiet, nobody’s getting in. The cause depends entirely on what kind of trigger you used.

Segment and list triggers behave differently, and this is the one that surprises people

A segment-triggered flow fires when somebody newly qualifies for the segment, and only when a genuine data change pushes them in. Two things follow, both from Klaviyo’s documentation:

  • Editing the segment definition does not trigger the flow. You can rewrite the segment so 40,000 people now match, and not one of them enters.
  • Repeated activity does not re-trigger it unless segment membership actually changes.

This is why “my segment-triggered flow only sends to new members” is such a common complaint. It isn’t a bug, it’s what the trigger means.

Lists work the other way, and the trap’s the mirror image. Importing profiles to a list does trigger list-triggered flows. Import a file of existing subscribers into the list your welcome series runs off, and all of them get the welcome series. Turn the flow off before you import, because you can’t unsend it.

Metric triggers: check the event is actually arriving

For an event trigger, the flow can only fire if Klaviyo’s receiving that metric. Open the metric itself and look at whether events are landing in real time. A welcome flow that never fires on signups is usually an integration setting, not a flow problem: on Shopify, subscribers from forms and checkout only reach a list if you’ve picked one in the integration’s sync settings.

And check consent, before anything else in this section

Somebody who’s unsubscribed can’t receive a marketing message from a flow, however it’s built. If your test profile has ever unsubscribed, it will never prove anything.

Why does Klaviyo say the message was skipped?

Skipped means they entered, reached the message, and Klaviyo wouldn’t send it. You can see exactly why: edit the flow, click the message, open View details in the Performance section, then Recipient activity and the Skipped tab, which breaks down by reason.

These are the reasons that apply to both email and SMS, as Klaviyo defines them:

Skip reasonWhat it means
Smart SendingThey got a message on the same channel too recently
Person No Longer in ListThey’re no longer in the trigger list or segment
Fails Flow FiltersThey do not meet the flow filter criteria at send time
Fails Additional FiltersThey do not meet filters set on that specific message at send time
Person DeletedThe profile no longer existed at send time
Action DeletedThe email, SMS or update-property action no longer existed

And the email-only ones, which are usually configuration, not audience:

Email skip reasonWhat it means
Missing EmailNo email address on the profile
Person SuppressedThey unsubscribed or hard bounced
Email Syntax ErrorThe template has a syntax error in it
Catalog Item UnavailableA product in the rendered email is out of stock
Over Email LimitYou went past the account sending limit
Invalid From EmailThe sending address is not valid
Error Retrieving External DataA coupon or external value could not be fetched
Unable to Create CouponThe coupon errored, or too many were generated too fast

Catalog Item Unavailable is worth singling out. It’s the one that makes a flow look broken when there’s nothing wrong with the setup, and it goes up quietly whenever stock goes down.

Why does it say Fails Flow Filters when nobody bought?

Because flow filters are evaluated at send time, not at entry, and because the filter’s almost never about buying.

Klaviyo rechecks profile filters when somebody enters a flow and again before every email goes out, by design, so that only people who still qualify keep moving. Anything in that filter that’s changed since they entered will skip them, and orders are only one of the things that can. Consent, list membership, a profile property, an engagement window, a date: all of it gets rechecked.

A high skip count is often correct. Klaviyo uses abandoned cart as the example in their own documentation: everybody who starts checkout enters, and everybody who then places an order is skipped by the “placed order zero times since starting this flow” filter. A cart flow with hardly any skips is the one you should worry about.

One object, three names

While we’re here, this one costs people hours. The flow builder calls it a profile filter. The skipped report calls it Fails Flow Filters. The glossary calls it a flow filter. They’re the same thing, and there’s no difference to find.

Is Smart Sending eating your flow emails?

Often, yes, and it won’t tell you. Smart Sending skips anybody who received a message on the same channel inside a recent window, so a flow email can be dropped because a campaign went out that morning. The flow looks fine. The send just didn’t happen.

It should be off for anything time-sensitive, which is most of the flows worth having: abandonment, order and shipping messages, failed payment, anything where the message is about something the person just did. How Smart Sending decides what to skip covers which messages to turn it off for and how to measure what it has already cost you.

Why do only some people get the message?

Three causes, in the order they’re worth checking off.

  • Membership is rechecked at send time. For a list or segment triggered flow, recipients only get a message if they’re still in that list or segment when it sends. People who dropped out mid-sequence show as Person No Longer in List.
  • A conditional split is sending them down a path with nothing in it. An empty branch isn’t an error and Klaviyo won’t warn you about it.
  • Only part of the sequence is live. Because each message carries its own status, a flow can be half live and half draft and still look like it’s switched on.

How do you get people who are already in the segment into the flow?

With add past profiles, which Klaviyo used to call back-population. It queues people retroactively, as though the flow had been there when they qualified.

There are two things to know before you use it. Who gets queued depends on the flow’s timeline and on whether the trigger is a metric, a list or a segment. And people are only queued at actions whose status is manual or live, so anything that’s still in draft gets skipped entirely, per the documentation.

Run it on manual the first time. Set the messages to manual, add past profiles, look at who actually got queued, and only then release. Adding past profiles to a live flow is how people accidentally send a welcome series to their whole list.

Can you change the trigger on a live flow?

No. Klaviyo’s documentation is unambiguous: once a flow’s trigger is set, you can’t change it. Clone the flow, set the trigger you want on the copy, and delete the original.

The reason’s worth understanding. Trigger filters, profile filters, message-level filters and any dynamic content referencing the event are all tied to the trigger you chose. Swapping it underneath them would leave conflicts that are genuinely hard to find later, and you wouldn’t find them for months.

Same answer for two triggers on one flow: it’s one flow, one trigger. If you need two, build two flows and keep them mutually exclusive, which is how the whole grid of flows is kept apart anyway.

Why did someone get the same email twice?

CauseWhat to check
Re-entry is allowedThe flow re-entry setting. Most flows should restrict it
Two flows cover the same momentWhether a browse, cart and checkout flow can all fire on one session
Two triggers for the same behaviorA duplicate flow built on a second pixel or integration, catching the same person
Add past profiles was run twiceThe flow timeline, and when back-population ran

The structural fix is mutual exclusion rather than frequency capping: each flow excludes the touchpoints downstream of it, so one person can’t land in two. That’s covered properly in the guide to building the full set of flows.

What should you read next?

If your flows are quiet and you’d rather somebody went through the account properly, our Klaviyo audit finds this class of problem fast, because it’s usually several of them at once.

Frequently asked questions

Why is my Klaviyo flow not sending?

There are three possible causes, and they should be checked in order: the message status is draft or manual rather than live, nobody is entering the flow, or people are entering and being skipped at send time. The Skipped tab under Recipient activity tells you which.

What does manual status mean in a Klaviyo flow?

A message on manual queues people up but sends nothing until you review and send it by hand. Switching it to live afterwards does not release the people already waiting, who still have to be sent manually.

Why does my Klaviyo flow say waiting?

Those profiles are sitting inside a time delay. It is not an error, and they will move on when the delay elapses.

Why does Klaviyo say Fails Flow Filters when the person did not buy?

Flow filters are rechecked at send time and are rarely only about orders. Consent, list membership, a profile property or an engagement window can all have changed since the person entered, and any of them will skip the message.

Is a high number of skipped messages a problem?

Not necessarily. Klaviyo uses abandoned cart as the example: everyone who starts checkout enters, and everyone who then orders is skipped by the flow filter. A cart flow with very few skips is more suspicious than one with many.

Why does my segment-triggered flow only send to new members?

Because a segment trigger fires only when somebody newly and organically qualifies for the segment. Editing the segment definition does not push existing members into the flow. Use add past profiles for that.

Does importing a list trigger my welcome flow?

Yes. Importing profiles into a list triggers any list-triggered flow attached to it, so a file of existing subscribers will receive the welcome series. Turn the flow off before importing.

Can I change the trigger on an existing Klaviyo flow?

No. Once a flow’s trigger is set it cannot be changed, because the filters and dynamic content depend on it. Clone the flow, change the trigger on the copy, then delete the original.

Sources

Platform behavior described here was checked against Klaviyo’s documentation on 4 October 2026. Klaviyo changes the product regularly, so if something here no longer matches what you see, their documentation wins.

If you would rather hand the whole email program over, that is what an ecommerce email marketing agency is for.

START HERE

Do You Need to Maximize Your Profits?

We’ll run a free audit, hand you a written breakdown, and tell you honestly if we can help.

Free audit · no contract
Get Yours