How to Build an Abandoned Cart Flow in Klaviyo (Cart + Checkout)
We build two abandonment flows for every client: abandoned cart and abandoned checkout. Most brands only have checkout set up. The ones that have both consistently outperform the ones that don't.
The difference is simple. Abandoned cart catches people who added a product but never started checkout. Abandoned checkout catches people who began entering their information and left. Different intent levels, different timing, different treatment.
Here's how to build both, keep them from overlapping, and avoid the mistakes we fix in almost every audit.
The Abandoned Cart Flow (3 Emails)
This is the flow most brands are missing entirely. Klaviyo's default templates focus on checkout abandonment, so unless someone deliberately set up a cart-specific trigger, this audience is falling through the cracks.
The Technical Setup
- Trigger: Added to cart (the person has NOT started checkout or placed an order)
- Initial delay: 1-4 hours
- Flow filters: Has not placed order since entering this flow. Has not started checkout since entering this flow.
- Re-entry window: 7 days (checkout intent is high — keep the window tight)
The initial delay matters. A lot of people add to cart, get distracted, and come back on their own within an hour. Emailing them before they've had a chance to return naturally wastes a send. We typically start at 4 hours and test down.
The flow filters do the heavy lifting. If someone enters this flow and then starts checkout (or buys), they exit automatically. No "you left something in your cart" email after they already purchased.
The Emails
Email 1: Cart Reminder + Brand/Policy Highlights
Triggers after the initial 1-4 hour delay
Show them what they left in their cart using dynamic product blocks. Pair it with your key brand differentiators — free shipping thresholds, return policy, trust signals. The cart reminder itself does most of the work. The policy information just removes friction.
No discount in this email. Ever. More on that below.
Email 2: Social Proof — Reviews That Address Real Objections
Delay: 1 day after Email 1
Don't throw in a star rating and call it done. Pick reviews that speak to the reasons people hesitate. If the objection is fit, find a review about fit. If it's price, find one about quality relative to cost. The reviews should feel like they're answering the questions running through the customer's head.
Email 3: Customer Service + Dynamic Product Recommendations
Delay: 1 day after Email 2
Shift the tone from selling to helping. "Still deciding? We're here if you have questions." Include a direct link to customer service or a reply-to that actually goes somewhere. Pair this with dynamically suggested products — if they were looking at a jacket, show matching accessories or similar styles.

The Abandoned Checkout Flow: What's Different
Same email framework. Different trigger, tighter timing, different dynamic content.
| Cart Abandon | Checkout Abandon | |
|---|---|---|
| Trigger | Added to cart | Started checkout |
| Initial delay | 1-4 hours | 30 min - 1 hour |
| Re-entry window | 7 days | 7 days |
| Dynamic links | Back to cart | Back to checkout page |
| Dynamic content | Cart items | Checkout session items |
The shorter initial delay is the key difference. Someone who started checkout already decided to buy — something interrupted them. A faster follow-up makes sense because the window to catch them is tighter.
The Bundle Approach
We build both flows as one project. The email strategy, copy structure, and design are the same across both — we update the trigger, the dynamic content blocks, and the links. You're getting two flows for roughly the effort of 1.5.
This matters because a lot of brands skip the cart flow thinking "that's twice the work." It's not. Once you've built the checkout flow, duplicating it with a cart trigger and adjusted content takes a fraction of the time.

Cart trigger: Added to Cart

