Branching Discounted vs Full-Price Shoppers In A Klaviyo Cart Flow

Metricuno
June 15, 2026
7 min read
Branching Discounted vs Full-Price Shoppers In A Klaviyo Cart Flow — How to branch a Klaviyo abandoned cart flow so repeat buyers, high-AOV carts, and already-coupon shoppers skip the discount — protecting margin without losing recovery.
Quick answer

A conditional-split pattern for Klaviyo abandoned cart flows that routes margin-safe shoppers — repeat buyers, high-AOV carts, already-couponed checkouts — into a no-discount branch.

Quick answer

Add a Conditional Split at the top of your Klaviyo abandoned cart flow that routes shoppers into a no-discount branch if any of three conditions are true: they already applied a coupon at checkout, they have 2+ prior orders, or their cart value is above your AOV threshold. Everyone else gets the standard discounted recovery sequence. This typically protects 20-35% of recovered revenue from unnecessary margin loss without hurting recovery rate.

Definition
Email & Lifecycle

Branching Discounted vs Full-Price Shoppers in a Klaviyo Cart Flow

A Klaviyo Conditional Split that routes margin-safe shoppers — repeat buyers, high-AOV carts, already-couponed checkouts — into a no-discount recovery branch.

Branching a Klaviyo cart flow means inserting a Conditional Split early in the sequence so that not every abandoner receives the same 10%-off email. Shoppers who don't need a discount to convert — repeat buyers, customers with carts already above your average order value, or people who applied a code at Started Checkout — go down a branch that uses free shipping, bundle reminders, or pure social proof instead.

The goal is to recover the cart without subsidising a purchase that was likely to happen anyway. Done correctly, total recovery rate holds steady while the blended discount cost per recovered order drops sharply.

Also known as
conditional split cart flow
no-discount branch
margin-protected cart recovery

Most Shopify stores ship their Klaviyo abandoned cart flow as a single track: one email sequence, one discount code, every abandoner. It's the default Klaviyo template, and it works — until you notice that a large share of those discounts go to people who would have bought anyway.

Why a single-track cart flow leaks margin

On a €5M store with a 12% recovery rate and a 10% discount code in the second email, roughly one in three recovered orders is a repeat buyer who has bought four times already. They don't need 10% off. You're paying them to do what they were about to do.

The bigger long-term cost is training. Once a customer learns that abandoning the cart produces a code 23 hours later, they abandon on purpose. This is the mechanism behind discount-trained repeat buyers who stop buying at full price — and it compounds quietly across cohorts.

The hidden cost isn't this month's discount

It's the customers you've taught to wait. A buyer who abandons three times to harvest three 10% codes is paying you 27% less per year — and your forecasted LTV is now wrong.

How to detect who should skip the discount

Three signals identify a margin-safe shopper. First, they already used a code at checkout — visible on the Started Checkout event payload. Second, they're a repeat buyer — readable from the profile's Placed Order count or a custom property like `lifetime_orders`. Third, their cart value is above a threshold you set, typically 1.3× to 1.8× store AOV.

Each signal maps to a specific Klaviyo filter. Detecting already-applied coupon codes in Started Checkout events uses the `$extra.discount_codes` or `discount_codes` property on the event. Repeat-buyer suppression uses a profile filter on Placed Order ≥ 2 over the lifetime. High-AOV routing uses the Started Checkout `$value` property against a fixed number.

Reliability matters here. If your Klaviyo profile properties aren't syncing cleanly from Shopify, the split misfires and a VIP gets a 10%-off email five minutes after spending €400. Audit the Klaviyo profile properties and event filters that make branching reliable before you publish — especially `consent`, `lifetime_orders`, and the Started Checkout `$value` field.

How to build the split in Klaviyo

Open your Shopify-connected abandoned cart flow. After the trigger (Checkout Started) and the standard 1-hour delay, drop in a Conditional Split. Use the OR logic: send to the no-discount branch IF discount_codes is set OR Placed Order count ≥ 2 OR Checkout value ≥ €120 (replace with your threshold).

The no-discount branch then sends the same number of touches as your main branch — usually three, on the same delays you've already validated for a three-touch Klaviyo abandoned cart flow. The content swaps the code for free shipping, a bundle reminder, or a review-led social-proof email. Replacing the discount with free shipping or a bundle upsell in the no-code branch typically holds 80-95% of the recovery rate at a fraction of the gross-margin cost.

Benchmark

