How to Set Up a Klaviyo Abandoned Cart Flow (That Actually Recovers Revenue)

Georgi Todoroz

August 15, 2026

Almost every Shopify store has an abandoned cart flow. Most of them are leaving money on the table without knowing it, because they are built on the default template, triggered on the wrong event, and missing a large slice of the people they should be catching.

A working abandoned cart flow recovers a meaningful share of lost checkouts and contributes a real chunk of total email revenue once it is mature. The gap between a flow that exists and a flow that recovers revenue comes down to a few specific decisions: which event triggers it, how the suppression is built, and whether you give away margin you did not need to.

This covers those decisions in order. The trigger choice first, because it is the one most setups get wrong.

Cart vs checkout: the trigger decision that breaks most flows

Klaviyo has two related triggers, and they fire at different points in the funnel.

Added to Cart fires the moment someone adds a product to their cart. Earlier in the journey, more people, lower average intent.

Started Checkout (also called Checkout Started) fires when someone reaches the checkout page and provides their email. Further down the funnel, fewer people, higher intent, and a better recovery rate per recipient.

image How to Set Up a Klaviyo Abandoned Cart Flow (That Actually Recovers Revenue)
image 2 How to Set Up a Klaviyo Abandoned Cart Flow (That Actually Recovers Revenue)

Here is the problem. Klaviyo’s default pre-built flow triggers on Started Checkout. If you set up your flow from the template and never changed it, you have an abandoned checkout flow, and every single person who added to cart but never reached checkout gets nothing. That is a large, high-value segment falling through the cracks. This is the single most common mistake, and most brands do not know they have it.

You have two real options:

One flow on Started Checkout. The clean default. Higher intent, easier to manage, and what most stores should run first. If you only build one flow, build this.

Two flows, one per trigger. A Started Checkout flow for high-intent checkout abandoners, and a separate Added to Cart flow for the earlier-stage browsers who never reached checkout. More coverage, more revenue, more setup.

If you run both, you have to stop the same person getting both sequences. The fix is a flow filter on the Added to Cart flow that excludes anyone who has started checkout since entering the flow. Without it, one shopper can get six emails in three days and you have trained them to unsubscribe.

A practical path: start with Started Checkout, get it mature and converting, then layer in the Added to Cart flow with the exclusion filter once you want the extra coverage.

Get the suppression right, or the whole thing leaks

Suppression is where abandoned cart flows quietly fail. Two filters matter, and one of them is the most common logic error in the whole Klaviyo setup.

Suppress purchasers. Add a flow filter: placed order zero times since entering the flow. Klaviyo re-checks filters before each send, so anyone who buys after email 1 drops out automatically and does not get emails 2 and 3. The pre-built flow usually includes this, but verify it, because a flow chasing people who already bought is the fastest way to look broken and erode trust.

Suppress across flows with AND, not OR. If you run cart, checkout and a browse abandonment flow, they need to not overlap. This is where people get caught out. The instinct is to write a filter like “has not added to cart OR started checkout OR placed order.” That is wrong. With OR, the filter passes anyone who meets any single condition, so someone who added to cart and viewed a product still slips into the browse flow when they should be in cart recovery. Use AND when you mean “none of these things happened.” This one is subtle and it leaks revenue silently.

The principle: each abandoner should be in exactly one flow, matched to their furthest point in the funnel. Checkout beats cart beats browse.

Turn Smart Sending off in this flow

Smart Sending skips anyone contacted in the last 16 hours (or whatever your window is). On a campaign, that is sensible. On an abandoned cart flow, it is actively harmful.

If a shopper got a campaign this morning and then abandons a cart this afternoon, Smart Sending will silently skip your recovery email. You lose the highest-intent message you will ever send them to avoid a second touch they would have welcomed. Abandoned cart and checkout are the single most expensive places to leave Smart Sending on. Turn it off in this flow.

The email sequence that recovers without discounting

Three emails over roughly 48 to 72 hours is the standard high-performing structure. Each email has a distinct job, and a fourth rarely improves recovery while reliably adding unsubscribes.

