Klaviyo Abandoned Cart Not Sending on Shopify? The Triggers and Tracking Fixes That Actually Work
Your Klaviyo abandoned checkout flow shows zero sends and you can't tell why. Here's how the trigger really fires, where tracking breaks, and the fixes that hold.
Marcus runs Harborline Goods, a coastal apparel and gear brand doing around $1.4M a year on Shopify. For nine days straight, his Klaviyo abandoned checkout flow had sent exactly zero emails. Not a low number. Zero.
His analytics said his abandonment rate was sitting near 71%, right where it always was, so the carts were definitely there. The flow was switched to Live. The emails looked fine in the preview. And nothing was going out.
He did what most operators do at that point, which is start toggling things. He cloned the flow, rebuilt the email, double-checked the “Live” status three times, and emailed support. None of it moved the needle, because none of it was the actual problem.
The flow wasn’t broken. It was waiting for an event that, for most of his shoppers, was never happening at all.
How the abandoned checkout trigger actually fires
Here’s the part that trips up almost everyone. The standard abandoned cart flow in Klaviyo is triggered by the Checkout Started event, also called Started Checkout, and that event is pickier than the name suggests.
It does not fire when someone adds a product to their cart. It does not fire when they open the cart drawer. As Klaviyo’s own abandoned cart flow guide lays out, Checkout Started only fires after a shopper has reached the checkout page, entered their contact information, and clicked through to the shipping step. One merchant we got on a discovery call with summed up the mechanism perfectly: automated emails only send once the customer begins to enter their information in the checkout.
So picture the funnel. A shopper lands, browses, adds two tees to the cart, sees the subtotal, and bounces. To you that’s a textbook abandoned cart. To Klaviyo it’s nothing, because the shopper never gave an email and never crossed into checkout. There’s no profile to message and no event to trigger on.
That gap between what you call abandonment and what the trigger calls abandonment is where most of these “zero sends” mysteries live.
Zero sends: the usual culprits
Once you know the trigger needs a real Checkout Started event tied to a known email, the list of reasons your flow is silent gets a lot shorter.
The most common one is simply that the event isn’t reaching Klaviyo. Either the integration isn’t passing it, or your shoppers are abandoning before they hit the contact-info step, so the event genuinely never fires. A close second is the flow filter. Most abandoned cart flows ship with a filter like “has not placed an order since starting this flow,” and if your filters are stacked too tightly, or a stray “What someone has done” condition is pointing at the wrong metric, the flow can pass people in and then immediately filter every one of them back out.
Then there’s smart sending and the flow’s own time window. Klaviyo’s smart sending will skip a profile that’s received an email within the last 16 hours by default, which during testing makes it look like the flow is dead when it’s just being polite. And if the flow’s first time delay is set long, you might simply be staring at an empty queue that’s working fine, just not yet.
The thing all of these share: the email itself is almost never the issue. When a flow shows zero sends, you’re looking at a trigger or a filter problem nine times out of ten, not a content problem.
The consent and tracking gap most stores miss
This is the one that quietly breaks more flows than anything else, and it’s the hardest to see because nothing looks wrong.
Klaviyo can only message a profile it can identify. That means the shopper’s email has to be captured and tied to active web tracking before they leave, and increasingly that depends on consent. If your store runs a cookie banner and a visitor declines tracking, or if they never get cookied because they’re on a fresh browser with everything locked down, Klaviyo may register the checkout but have no identified profile to send to. Event present, person missing.
A lot of stores made this worse without realizing it when they tightened up customer privacy and consent settings. Tracking got more conservative, fewer anonymous profiles got stitched to emails, and abandoned flows that used to hum along started thinning out. The flow didn’t change. The pool of trackable, consented, identified shoppers did.
So if your sends dropped off a cliff after a theme update, an app install, or a privacy-settings change, that’s your prime suspect. Check that your Klaviyo onsite tracking script is actually present on the storefront, that your consent setup still lets identified shoppers be tracked, and remember that a flow can be perfect and still send nothing if the people moving through it are invisible to it.
Catching carts that never reach checkout
Even with everything wired correctly, the Checkout Started flow has a structural ceiling. It can only ever reach shoppers who made it to the checkout page and handed over contact info. Everyone who bailed earlier, and on most stores that’s the larger group, sails right past it.
That’s the case for running an Added-to-Cart flow alongside it, not instead of it. The Added to Cart flow triggers on the Added to Cart event, which fires the moment a known shopper drops something in the cart, well before checkout. It catches the early abandoners the checkout flow structurally cannot.
The catch, and it’s a real one, is identity again. Added to Cart still needs a known email to send, so it mostly recovers returning shoppers and people who’ve already subscribed or started a checkout before. It won’t magically email an anonymous first-time browser. But layered with a solid onsite signup form that captures emails earlier in the visit, the two flows together cover a much wider slice of your actual abandonment than the checkout flow ever could alone.
We usually frame it to clients as two nets at two depths. One catches the deep abandoners who almost bought. The other catches the shallow ones who showed intent and wandered off.
Where the Shopify and Klaviyo sync breaks
When the trigger and consent both check out and you’re still short, the connection itself is worth a hard look.
The integration between Shopify and Klaviyo is what pipes events across, and it can drift. An app conflict, a checkout customization, or a half-finished migration to Shopify’s newer checkout can interfere with how Started Checkout and Placed Order events get reported. We’ve seen stores where the events arrive but land on the wrong metric, or arrive late enough that the flow’s timing logic skips them. Marco flagged a version of this to us once, we pulled the metric timeline, and the Checkout Started events were showing up a full step out of sequence because a checkout app was firing its own event in the middle.
The quick diagnostic is to open your Klaviyo metrics and watch Checkout Started in real time while you run a test checkout. If the event shows up within a minute or two, the pipe is fine and your problem is downstream in the flow. If it doesn’t show up at all, the problem is upstream in the integration, and no amount of flow editing will fix it. That single test tells you which half of the system to stop staring at.
Testing the flow without fooling yourself
Most “I tested it and nothing happened” reports are testing the wrong thing. A real test has to look like a real abandonment, and most don’t.
Use an email that isn’t already sitting in a suppression list or a recent-send window, ideally a fresh address, because a profile you emailed an hour ago will get skipped by smart sending and you’ll wrongly conclude the flow is broken. Then actually abandon the way a customer would: add to cart, go to checkout, enter your contact details, advance to the shipping step so Checkout Started genuinely fires, and then close the tab. Don’t place the order, obviously, or the “has not placed an order” filter will yank you straight back out.
Now wait. If your first delay is an hour, you will not see anything for an hour, and that’s correct behavior, not a failure. People shorten the delay to two minutes for a test, watch the email arrive, and forget to set it back, which is its own small disaster. So note the delay before you test, and check the flow’s per-recipient analytics rather than your inbox, since smart sending or a typo in your own filters can suppress a send that the flow still logs as “processed.”
Test like a customer, not like an admin clicking around the back end. The flow behaves differently for each.
A setup checklist you can trust
When a client hands us a silent flow, we run the same short list every time, top to bottom, and stop at the first thing that’s wrong.
Confirm the Shopify integration is connected and that Checkout Started is appearing in the metrics within a couple minutes of a live test checkout. Verify the onsite tracking script is present on the storefront and that consent settings still allow identified shoppers to be tracked. Open the flow and read every filter out loud, because a single over-tight condition can quietly filter out everyone. Check that the flow status is Live and the email blocks inside it are also Live, not in draft, since a live flow can still hold a draft message. Confirm your time delays are what you intended and that smart sending isn’t masking your test. And finally, add an Added-to-Cart flow to catch the abandoners who never reach checkout in the first place.
Run in that order and you’ll catch the cause before you reach the bottom almost every time. The mistakes cluster at the top of the list, in the trigger and the tracking, not in the email.
What we keep telling clients
The instinct when a flow goes quiet is to rebuild the email, because that’s the part you can see and touch. It’s almost always the wrong move. The email is the last link in the chain and the least likely to be the broken one.
What’s actually broken sits upstream, in whether the right event is firing and whether Klaviyo can see who the shopper is. Get those two right and the email takes care of itself; get them wrong and you can polish the email forever while it never sends to a soul.
We tell clients to think of their abandoned cart system as a tracking problem wearing an email costume. The work that pays off is making sure events flow cleanly from Shopify to Klaviyo, that consent and onsite tracking let real shoppers be identified, and that you’ve got both a checkout flow and an added-to-cart flow covering the funnel at two depths. The copy matters, sure, but only after the plumbing works.
Marcus’s flow turned out to be two problems stacked. His onsite tracking script had been knocked loose by a theme update, so identified profiles weren’t getting stitched, and his single checkout flow was missing every early abandoner anyway. We reinstalled the tracking, watched Checkout Started light up on the next test, and added an Added-to-Cart flow beside it. Within a week the flow that had sent zero emails in nine days was recovering carts again, and the added-to-cart net was pulling in a second batch he’d never been reaching at all.
Questions we get every week
Why does my Klaviyo flow show zero sends when I clearly have abandoned carts? Because “abandoned cart” in your head and “Checkout Started” in Klaviyo are not the same event. The flow only fires for shoppers who reached checkout, entered contact info, and moved to the shipping step, so all your earlier drop-offs never qualify. If even those shoppers aren’t triggering it, the issue is usually the integration not passing the event or tracking not identifying the profile.
Does the abandoned cart email send the instant someone leaves? No, and that surprises people. The Checkout Started event fires only when they advance past the contact-info step, and then your flow’s time delay runs before anything sends, so if your first delay is an hour, the email is an hour out by design rather than late.
Why would consent settings stop my flow from sending? Klaviyo can only message a profile it can identify, and identification depends on tracked, consented behavior. If a shopper declines tracking or never gets cookied, Klaviyo may log the checkout but have no profile to send to. Tightening privacy or consent settings shrinks the pool of trackable shoppers, which quietly shrinks your sends.
Should I use an Added-to-Cart flow instead of the checkout flow? Alongside it, not instead. The checkout flow catches deep abandoners who almost bought. The added-to-cart flow catches earlier intent that never reaches checkout. They cover different parts of the funnel, so the strongest setups run both.
If your abandoned flow is sending nothing and you’d rather not spend a week guessing, we’ll trace the trigger and tracking with you.