Klaviyo abandoned cart flow for Shopify — setup + 3 templates

Klaviyo abandoned cart flow for Shopify

Most Shopify stores running Klaviyo have an abandoned cart flow that was set up once from the default template, never touched again, and quietly underperforms. The default is one email, sent at 4 hours, with no discount logic and generic copy.

This guide is the full setup: which trigger to use, the exact 1hr/24hr/72hr timing ladder, when a discount belongs in the flow and when it doesn't, and three copy-paste email templates you can drop into Klaviyo today. If you want the strategy and economics behind a longer sequence, that's covered in our 7-email abandoned cart flow breakdown — this post is the Klaviyo-specific build.

Table of Contents

Key takeaways

Question Answer
Which trigger? Started Checkout for the core flow. Added to Cart as a separate, shorter flow if you have the volume.
How many emails? 3 minimum. The full 7-email version adds SMS-style plain-text and win-back angles.
Timing? 1 hour → 24 hours → 72 hours. Not 4 hours for email 1 — that default loses the highest-intent window.
Discount in email 1? No. Discount appears in email 3 only, and only for first-time buyers.
Typical recovery rate? Well-built 3-email flows typically recover in the 5–12% range of abandoned checkouts, varying heavily by AOV and traffic quality.

Trigger setup: Started Checkout vs Added to Cart

Klaviyo gives you two abandonment triggers on Shopify, and they are not interchangeable:

Started Checkout fires when someone reaches the checkout page — meaning Shopify has captured their email. This is your core abandoned cart flow. Every store should have it. Coverage is smaller but intent is high and deliverability is clean because the address came from the buyer seconds ago.

Added to Cart fires earlier in the funnel, but Klaviyo can only send to profiles it already knows (cookied subscribers, past buyers). It reaches people Started Checkout misses, but the intent is weaker.

Build order:

  1. In Klaviyo: Flows → Create Flow → Build your own (don't start from the library template — you'll rebuild most of it anyway).
  2. Set the trigger to the metric Started Checkout (source: Shopify integration).
  3. Add flow filters — this is where most setups leak revenue by double-sending:
    • Placed Order zero times since starting this flow — the person who bought an hour after abandoning must exit immediately.
    • Started Checkout zero times since starting this flow — a fresh checkout restarts the clock instead of stacking a second run.
  4. Leave Smart Sending off for email 1 (more on that below).

If you have real traffic volume (roughly 20k+ sessions/month), clone the finished flow, switch the trigger to Added to Cart, cut it to 2 emails, and add a filter excluding anyone in the Started Checkout flow so the two never overlap. Under that volume, skip it — one well-tuned flow beats two thin ones.

The timing ladder: 1 hour, 24 hours, 72 hours

Klaviyo's default first delay is 4 hours. Change it. Abandonment recovery is front-loaded: the buyer who left 45 minutes ago still remembers the product, the tab might still be open, and the objection is still fresh. By hour 4 you're re-selling instead of reminding.

Email Delay after trigger Job Discount?
1 1 hour Reminder. Remove friction, link straight back to checkout. No
2 24 hours (send window 9am–8pm recipient time) Handle the objection: shipping, returns, trust, fit. No
3 72 hours Close with an incentive — or a deadline if you don't discount. Conditional

Two Klaviyo-specific details:

Why stop at 72 hours in this flow? Because past day 3, the message type changes from "recover this cart" to "win back this person" — different copy, different economics. That extension is exactly what the 7-email flow covers.

Discount ladder logic

The most expensive mistake in abandoned cart flows is putting a discount in email 1. You end up paying 10–15% margin to people who were going to buy anyway, and you train repeat visitors to abandon on purpose.

The ladder:

Generate the code as a Klaviyo coupon (Coupons → Create Coupon, synced to Shopify as a dynamic unique code), not a shared static code. Unique codes can't leak to coupon sites, can be set to expire 48 hours after issue, and give you per-code redemption tracking.

If your brand never discounts, email 3 still works — swap the incentive for genuine scarcity (low stock, price going up, restock cadence) or a low-cost bonus like free samples. Deadline pressure recovers carts even without money on the table.

Email 1 template: the reminder (1 hour)

Subject: You left something behind Preview text: Your cart's saved — but not forever.

Hi {{ first_name|default:"there" }},

You were one click away. Your cart is saved and ready whenever you are:

[Dynamic cart block — product image, name, price]

[Return to checkout →]

If something stopped you — a question about sizing, shipping, anything — just reply to this email. A real person reads these.

— {{ Your name }}, {{ Brand }}

Build notes: keep it under 60 words of actual copy. Use Klaviyo's dynamic table block fed by event.extra.line_items so the exact products render. The CTA must deep-link to the checkout URL ({{ event.extra.checkout_url }} pattern), not the homepage — every extra click costs a real fraction of recoveries. The "just reply" line is doing double duty: it surfaces objections you can fix, and replies boost your sender reputation.

