Loading tutorials…
Loading tutorials…
Abandoned cart is the second-highest-revenue Klaviyo flow after welcome. A well-tuned cart flow recovers 8-12% of abandoned carts. A bad one recovers 1-3%. The difference is timing, filters, and discount strategy.
Who this is forE-commerce store owners with a working Klaviyo + store integration, processing 50+ checkouts/week. If you're under 50 carts/week, the flow still helps but the analytics need more time to be meaningful.
What you'll need
Step 1
Klaviyo → Flows → + Create Flow → From Scratch → Trigger: Metric → Started Checkout.
Klaviyo → Flows → + Create Flow → From Scratch.
Trigger type: Metric → Started Checkout.
Trigger filter: $value greater than $X (your free-shipping or AOV threshold — usually $50-100). This filters out gift-card or low-value test checkouts.
This trigger fires when a customer reaches checkout but doesn't complete. It's more reliable than "Added to Cart" because Added to Cart fires even on accidental clicks.
Step 2
Two flow filters: (1) has not Placed Order since the trigger, (2) opted in to marketing. Without these, you'll send 'come back to your cart' to people who already bought.
Flow filter 1: "What someone has done" → Placed Order → "Has not done" since starting this flow.
Flow filter 2: Profile property → "Email Marketing Consent" → equals "subscribed."
Optional flow filter 3 for legal compliance in some jurisdictions: Profile property → "Country" → does not equal "Germany"/"Austria" (some regions require explicit cart-abandonment consent separate from marketing consent).
Save filters.
Step 3
Time delay: 45 minutes. No discount. Hero of the abandoned product(s) + CTA back to cart. The point is to remove friction, not to bribe.
Add a Time Delay block: 45 minutes after the trigger. 30-60 min is the optimal window — 45 is the safest default if you don't have test data yet.
Add an Email block.
Subject: 'You left something behind' or 'Still thinking it over?' Soft and neutral.
Body: Hero block with the abandoned product(s) via dynamic Product Block. CTA button: "Complete your order" — link to the checkout-resume URL (Klaviyo auto-populates this via {{ event.checkout_url }}).
No discount. Many customers just got distracted — they don't need a reason to come back beyond the reminder.
Save and test the email's preview with Klaviyo's preview-with-data feature to verify the dynamic product block renders correctly.
Step 4
Time delay: 22.5 hours after Email 1 (so 24h total from trigger). Customer reviews, return policy, free shipping reassurance.
Add Time Delay block: 23 hours after Email 1.
Add Email block.
Subject: 'Here's what customers say about [product]' or '5 reasons people love this'.
Body: 1 customer photo or 2-3 star reviews of the abandoned product → return/shipping policy banner → product block (same item) → CTA.
Still no discount.
Step 5
Time delay: 48 hours after Email 2 (so 72h total). 10% off, hard expiration. This is your last touch.
Add Time Delay block: 48 hours after Email 2.
Add Email block.
Subject: 'Last chance — 10% off your cart, expires in 24 hours.'
Body: discount code in big text, the abandoned product, a clear expiration timestamp ({{ now()|date:"M jS" }} or similar).
Discount strategy: keep this email optional. For premium/high-AOV brands, skip discount entirely — emails 1-2 alone recover 6-9%. For commodity brands, the 10% discount in Email 3 lifts recovery by 2-4 points.
Discount applied via a unique-per-subscriber code (Sign-up Forms → Coupons → variable code), not a generic 'CART10' that gets posted to honey.io within a week.
Step 6
Smart Sending throttles, Conversion Exit removes converters from later emails, and conversion tracking attributes revenue.
On every email: enable Smart Sending (16-hour throttle is default).
On the flow → Flow Settings → Enable "Exit on Conversion" → Placed Order, with 7-day attribution window.
On the flow → Conversion Tracking → add Placed Order as the conversion metric. This is what shows up in Flow Analytics → Revenue.
Without these, you'll send "complete your order" to someone who just placed it — and Klaviyo won't credit the flow with the revenue.
Step 7
Activate the flow. After 14 days of data, check Placed Order Rate per email. Tune the time delay on Email 1 first (highest leverage).
In the flow editor → set all emails to "Live."
Wait 14 days for meaningful data (most stores need 200+ Started Checkouts in the flow for stat-sig analytics).
Open Flow Analytics → check Placed Order Rate per email. Healthy benchmarks: Email 1 = 4-7%, Email 2 = 2-4%, Email 3 = 2-4%.
If Email 1 is below 3%, test moving the delay from 45 min → 30 min or 90 min. The right delay varies by audience.
If Email 3 is above 5%, your discount is doing all the work — consider whether the brand can sustain that long-term.
Re-test cadence and delay every 90 days. Consumer behavior shifts.
Common mistakes
Triggering on Added to Cart instead of Started Checkout
What goes wrong: Flow fires for every accidental cart-add. Recovery rate drops from 8-12% to 2-4% because most "abandoners" never intended to buy. Conversion-per-send looks terrible and the flow gets blamed.
How to avoid: Switch trigger to Started Checkout. Recovery rate roughly doubles within 14 days.
Discount in Email 1
What goes wrong: Trains your audience to abandon carts to get discounts. Margin erodes 8-12% over 90 days as repeat customers learn the pattern. Loses 10-18% of recoverable abandoned-cart revenue (because Email 1's soft-reminder lift is destroyed by discount conditioning).
How to avoid: Hold discounts until Email 3 at the earliest. Or skip discounts entirely on brands with strong margins. Test by removing the Email 1 discount and watching cart-recovery rate over 30 days — typically rises 1-3 points without the discount.
Hardcoding /cart in the CTA instead of using the dynamic checkout_url
What goes wrong: Subscribers click 'complete your order' and land on an empty cart. They abandon again, this time annoyed. Recovery rate drops to 1-2%.
How to avoid: Use {{ event.checkout_url }} in every CTA. Test by previewing the email with real cart event data in Klaviyo's preview pane.
No Smart Sending — duplicate emails on campaign days
What goes wrong: Customers get an abandoned-cart email + a campaign blast within 2 hours of each other. Unsubscribe rate triples on campaign days. Drops open rate from 28% to 16% over 60 days as Gmail starts filtering you.
How to avoid: On every email in every flow, enable Smart Sending. 16-hour throttle is the default and is the right setting for 95% of brands.
No conversion exit — sending recovery emails to customers who already bought
What goes wrong: Customer completes the purchase from Email 1, then receives Emails 2 and 3 with discount codes for an order they already placed. Damages trust. Causes 'how do I get my discount on my last order' support tickets.
How to avoid: Flow Settings → Enable Exit on Conversion → Placed Order. Attribution window: 7 days. This is one setting per flow; don't skip.
Static product block instead of dynamic
What goes wrong: Email shows the same hero product to every subscriber regardless of what they abandoned. Click-through drops 40-60% because the product in the email doesn't match the cart.
How to avoid: In the email editor, use Klaviyo's dynamic Product Block bound to {{ event.extra.line_items }} (Shopify) or equivalent for WooCommerce. The email then auto-renders the abandoned product.
Recap
Done — what's next
How to build a Klaviyo welcome series flow that actually converts
Read the next tutorial
Hand it off
Abandoned cart is the second-biggest single line of email revenue. A specialist build (with copy, design, and 30 days of tuning) typically costs $400-800 at $14-16/hr — and on a $50K/mo store, you'd see $3-6K/mo of additional recovery within the first quarter.
See specialist rates
2-3. Two emails recover ~6-9% of carts. Three emails recover ~8-12%. Four or more shows diminishing returns and inflates unsubscribe rate. Start with 2 and add Email 3 (discount close) once Email 1 and 2 are tuned.
30-90 minutes is the sweet spot for most brands — 45 minutes is the safest default. 1 hour is fine. 4 hours is too late; recovery rate drops 30-40% past the 2-hour mark because the buying intent has faded.
Yes if both are on. Disable Shopify's native abandoned-cart email (Shopify → Settings → Notifications → Abandoned checkout → uncheck "Automatically send abandoned checkout emails"). Klaviyo replaces it and gives you control over timing, design, and analytics.
The Started Checkout event payload includes line_items (Shopify) or cart_items (WooCommerce). The dynamic Product Block reads from this payload. As long as the integration's catalog feed is synced, the email auto-renders the actual abandoned products.
Yes — at scale. Use Klaviyo's Conditional Splits to branch the flow on $value. Carts over $200 might get free shipping instead of % off. Carts under $50 might get free gift instead of discount. This adds 1-3 points of recovery but only matters at 1K+ abandoned carts/month.
Industry median is 5-8%. Top-quartile Klaviyo accounts hit 10-14%. Below 4%, the flow has setup issues (wrong trigger, no conversion exit, bad timing). Above 15%, you may be over-discounting and need to check whether the lift is sustainable.
Klaviyo
Welcome flows are the highest-revenue flow in most Klaviyo accounts — typically 30-45% of automated email revenue. A bad welcome flow leaves 60% of that on the table. This is the build that captures it.
Klaviyo
Browse abandonment is where stores recover an extra 3-6% of email revenue most don't even know exists. Done wrong, it cannibalizes the cart flow. Done right, it's pure incremental revenue.
Klaviyo
Post-purchase is where you turn a one-time buyer into a repeat customer — or don't. The flow needs different content for first-time vs returning buyers, and the timing of the review request alone shifts retention 10-15%.
Klaviyo
Most stores send to 'everyone who bought.' That's a list, not a segment. RFM + Predictive CLV segmentation is what separates email-as-newsletter from email-as-channel — typically 15-30% revenue lift on the same list.
Klaviyo
DIY Klaviyo is a great call — until it isn't. Email should be 25-40% of e-commerce revenue. If yours is at 10-15%, the gap is your list isn't being worked. Here's the honest framework for when to hire.