Branched vs single-track Klaviyo cart flow — typical outcomes on a Shopify store

MetricSingle-track (10% code to all)Branched flowDelta
Recovery rate11.8%11.2%−0.6 pp
Avg discount per recovered order€8.40€3.10−63%
Gross margin per recovered order€21.50€26.80+25%
Share of recoveries to repeat buyers34%31%−3 pp
Margin per 1,000 abandons€2,537€3,002+€465

What good looks like

Recovery rate within 1 percentage point of your single-track baseline, blended discount cost cut by 50%+, and zero VIPs reporting that they received a discount email after a full-price purchase. If recovery drops more than 1.5 pp, your no-discount branch content is too thin — add a stronger free-shipping or bundle offer.

How to test it before rolling out

Don't switch the whole flow on Monday. A/B test the branched cart flow against the single-track flow in Klaviyo using the built-in flow split: 50% of new entrants into the branched variant, 50% into the original. Run it for two full purchase cycles or four weeks, whichever is longer, and read recovery rate, discount cost per recovered order, and 30-day repeat-purchase rate.

Pay attention to the no-discount branch in isolation. If that branch alone recovers at 8% or higher, you've found permanent margin. If it recovers under 5%, the branch content needs work — usually a stronger non-monetary incentive or a tighter subject line — before you trust the routing logic. Also model the margin impact of always-discount vs branched cart recovery on a €5M store to confirm the annualised gain justifies the build.

Frequently asked

Frequently asked questions

In practice, recovery drops by 0.3-1.0 percentage points on the branched subset, not the catastrophic drop teams fear. The shoppers you're routing there were already high-intent — repeat buyers and high-AOV carts convert on reminder alone more often than not. Free shipping in the no-code branch closes most of the gap.

Start at 1.3× your store AOV and tune from there. If your AOV is €85, route carts above €110 into the no-discount branch. The threshold should be high enough that the cart is already profitable at full price after fulfilment and ad cost, but low enough to catch a meaningful share of abandons. See the dedicated guide on routing high-AOV carts above a threshold for the math.

Klaviyo's Started Checkout event carries a `discount_codes` array (or `$extra.discount_codes` depending on your Shopify integration version). In the Conditional Split, filter on `discount_codes` is set OR contains any value. This catches shoppers who clicked a paid-traffic landing page coupon, applied a partner code, or used a returning-customer code — none of whom need another discount stacked on top.

Judgement call. A €300 first-time cart is high intent, but a first-time buyer is also where a discount has the highest LTV justification (the relationship is worth more than the margin hit). Many stores route first-time buyers to the discount branch regardless of cart size, and only suppress for repeat buyers or already-couponed checkouts. Test both.

Only as well as the data underneath. If `lifetime_orders` or Placed Order metric counts are stale, repeat-buyer suppression misfires. Run the audit described in the Klaviyo profile properties and event filters guide before publishing — specifically check that Placed Order count matches Shopify on a sample of 20 profiles.

A single flow with a Conditional Split is simpler to maintain and reports cleanly in Klaviyo's flow analytics. Separate triggered flows (one with a filter for repeat buyers, one for new) work too but double your QA surface. Use a Conditional Split unless your branches diverge by more than the discount itself — for example, different timing or different number of touches.

Yes, and arguably more so. Browse abandonment is even lower intent, so blanket-discounting browsers is the most wasteful pattern in the entire lifecycle stack. The same three signals — already-couponed, repeat buyer, high-value product viewed — apply to a branched browse flow.

Suppression skips the email; branching sends a different email. Suppressing discount codes for repeat buyers is the right move if your repeat-buyer base is small and you trust them to return organically. Branching keeps the touch — and the revenue from the reminder itself — while removing only the discount. Most stores get more revenue from branching than from suppression.

Three things that work: free shipping (if it's not already standard), a bundle or cross-sell reminder tied to what's in the cart, and a review-led social-proof email featuring the specific SKU. Avoid generic 'we miss you' content — it underperforms a plain product reminder.

Discount cost per recovered order moves immediately — you'll see it in the first week of flow analytics. The bigger LTV effect (untraining discount-conditioned buyers) takes 60-90 days to show up in repeat-purchase rate. Don't kill the test at two weeks because top-line revenue is flat; the margin line is where the win lives.

Test ideas before you ship them

Run unlimited A/B tests, attach hypotheses to outcomes, and build a searchable archive of what works — and what doesn't.