Email 2 template: objection handling (24 hours)

Subject: Still thinking it over? Preview text: Fair. Here's what most people ask us first.

Hi {{ first_name|default:"there" }},

Still deciding on your {{ product name }}? Totally fair. Here's what most people want to know before they buy:

"How long does shipping take?" Orders ship within 24 hours. Most arrive in 3–5 days, tracked the whole way.

"What if it's not right for me?" 30-day returns, no questions, prepaid label. If it doesn't work, it goes back free.

"Is it actually worth it?" ★★★★★ "{{ Insert a real, specific customer review — the more concrete the better }}"

Your cart's still saved:

[Return to checkout →]

— {{ Your name }}, {{ Brand }}

Build notes: the three questions should be your store's real top three objections — pull them from support tickets or post-purchase survey data, don't guess. Use one real review with specifics ("fits true to size, survived the dishwasher") rather than three generic five-star quotes. This is also the natural email to A/B test hardest; if you're not sure which objection leads, Claude can mine your Klaviyo data for it.

Email 3 template: the incentive (72 hours)

Subject: 10% off your cart — expires in 48 hours Preview text: One-time code, just for this order.

Hi {{ first_name|default:"there" }},

Last note from us about this — your cart's been waiting three days, and we'd rather you have the {{ product name }} than not.

Here's 10% off, valid for the next 48 hours:

Code: {{ unique coupon code }}

[Apply my code and check out →]

After Friday the code expires and your cart clears. No pressure either way — but if you were on the fence, this is the nudge.

— {{ Your name }}, {{ Brand }}

Build notes: this sits on the first-time-buyer branch of the conditional split. On the returning-customer branch, run the same structure minus the code — subject "Your cart expires tonight", body leaning on the deadline and stock. Set the real coupon expiry in Klaviyo to match the copy exactly; a "48-hour" code that still works on day 6 trains people to ignore your deadlines.

Flow settings that quietly matter

Five settings that separate a flow that works from one that just exists:

  1. Smart Sending off for email 1, on for emails 2–3. Smart Sending suppresses sends to anyone emailed in the last 16 hours. On email 1 that means your campaign recipients — often your best buyers — never get the recovery email. Transactional-intent messages should always send.
  2. UTM tracking on (utm_medium=email, utm_campaign=abandoned-cart-1/2/3) so Shopify and GA attribute recovered revenue per email, not just per flow.
  3. Set flow emails to "Live", not "Manual". The most common "my flow isn't sending" cause: emails stuck in Draft/Manual status after editing.
  4. A/B test subject lines only, one email at a time. Klaviyo flow A/B tests need weeks to reach significance at normal abandonment volume — testing everything at once means learning nothing.
  5. Review monthly. Check recovery rate per email, revenue per recipient, and unsubscribe rate. If email 3's unsub rate runs above roughly 1%, your deadline copy is too aggressive.

Abandoned cart is one of the five flows that typically generate the large majority of Klaviyo revenue — where it sits relative to welcome, browse abandonment, and post-purchase is mapped in the flows that drive 80% of email revenue.

Frequently Asked Questions

What is the best abandoned cart email timing for Shopify?

Send the first email 1 hour after checkout abandonment, the second at 24 hours, and the third at 72 hours. The first hour is the highest-intent window — Klaviyo's 4-hour default delay misses it. Restrict emails 2 and 3 to a 9am–8pm local send window.

Should the first abandoned cart email include a discount?

No. Email 1 should be a plain reminder with a direct link back to checkout — it typically converts best in the sequence with no incentive. Hold any discount to the third email, gate it to first-time buyers with a conditional split, and use a unique expiring code.

What's the difference between Started Checkout and Added to Cart in Klaviyo?

Started Checkout fires when a shopper reaches Shopify's checkout page and their email is captured — it works for anonymous visitors and is the core abandonment trigger. Added to Cart fires earlier but only reaches profiles Klaviyo already knows. Run Started Checkout first; add a separate Added to Cart flow only at higher traffic volumes.

How many abandoned cart emails should a Shopify store send?

Three is the effective minimum: a 1-hour reminder, a 24-hour objection-handler, and a 72-hour closer. Stores with solid volume can extend to a longer sequence that shifts into win-back territory — see our 7-email flow breakdown for when that math works.

What recovery rate should I expect from a Klaviyo abandoned cart flow?

Typical well-built 3-email flows recover in the range of 5–12% of abandoned checkouts, with wide variance by price point, traffic quality, and offer. If your flow is recovering under ~3%, the usual culprits are the 4-hour default delay, Smart Sending suppressing email 1, or a CTA that links to the homepage instead of the checkout.

Get this flow built and tested for you

Branva runs Klaviyo end-to-end for Shopify brands going from $0 to $50k MRR — flow architecture, template copy, discount logic, and monthly test cycles, all handled. If you'd rather ship this in a week than tinker for a quarter, book a working session. Free 30 min, and you keep the flow map either way.

Related reading