Checkout trigger: Checkout Started
The Split Most Guides Don't Cover: Purchasers vs. Non-Purchasers
This is one of the highest-impact changes you can make to any abandonment flow, and almost nobody talks about it.
We split every cart and checkout flow on one condition: has the person ever purchased from you?
The conditional split checks "has placed order 0 times over all time." Two paths emerge:
Never Purchased (YES path)
These people have never bought from you. They're still on the fence. If you collected their email through a pop-up that promised a discount, this is where that code lives.
But here's the critical detail: Email 1 is still no discount. Just a reminder. A plain cart recovery email.
Why? Because a meaningful chunk of people convert on the first email at full margin without ever needing the incentive. Most people don't remember the second and third email in an abandonment flow — they respond to the first one and move on. By holding the discount until email 2, you recover some sales at full price before giving anything away.
Email 2 or 3 introduces the welcome/signup discount code for non-purchasers who didn't bite on the reminder alone. If you're using dynamic coupon codes (and you should be), create a separate dynamic code for this flow so you can track its performance independently.
Has Purchased Before (NO path)
Existing customers don't get a discount. Period. They already know your product. They already trust you enough to have bought once.
These people get reminders and objection handling only. "Still thinking about it? Here's what other customers are saying." "Have questions? Our team can help." No discount code, no percentage off, no incentive beyond the product itself.
This split alone can meaningfully improve your flow margins. You stop giving discounts to people who were going to buy anyway, and you reserve incentives for the people who actually need a push.
How Cart and Checkout Work Together Without Overlapping
This is where most setups fall apart.
If someone adds to cart and then immediately starts checkout, you don't want them getting emails from both flows. The checkout flow takes priority because it represents higher intent.
The abandoned cart flow has flow filters that exclude anyone who has started checkout or placed an order since entering the flow. The moment someone progresses to checkout, they're out of the cart flow.
The abandoned checkout flow only filters for placed orders. It doesn't need to worry about the cart flow because it's already higher in the priority chain.
The AND vs. OR Mistake That Breaks Everything
We see this constantly in audits. A brand's browse or cart abandonment flow uses OR logic instead of AND in its flow filters.
Here's how it breaks. Your browse abandon filters say: has not added to cart OR has not started checkout OR has not placed an order. A person adds to cart AND views a product. The browse flow checks: have they not added to cart? Fail. Have they not started checkout? Pass. Because it's OR, passing one condition is enough. They get both browse and cart flows.
With AND, they must meet ALL conditions. Someone who added to cart fails "has not added to cart" and gets properly excluded.
The rule of thumb: every time you're filtering on "zero times," it needs to be AND. If you're using OR with zero-times conditions, your exclusion logic is broken and people are getting multiple flows simultaneously.
Skip the Cross-Flow Exclusions
We regularly find flows with filters like "has received 0 emails in the last 30 days where the flow is [other flow]." In almost every case, this is unnecessary. If your flow filters use proper AND logic and your triggers are set up correctly, each flow already handles its own prioritization. Cross-referencing other flows adds complexity without adding function. Remove them.
The Details That Actually Matter
Funnel-Based Re-Entry Windows
The lower someone is in the funnel, the tighter your re-entry window should be — because higher intent means a shorter decision cycle.
- Checkout abandon: 7 days max
- Cart abandon: 7 days
- Browse abandon: 14-21 days
Some people are serial cart-adders. They browse, add stuff, leave, come back next week and do it again. Without a re-entry window, these people get the same 3-email sequence every time. That's a fast track to an unsubscribe.
Don't Lead With a Discount
If customers learn that abandoning their cart gets them 10% off, they'll start doing it on purpose. We've seen this with multiple brands — conversion rate on the abandonment flow goes up, but overall revenue drops because people who would have paid full price are now trained to abandon first.
One brand we audited was giving discounts to both prospects and existing customers in their cart flow. The existing customers were converting at roughly the same rate before the discount existed — pure margin giveaway. After splitting the paths and removing the discount from existing customers, flow revenue held while margins improved.
Lead with brand reinforcement, shipping policy, and social proof. Reserve discounts for non-purchasers in email 2 or 3. Save your strongest incentives for winback, where someone has genuinely gone cold.
Stop Adding Unnecessary Conditional Splits
We see flows with a conditional split before every email: "Has not placed order since joining this flow." YES path goes to the next email, NO path goes to nothing. The flow filter at the top already handles this — it evaluates continuously and exits people when the condition is met. Those splits just add clutter and make the flow harder to maintain.
Link to the Right Page
Your homepage is your worst-converting page. Your product pages convert better. Your cart page converts better than that. Your checkout page converts best.
We regularly find abandonment flows linking people back to the homepage. That's sending a high-intent buyer to your lowest-converting page. Cart abandon emails should link to the cart. Checkout emails should link to checkout. Browse should link to the product they viewed. Always send people to the deepest funnel point they've already reached.
Dynamic Content
Both flows should show the actual products in the customer's cart, not generic best sellers. Klaviyo's dynamic cart blocks pull in specific items, images, prices, and links. You already know what they want — show it to them.
Timing and Optimization
Once both flows are live, here's where to focus testing:
Test the initial delay. 1 hour vs. 4 hours is the first split to run. Some audiences respond better to faster follow-up; others find it pushy. The data will tell you.
When to add a 4th email. Usually, don't. Three emails over 3-4 days is the sweet spot. A 4th email rarely moves the needle enough to justify the extra send. If you test one, make it pure value — a buying guide, a comparison chart — not another "don't forget!" reminder.
How This Connects to Your Other Flows
Cart and checkout abandonment sit in the middle of a larger flow architecture. Browse abandonment catches people higher in the funnel; post-purchase flows pick up after conversion. For the full picture of how all these flows work together, see our Complete Guide to Klaviyo Flows.
Build These for Your Store
- Flow Builder Tool — scope out which flows you need and what they cost
- Browse Abandonment Deep-Dive — the flow that sits right above cart abandon in the funnel
- Welcome Flow Examples — where every new subscriber relationship starts
- Complete Guide to Klaviyo Flows — the full architecture
Want us to build these for you?
We'll audit what you have, tell you what's missing, and build both flows as a bundled project.