Abandoned Cart Flow Mistakes That Cost You Orders

We went through the Klaviyo community boards and found 89 threads about cart abandonment and what had gone wrong.

Fixing your abandoned cart flow is what brings interested shoppers back to your store. A few extra optimizations form there and your flow is pulling in serious revenue.

Here are the biggest problems impacting the Klaviyo communities abandoned cart flows:

What goes wrong Threads Share
Flow is live but nothing sends, because the trigger events never reach Klaviyo 27 30%
Email sends but the dynamic cart content is broken 23 26%
Confusion over which trigger and which filters to use 14 16%
Flow sends to the wrong people 9 10%
Recipients silently skipped by a flow filter 9 10%
Cannot build the flow at all 4 5%
Segmentation and cart-value splits 3 3%

Building Klaviyo abandoned cart flows is our speciality. Email Kong manages over 140 DTC accounts, and has been awarded Master Platinum status from Klaviyo.  

So you can trust our advice as we guide you through the most common abandoned cart flow problems, and how we approach them at our Klaviyo agency.

Started Checkout events are not reaching Klaviyo

A flow's only ever as alive as the metric that triggers it. When your store stops sending Started Checkout or Added to Cart events, the sequence sits there indefinitely with nobody entering it.

Check the metric before anything else

Open Analytics, then Metrics, and find Started Checkout. Pull the chart out to the last thirty days and read its shape against your store's checkout volume.

A flat line, or a cliff on a date you can name, is your answer. That date usually means a theme edit or a plugin update broke the integration. In the accounts we manage, that chart is the first screen we open.

What a broken integration looks like

For WordPress users, WooCommerce is the usual culprit. Updates, template changes and new plugins can break the link between the store and Klaviyo without warning, and custom builds break when the product feed or the onsite tracking snippet changes shape.

Upgrading to the current version, or disabling the integration and reconnecting it, sometimes kickstarts the event stream back into place. Test it by abandoning a real cart yourself and watching the activity feed for your own profile.

The cart block arrives empty

Second on the list is broken formatting and unpopulated data. 

Dynamic blocks are the usual culprits. There’s usually a small disconnect between how an email looks inside an editor and what the customer received in their inbox. 

Where the block renders fine, the link is often the culprit instead. A return-to-cart button built on the checkout URL resolves to a product page, so your shopper lands somewhere that has forgotten what they chose.

Both faults start outside Klaviyo, in the data your store sends it. Shopify stores lose it when onsite tracking in the theme stops passing line items, WooCommerce builds break after a plugin update, and custom stores break whenever the product feed changes shape.

Check it in preview before it goes live

Every one of them is invisible from the flow builder and obvious the second you look at a rendered message. Klaviyo's preview renders against a real profile's event data, so send yourself a test from a genuine abandoned cart rather than a dummy one, and check it on a phone while you are there.

Empty in preview means empty in the inbox.

Added to Cart and Started Checkout catch different people

Sixteen percent of the threads are operators unsure which trigger to use, which is fair enough, because the choice sets the ceiling on everything downstream. It decides who was ever eligible.

Added to Cart fires early, so you get volume, weaker intent and a lot of browsing that was never going to convert. Started Checkout fires late, once somebody has handed over an email address and started paying. Fewer people. Far stronger signal.

What each trigger picks up

Choosing one means choosing which half of your abandoners to ignore, and that's a strategy decision rather than a setup detail.

  • Add to Cart alone and you never speak differently to the person who was one click from paying.
  • Started Checkout alone and everyone who filled a cart then drifted off is invisible to you.

In the accounts we audit, running a single trigger is very common.

Run both without them colliding

You can run both, and you should. Klaviyo's customer education team answered this directly in the community: build two sequences, one per trigger, then add a condition to the Add to Cart side reading Started Checkout zero times since joining. Anyone who progressed drops out cleanly.

Skip it and your shopper gets both sequences at once, and reads it as you emailing them twice about the same trainers. One condition, a minute of work, and the two stop fighting over the same person.

Placed Order zero times is skipping your buyers

Two faults in the table share a root, and it is the conditions you set. Ten percent of threads are recipients skipped by a filter, and another ten percent are the flow reaching people it should never have touched.

Klaviyo's abandoned cart template ships with a flow filter reading Placed Order zero times since starting this flow. The intent's sensible enough. It stops you emailing someone who's already bought.

Trouble starts when that Placed Order metric arrives late. On some store backends an order lands hours before the event reaches Klaviyo, so a filter evaluating against data that has not caught up drops the send. Your shopper bought nothing. Klaviyo doesn't know that yet.