image 1 How to Set Up a Klaviyo Abandoned Cart Flow (That Actually Recovers Revenue)

Email 1: the reminder (1 to 2 hours)

A short delay, not instant. Most carts are abandoned because someone got distracted, not because they need convincing, and many come back on their own within the hour. Send too fast and you waste the touch on people who were going to return anyway.

This email is friction-free and has no discount. A single dynamic product block pulling the actual cart items, one line of copy, one button back to checkout. Plain and specific beats clever: “Your [product] is waiting” outperforms a witty subject line.

Email 2: handle the objection (around 24 hours)

The reminder did not land, so do more than repeat it. This is where you remove the reasons people hesitate: shipping and returns policy, reviews or social proof on the product in the cart, an answer to the common objection in your category. Still no discount in most cases. You are reducing friction, not buying the sale.

Email 3: the close (48 to 72 hours)

The last touch, and it should feel like one. Honest urgency, and if you are going to use an incentive at all, this is the only place it belongs. A time-limited offer forces a decision in a way an open-ended one does not.

On the incentive itself: free shipping often beats a percentage discount, because it removes a barrier without signalling that your product is worth less. Test it against a modest percentage before defaulting to “10% off.”

After email 3, exit the flow. Continuing past 72 hours generates more unsubscribes than conversions and tells inbox providers your list has an engagement problem.

Do not give away margin you did not need to

The most repeated piece of cart advice is “always include a discount.” It is wrong, and it is expensive.

A discount in every sequence trains shoppers to abandon on purpose, because they learn the code is coming. You end up paying margin on sales that would have closed at full price. Most carts are abandoned over distraction or friction, not price, so the first two emails should solve for those, not reach for a coupon.

Where a discount earns its place is conditionally and late: in the final email, ideally only to first-time buyers or high-value carts, and time-limited. Returning customers and full-margin buyers do not need it. If you want to be precise about who actually needs an incentive to convert, that is a conditional-split build, which is a more advanced layer worth adding once the core flow is solid.

Dynamic product blocks: the detail that quietly breaks

The dynamic block that shows the abandoned items is what makes these emails work, and it is also what breaks most often. Each integration uses its own tags, so a block copied from a guide or built from scratch frequently renders empty.

Test it with a real cart before going live, on both desktop and mobile, and save a working version of the block before you edit it. An abandoned cart email that does not show the cart is just a generic nudge, and it converts like one.

Priority order

If you are building or fixing this from scratch:

  1. Check your trigger. If it is Started Checkout only and you call it “abandoned cart,” you are missing the add-to-cart segment. Decide one flow or two.
  2. Fix suppression. Purchaser exit filter on, cross-flow filters using AND not OR.
  3. Turn Smart Sending off in the flow.
  4. Build the three-email sequence: reminder, objection handler, close.
  5. Hold the discount to email 3, conditionally, and test free shipping against a percentage.
  6. Test the dynamic product block with a real cart on mobile and desktop.

The first three are not about better emails, they are about whether the flow reaches the right people at all. A plain three-email sequence with correct triggers and suppression will out-recover a beautifully designed flow that fires on the wrong event and leaks across its filters.

image 3 How to Set Up a Klaviyo Abandoned Cart Flow (That Actually Recovers Revenue)

More advanced layers sit on top of this once it is working: conditional splits by cart value or customer type, SMS layered onto the email sequence (layered, not replacing it, since email carries the dynamic blocks and the revenue), and identity resolution to catch the events that go missing across sessions. Those are worth it after the foundation above is solid. If you are not sure how much your current flow is actually missing, that is worth a closer look before adding anything on top.

Free abandoned cart audit

If you want a second pair of eyes on your abandoned cart setup, or you suspect your flow is firing on the wrong event and leaking recoverable revenue, book a free 30-minute audit with us. We will check your triggers, your suppression logic, and where the flow is quietly missing carts. 

[Book your free audit]

Or if you want to talk through strategy first: Book a strategy call

Jamie Watkins, Director at UndergroundEcom [LinkedIn] | [UndergroundEcom.com]

What it’s Like to work with Underground Ecom?

Want to work with our team?