What is a Klaviyo abandoned checkout flow?
A Klaviyo abandoned checkout flow is a metric-triggered flow that starts when a shopper begins checkout and then doesn’t complete the order. On Shopify the trigger metric is Checkout Started. Klaviyo’s own help articles and some other integrations call it Started Checkout. Same idea, different label depending on where the event comes from.
It sits at the bottom of the abandonment funnel. Browse abandonment catches people who looked at a product, cart abandonment catches people who added to cart, and checkout abandonment catches the people who got furthest: they entered contact details at checkout and then stopped. That’s why it often recovers more orders per message than the earlier flows, and also why it’s the flow where mistakes are most visible to customers who did buy.
If you run a separate cart flow on Added to Cart, the two need to be built together. Our Klaviyo cart abandonment guide covers that flow and how to keep shoppers out of both at once. This page stays on the checkout side.
When does Checkout Started actually fire?
Checkout Started is recorded once the shopper has given checkout an email address (or phone number) Klaviyo can attach to a profile and moved forward. Before that point, Klaviyo has nothing to send to, unless the person was already identified through a signup form or an earlier email click.
Two practical consequences follow.
First, the flow only ever reaches identified shoppers. A brand-new visitor who opens checkout and leaves before typing an email address isn’t in the data at all. If someone tells you the checkout flow “should be catching more people”, the gap is usually here, not in the flow.
Second, the event has to arrive from your store integration before anything can happen. Klaviyo notes that integration data can sync with a delay and recommends waiting at least 1 hour and 15 minutes before the first message for that reason. Before building, open a test profile, start a checkout yourself, and confirm Checkout Started appears in that profile’s activity with the products and checkout link attached.
Turn off your store’s own reminder emails
Shopify and BigCommerce both have built-in abandoned checkout emails. If those stay on, the shopper gets one from the store platform and one from Klaviyo, often with different designs and different offers. Pick one system to own the message. In nearly every account we review, that should be Klaviyo, because only Klaviyo knows whether the person is also in a welcome series or has bought before.
Profile filters that keep the flow honest
The flow trigger decides who enters. Profile filters decide who stays. Klaviyo checks profile filters when someone enters and again before every message, which is what makes them the right tool for abandonment flows.
The filters most checkout flows need:
- Placed Order zero times since starting this flow. The essential one. If the shopper completes the order after the first email, they’re skipped from the second and third. In Klaviyo’s reporting, these show up as profiles “failing profile filters”, which in this flow is good news, not a bug.
- Has not been in this flow in the last X days. Without it, someone who opens checkout three times in a week to check shipping costs enters three times. A window of 7 to 14 days suits most stores.
- A consent filter, if your policy requires one. Entry depends on behavior, not subscription status, so profiles that are Never subscribed can enter and receive the emails. Whether that’s acceptable depends on where your customers are and how you collected the address at checkout. If you only want to email subscribers, add a filter on email consent so only Subscribed profiles qualify.
- Placed Order (Buy with Prime) zero times since starting this flow, if you sell through Buy with Prime. Otherwise customers who completed the order through Amazon look like abandoners.
A quick check worth making: if your Placed Order event comes from a different integration than your Checkout Started event (a custom checkout, or a headless build sending events by API), make sure both are attached to the same profile. When they aren’t, the filter never sees the order, and buyers keep getting “you left something behind”.
How long should you wait before the first email?
Two to four hours after checkout starts is a sensible first send for most stores. Klaviyo’s pre-built flows use a four-hour delay, and its guidance puts the second message 20 to 48 hours later. Two or three messages in total is enough.
Those are starting points, not rules. Adjust for how people actually buy from you:
- High-consideration purchases (furniture, bikes, anything over a few hundred dollars) often deserve a longer first delay. People leave checkout to compare prices or ask a partner, and an email after 90 minutes reads as pushy.
- Impulse and replenishment products can go a little earlier, as long as you respect the sync delay above.
- Time of day matters. A checkout abandoned at 11pm with a four-hour delay sends at 3am. Klaviyo’s time delays can wait until a specific time of day, which keeps late-night abandoners from getting a reminder in the middle of the night.
Delays accumulate in Klaviyo. A four-hour delay followed by a 24-hour delay means the second message goes out 28 hours after the trigger, not 24.
What should the messages contain?
The first email has one job: get the shopper back to their checkout with as little friction as possible. Keep it short. Show what they left, and give them a clear button back to it.
Show the actual products
Use Klaviyo’s dynamic product block, which pulls items from the triggering event and shows image, title, quantity and price for each one. Klaviyo advises saving the dynamic block before you restyle the template, because heavy template edits can break the block and leave you with an empty table. Preview the message against a real profile with a real checkout, not a placeholder.
Send them back to the same checkout
On Shopify, the return link uses {{ event.extra.checkout_url }}, which reopens the shopper’s checkout with their items and details. Other integrations use different variables (WooCommerce, Magento 2 and PrestaShop each have their own), and custom integrations depend on what your developer included in the event. If the button sends people to your homepage instead, you’ve lost most of the point of the flow.
What goes in emails two and three
The second email can answer the reasons people actually stop at checkout: shipping cost, delivery time, returns, payment options, sizing. Pull these from your support inbox rather than guessing. The third, if you send one, is where an incentive can go, if you use one at all.
Should the checkout flow include a discount?
Usually not in the first email. Many people who start checkout come back and buy without any incentive. Putting a code in the first reminder trains customers to abandon on purpose, and you give away margin on orders you’d have won anyway.
If you do offer something, two approaches keep it contained:
- Hold the incentive until the last message, so it only reaches people who ignored the earlier reminders.
- Add a conditional split on Placed Order “at least once over all time”. Existing customers take a path without a discount; first-time buyers, who often need more reassurance, get the offer.
A trigger split on the checkout’s value ($value on Shopify events) is also useful. A shopper abandoning a $40 checkout and one abandoning $900 aren’t the same problem. The bigger basket might get a longer wait, a message from customer service, or a reminder about payment plans instead of a percentage off.
A short scenario: a returning customer starts checkout on Sunday evening, gets interrupted, and receives a 15% code the next morning. She uses it. On her next order she abandons checkout deliberately and waits for the code. Nothing in the flow is broken, but the logic has taught her a habit. A split on order history would have prevented it.
Adding SMS to a checkout flow
Klaviyo’s advice is to launch the flow with email only, confirm it’s working, then add SMS. That order makes sense. SMS consent is separate from email consent, and SMS steps need their own consent check so you don’t attempt to send to profiles that can only receive email.
When both channels are in the flow, decide which goes first and leave space between them. A text at hour two and an email at hour three that say the same thing make neither more effective. A common pattern is email first, then an SMS only for people who haven’t clicked or bought by the second step.
How checkout abandonment fits with your other flows
Checkout abandonment is where flows collide most often, because the shoppers in it are usually in something else too.
A new subscriber who starts checkout an hour after signing up is now in the welcome series and the checkout flow. If both carry discounts, she sees two different codes in one afternoon. Decide which flow takes priority, and enforce it with filters or splits. One option is to exclude people who joined the welcome list in the last few days from the checkout flow’s discount path, since the welcome offer already covers them. Our Klaviyo welcome flow guide describes the splits on the welcome side.
Smart Sending also needs a decision here. It skips a message if the profile received another message recently (16 hours for email by default), and skipped flow messages aren’t rescheduled. That protects shoppers from being flooded, but it can also suppress the checkout reminder for someone who received a campaign that morning. Many stores leave Smart Sending on for later messages and consider turning it off for the first checkout email, which is time-sensitive. Test it against how often you send campaigns.
How to tell if the flow is working
Klaviyo’s flow analytics will show you placed orders and revenue attributed to the flow. Read those carefully. Attribution counts orders placed within a window after someone received or engaged with a message, so some of those shoppers would have come back regardless.
More useful questions:
- Of the profiles that entered, what share placed an order within the flow’s timeframe?
- How many were skipped, and for which reason? A high “failing profile filters” count usually means buyers exiting correctly. A high Smart Sending skip count needs a closer look.
- Do orders cluster after email one, or later? If almost nothing happens after email two, a third message is probably just noise.
- Are unsubscribe and spam complaint rates higher than your campaigns? If so, the flow may be reaching people who didn’t agree to marketing.
Troubleshooting common problems
Customers get the email after buying. Check that Placed Order is syncing and attached to the same profile, that the “zero times since starting this flow” filter is present, and that the first delay is long enough for the order event to arrive.
The flow sends almost nothing. Usually the event isn’t arriving, the flow or its messages are still in Draft or Manual, or the consent filter is excluding most entrants.
One customer needs to be taken out. For a profile that’s waiting in the flow, you can cancel the send from that message’s Recipient activity tab, which removes them from the remaining messages.
The product block is blank. The template was edited in a way that broke the dynamic block, or the test profile has no real checkout event behind it.
For a structured way to check every flow before it goes live, use our Klaviyo flow checklist.
Why isn’t my abandoned checkout flow sending to everyone who leaves checkout?
The flow can only reach shoppers Klaviyo has identified. Anyone who leaves before entering an email address, or whose profile fails your filters, won’t receive it.
How many emails should an abandoned checkout flow have?
Two or three. The first a few hours after checkout starts, the second roughly a day later, and an optional third if you use an incentive.
Can people who never subscribed receive the checkout flow?
In Klaviyo, yes, unless you filter them out, because entry is based on the checkout event rather than consent. Check your legal position and add a consent filter if you only want to email subscribers.