The same conditions running the other way are what let wholesale accounts and repeat buyers into a flow built for first-timers. Across the accounts we audit, a failed filter on that one condition is the most common skip reason we find, and almost nobody has noticed it before we open the flow.

Read the skipped count first

Open your flow, click into message one and find the recipient numbers. Delivered is what everyone reads. Skipped is what tells you the truth.

Klaviyo names the skip reason for you. When it says failed filter, your sequence is doing exactly what you configured, and what you configured is wrong. That distinction matters, because a deliverability problem and a filter problem look identical from the revenue chart and need completely different fixes.

The multi-item cart trap

A second version of this lives on the Added to Cart trigger, where a trigger filter can exclude someone who adds a second item to the same cart. Reports of it recur often enough to be worth twenty seconds of your time, though Klaviyo's templates have shifted over the years, so check it against your own build rather than a forum screenshot.

Either way your move is identical. Read the skip reason.

Your re-entry window is blocking repeat abandoners

Every abandoned cart flow carries a condition governing how soon somebody can re-enter, usually reading has not been in this flow in the last X days. Set it once and a shopper who abandons twice gets one sequence and silence for the second cart. Your abandoned checkout flow inherits the same limit.

No best practice sets that number. Your purchase cycle does, so a three-week consumable and a furniture store should not share a re-entry window. For the time delays inside the sequence, we open about an hour after abandonment and follow roughly four hours later.

Two nearby settings get ignored just as often. Smart Sending can mute a cart email at the moment intent peaks, and a conditional split by cart value lets a big basket get its own message without a second flow from the flow library.

Read what the flow earns per recipient

Plumbing fixed, judge the Klaviyo abandoned cart flow on a number that means something.

Flow analytics gives you revenue per recipient for every message in the sequence, alongside the attributed revenue Klaviyo credits to it. That first figure is the one that tells you whether message three earns its place or just harvests unsubscribes.

Klaviyo's own analysis of 143,000 abandoned cart flows put the average revenue per recipient at $3.65, a rough check on your own recovery rate. Your order value and margin decide what healthy looks like, so read it as a guide, not a goal.

Track it per message rather than per flow. Flow totals hide the message losing you subscribers, and once a segment stops opening anything, cart recovery isn't your problem any more. Deliverability is.

What a Klaviyo audit looks for

These faults aren't unique to your cart flow. The same problems hide in your welcome sequence and your browse abandonment flow. Winback and post-purchase carry them too, and going through a whole account properly is slow, careful work.

That is the job our free Klaviyo audit does. We open the account and read the skip reasons across every sequence, checking which triggers still fire and which metrics stopped arriving months ago. Then we render your templates against real profiles and hand back a list of what is suppressing revenue, ordered by what it costs you.

We have run that teardown for more than 140 DTC brands since 2021, which is the only reason we know which faults to check first. Our order of work isn't a theory. It is the table at the top of this page.

The findings are yours whether or not you ever work with us. When your cart flow is live and under-earning, the fastest way to learn why is to get your free Klaviyo audit.

Cart flow questions operators ask

The same handful of questions came up again and again across those 89 threads, and the answers all follow from what is above.

Should I run abandoned cart and abandoned checkout together?

Yes, and the exclusion condition on the Add to Cart side is what makes it safe. Both triggers catch different shoppers at different moments, so running the pair widens your reach instead of doubling your sends.

What does skipped mean in my flow analytics?

Your profile entered the sequence then failed a condition before the message went out. Klaviyo names the reason. Failed filter is the common one, and it points at your own conditions rather than at deliverability, which is where people start looking and lose a week.

Does browse abandonment replace an abandoned cart flow?

No, and it is a weaker signal besides. Browse abandonment catches people who looked and left without adding anything, so it needs a softer message than cart recovery does. Run the two alongside each other once your cart flow earns.

How many messages should the sequence have?

Three is a fair default and roughly where most sequences stop earning, which brings you back to the measurement point above. Judge it on revenue per recipient for the last message. Near zero, with unsubscribes climbing, and you have your answer.

Do I need a discount code in there?

Not in message one, and that follows the same logic as the message count above. A shopper who was going to buy anyway costs you margin, and a discount code sent an hour in trains your list to wait. Save it for the last message, then test social proof or free shipping against it before assuming money off wins.

Written By
Bogdan Mihalache
Founder & CEO
Bogdan Mihalache is Founder and CEO of Email Kong, a London retention marketing agency working with over 140 DTC brands. He sits on Klaviyo's Partner Advisory Council and has spent over 10 years building email marketing strategies.