Loading tutorials…
Loading tutorials…
WooCommerce does not ship with abandoned cart emails out of the box. You route through either Klaviyo, Mailchimp, or a dedicated Woo plugin. Each has different trigger timing and recovery rates — and the wrong choice costs 5-10% of recoverable revenue.
Who this is forWooCommerce owners doing $5K+/month with a checkout completion rate below 65% (typical Woo benchmark). Abandoned cart emails typically recover 5-12% of abandoned checkouts on Woo — and the gap between 'set up by default' and 'set up well' is 3-5 percentage points.
What you'll need
Step 1
Three valid paths. Klaviyo: best for $5K+/mo stores. Mailchimp: ok for $1-5K/mo. Native plugin (CartFlows, Cart Recovery for WooCommerce): for stores that cannot justify ESP cost.
Option A — Klaviyo. Best performance, best deliverability, deepest segmentation. Cost: free up to 250 contacts, then ~$45/mo at 1K contacts, ~$150/mo at 5K contacts. Recommended for any store doing $5K+/mo.
Option B — Mailchimp via the "Mailchimp for WooCommerce" plugin. Cheaper at small scale (free up to 500 contacts, paid plans from $13/mo). Less sophisticated segmentation. Suitable for stores under $5K/mo or those already on Mailchimp for newsletters.
Option C — Native abandoned cart plugin like "Abandoned Cart Lite for WooCommerce" or "Retainful." Uses WooCommerce site to send emails (or routes through wp_mail / SMTP plugin). Cheaper but worse deliverability and limited segmentation. Only justified if you absolutely cannot run an ESP.
This tutorial walks Option A (Klaviyo) as the primary. The Mailchimp path is similar; the plugin path is briefly outlined at the end.
Critical: pick ONE. Running Klaviyo abandoned cart AND a Woo-plugin abandoned cart will double-email customers and tank your sender reputation within a week.
Step 2
Abandoned cart triggers on the Started Checkout event — not Added to Cart. Validate the event fires from WooCommerce → Klaviyo before building the flow.
In Klaviyo → Analytics → Metrics → search "Started Checkout." If the metric does not exist, your Woo→Klaviyo integration is not firing this event.
Fix: in the Klaviyo for WooCommerce plugin settings, enable "Track Started Checkout." See the "Connect Klaviyo to WooCommerce" tutorial for the full plugin setup.
Validate: open your store in incognito with a Klaviyo-tracked email. Add product → reach checkout → enter your email in the email field. Within 60 seconds, Klaviyo → Profiles → your email should show Started Checkout in the activity feed with the cart contents (items, value).
If the event fires but no items appear, the plugin is partially configured — the catalog sync is missing. Re-run product catalog sync in the plugin settings.
Without Started Checkout firing with items, your abandoned cart emails will be empty templates with no product context.
Step 3
Klaviyo → Flows → Create Flow → use the "Abandoned Cart" template. Trigger: Started Checkout. Filter: "has not placed order since starting checkout."
In Klaviyo → Flows → Create Flow → Browse Templates → "Abandoned Cart." Klaviyo provides a 3-email template that works as a strong baseline.
Trigger: Started Checkout metric. Critical: NOT "Added to Cart" — that fires for shoppers who never seriously intended to buy.
Flow filter (the gate on every email): "What someone has done (or not done)" → has not "Placed Order" since starting Started Checkout. This ensures the flow stops once someone completes the purchase.
Profile filter: "Has not unsubscribed" AND "Has consented to marketing." Without consent filtering, you risk GDPR/CCPA issues.
Set the flow to "Live" only after all 3 emails are written. A live flow with one email and 2 placeholders sends spam to real customers.
Step 4
Email 1: 30-60 min after abandonment (urgency). Email 2: 24h after (reminder + soft pitch). Email 3: 48-72h after (final push, often with discount).
Email 1 — 30 to 60 minutes after Started Checkout. Subject: "You left something behind?" Body: friendly reminder, show the cart, single CTA "Complete your order." NO discount. This email recovers ~50% of recoverable carts and trains buyers to expect a discount only later.
Email 2 — 24 hours after Started Checkout. Subject: "Still thinking it over?" Body: address objections (shipping speed, return policy, sizing). Show cart again. Single CTA. Still NO discount.
Email 3 — 48 to 72 hours after Started Checkout. Subject: "Here's 10% off if you want it." Body: short, give a coupon code (10% or free shipping — not both), expiration in 24h. This email is your final shot.
Critical decision: don't default to discounting in Email 1. You train your audience that abandoning is profitable. 30-50% of buyers come back from email 1 with no discount — you keep full margin on those.
Each email should pull the cart contents dynamically. Use Klaviyo's {{ event.extra.line_items }} variable to render product cards with image, name, price.
Step 5
For Email 3, use Klaviyo dynamic coupons (preferred) or a fixed coupon code from WooCommerce. Dynamic coupons prevent code-sharing on coupon aggregator sites.
Option A — Dynamic coupons via Klaviyo: Klaviyo → Account → Settings → Coupons → Add coupon. Connect to WooCommerce. Klaviyo generates a unique code per recipient that expires.
Option B — Fixed coupon: WooCommerce → Marketing → Coupons → Add coupon. Set discount %, expiration, usage limit. Insert the code as plain text in Email 3.
Use dynamic coupons if your traffic is high (>5K Started Checkouts/month) — fixed codes get scraped and posted on RetailMeNot/Honey within days, eroding margin on non-abandoned-cart shoppers.
Set usage limit to "1 per customer" on any abandoned cart coupon. Otherwise customers learn to abandon for the discount on every order.
Set expiration to 24-48 hours from email send. Urgency is what drives recovery — open-ended discounts feel like permanent price drops.
Step 6
Exclude recent purchasers (within 7 days), VIPs, and subscribers who unsubscribed. Suppress on bounce and complaint events.
In Klaviyo → Flow → Profile filter: exclude profiles where "Placed Order zero or more times in the last 7 days." Recent buyers should not get abandoned cart emails about a new cart they started.
Exclude VIPs (segment: lifetime spend > $X) if you want to handle them differently (e.g., personal outreach instead of automated discount).
Suppress profiles in segments: "Unsubscribed from Newsletter" AND "Hard bounced" AND "Spam complaints."
Configure Klaviyo bounce/complaint automation: Klaviyo → Account → Settings → Email → Automatic suppression. Default settings are usually fine.
These exclusions protect sender reputation. Sending abandoned cart emails to bounced addresses kills inbox placement for everyone else.
Step 7
Send each email to a test profile. Walk through the abandonment, confirm timing, validate variables render, confirm coupon code is unique.
In Klaviyo → Flow → click "Preview email" for each email. Send to a test address (your own). Walk the flow as if you abandoned.
Confirm: cart contents render with product image, name, price. Total renders correctly. CTA links to the recovery URL.
For Email 3 with coupon: confirm the code is unique per recipient (Klaviyo dynamic) AND that applying the code on WooCommerce checkout actually grants the discount.
Switch flow to "Live." Monitor for the first 7 days — Klaviyo Flow Analytics shows open rate, click rate, placed-order rate.
Benchmarks: Email 1 open rate 40-55%, click rate 10-18%, placed-order rate 3-8%. Email 3 placed-order rate 4-10%. Total flow recovery: 8-15% of Started Checkout events.
If recovery is below 5%, the most likely cause is deliverability (going to spam) — verify DKIM, DMARC, and send a test to mail-tester.com for diagnostics.
Common mistakes
Triggering on Added to Cart instead of Started Checkout
What goes wrong: Flow fires on every Add to Cart — including the 70-80% of shoppers who add and bounce. They get abandoned cart emails for products they never seriously considered. Click rate drops below 5%, spam complaints climb, deliverability suffers.
How to avoid: Trigger on Started Checkout. This filters to only shoppers who reached the checkout page (a much stronger purchase signal). Recovery rate typically lifts 2-3x.
Discount in email 1
What goes wrong: You train customers that abandoning is profitable. Repeat buyers learn to always abandon for the 10% off. Lifetime margin drops 5-10%. Once trained, you cannot un-train them.
How to avoid: NO discount in emails 1 and 2. Discount only in email 3 (48-72h). 30-50% of recoveries happen without discount when sequenced this way — preserving margin on those orders.
No dynamic coupon codes
What goes wrong: A fixed code like SAVE10 gets posted on RetailMeNot/Honey within days. Now every shopper on your site sees the popup with the 'abandoned cart' discount and uses it on full-price orders. Margin erodes.
How to avoid: Use Klaviyo dynamic coupons. Each recipient gets a unique code that cannot be shared. Set 1 use per customer + 24-48h expiration.
No suppression on recent purchasers
What goes wrong: A customer buys, then 3 days later browses again and abandons. They get a "you forgot something" email about a cart they never seriously meant to complete. Feels spammy. Unsubscribe rate climbs.
How to avoid: Profile filter in the flow: exclude "Placed Order in the last 7 days." Recent buyers do not need an abandoned cart push.
Running plugin AND Klaviyo abandoned cart
What goes wrong: Customers receive duplicate emails — one from Klaviyo, one from the Woo plugin. Confusing experience, deliverability tanks (Gmail flags duplicate senders as spam), and complaints spike.
How to avoid: Pick ONE source. Deactivate the other. Run Klaviyo if available; only use the plugin if you cannot afford an ESP.
Skipping deliverability setup
What goes wrong: After ~500 sends, Gmail and Outlook start routing your abandoned cart emails to spam. Open rates drop from 50% to 12%. Recovery rate collapses. You blame Klaviyo when actually your domain authentication is broken.
How to avoid: Set up DKIM CNAME records + DMARC TXT record before going live. Verify authentication in Klaviyo → Account → Domains. Send a test to mail-tester.com for a deliverability score above 9/10.
Recap
Done — what's next
How to connect Klaviyo to WooCommerce with full event sync
Read the next tutorial
Hand it off
Abandoned cart is the single highest-ROI email flow in ecommerce. A vetted Klaviyo specialist will build the flow, write copy that converts, and tune deliverability — typically $300-600 setup at $14-16/hr. Ongoing optimization (testing copy, timing, discount strategy) runs $200-400/mo.
See specialist rates
8-15% of Started Checkout events end up as Placed Order via the flow. Top-decile setups push 15-20%. Below 5% almost always indicates a deliverability issue (emails going to spam) or wrong trigger (firing on Added to Cart, not Started Checkout).
3 is the sweet spot. 1 misses the customer who needed a reminder; 4-5 trains customers to ignore your emails and tanks engagement metrics across all your campaigns. Stick to 3 unless A/B testing reveals a 4th adds incremental revenue.
For products under $50 AOV, free shipping outperforms a discount (perception of full price preserved + removes shipping friction). For products over $100 AOV, a percentage discount works better. Test both — Klaviyo Flow A/B Testing makes this trivial.
Customers are reading but not converting. Three usual causes: (1) checkout friction — they abandon because of a checkout problem, not interest. Fix the checkout. (2) Price/shipping shock — your final price is higher than expected. (3) Wrong offer in email 3 — try free shipping vs % discount A/B.
Yes, for stores with SMS consent and $10K+/mo revenue. SMS abandoned cart recovers an additional 3-5% on top of email. Klaviyo has native SMS support — same flow can branch to send SMS as a secondary touchpoint at 60 min or 24 h. But requires explicit SMS opt-in at checkout.
Send a test to mail-tester.com (free) — it scores 0-10. Below 8 indicates deliverability issues. Also check Google Postmaster Tools for your domain — it shows Gmail's view of your sender reputation. If 'Domain reputation' is Low or Medium, your DKIM/DMARC needs work.
WooCommerce
Klaviyo on WooCommerce is the highest-ROAS email setup in ecommerce. But the default plugin install syncs orders only — not browse, cart, or product views. Without those, your abandoned cart and browse-abandonment flows fire on incomplete data. Here is the full integration.
WooCommerce
Customer says 'checkout did not work.' You test and it seems fine. The order is stuck in 'Pending payment' or never created at all. This is the diagnostic sequence Woo specialists run — payment, webhook, plugin conflict, theme override, Blocks vs Classic.
WooCommerce
Most Woo owners install the Meta Pixel via the official plugin, see 'Connected,' and assume iOS shoppers are tracked. They are not. Without server-side Conversions API + event_id deduplication, you lose 30-50% of attribution. Here is the full setup.
WooCommerce
DIY WooCommerce is a great idea — until your plugin count crosses 30, your checkout breaks intermittently, and PageSpeed sits at 35. This is the honest framework: when the cost of self-managing exceeds the cost of hiring, and how to tell which side you're on.
Klaviyo
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.