EcommerceGuideCart Recovery

Abandoned Cart Recovery: What Your Flows Miss and How to Get It Back

David Henzel
Photo by Joshua Hoehne on Unsplash
Photo by Joshua Hoehne on Unsplash

Most brands I talk to treat abandoned cart recovery as a solved problem. They installed the Klaviyo flow, added a Postscript SMS, turned on Meta retargeting, and moved on. The flow reports a revenue number every month, it looks fine, and nobody opens it again.

Then we pull their cart data and the picture changes. A long tail of carts from customers who have ordered before, who sit in the CRM with an email address and a phone number on file, who never got anything past a three-email sequence. Carts worth two or three times the store’s AOV, treated exactly the same as a $32 cart from a first-time visitor who bounced off the shipping page.

That is the gap this guide is about. Not that email and SMS are bad at cart recovery. They are good at it, and they are the cheapest revenue in ecommerce. The problem is that they are the only thing most brands run, and they were never going to recover everything. What you do with the carts your flows do not convert is where the remaining money is.


Why carts get abandoned, and why the reason matters

Every recovery conversation should start here, because the reason a cart was abandoned determines which channel can recover it. A reminder cannot fix a problem that was not about forgetting.

Here is the honest taxonomy. These are the categories we see when we go through cart data and, more usefully, when agents get customers on the phone and ask.

Price and shipping shock. The customer added items at listed prices, then hit checkout and saw shipping, taxes, and duties stack on top. The total no longer matched the number in their head. Baymard Institute, which has run cart abandonment survey research for years, consistently finds extra costs at checkout to be the most cited reason shoppers abandon. This is not a memory problem, and a reminder showing the same total gets ignored. Something has to change about the offer, the framing, or the shipping threshold.

Comparison shopping. The cart is a bookmark. The customer is holding your product in a tab while they check two competitors and a discount code site. Nothing is wrong, they are mid-decision. Reminders work here, and so does anything that resolves the specific comparison they are stuck on. On calls, this is the category where one answer about fit, ingredients, or return policy closes the order.

Payment friction. Card declined, wallet not supported, address validation failed, passcode never arrived, mobile checkout broke. The customer wanted to buy and could not. This is the most recoverable category in the list and the one automated flows handle worst, because the email says “you left something behind” when the experience was “I tried and your checkout did not work.” If this category is large for you, fix checkout first, then recover what you already lost. The same dynamics show up after the sale, which is what payment recovery and dunning management deal with on the renewal side.

Distraction. Kid woke up, meeting started, phone died, tab closed. Nothing wrong with the offer. This is the category reminders were built for, and it is why abandoned cart email exists at all. It is also why cart recovery flows look better than they should: a chunk of what they recover is people who intended to buy anyway.

Account creation and checkout length. Forced account creation, too many fields, no guest checkout, no express wallet. Same as payment friction in effect: an operational problem disguised as a demand problem.

Map channels onto those five. Reminders recover distraction and some comparison shopping. Discounts recover price shock and take margin from everyone else in the process. Nothing automated recovers payment friction well, because the customer needs a human to fix the thing. And comparison shoppers with real objections need an answer, not a nudge.

That is the whole argument: cart abandonment is not one problem. Treating it as one, and throwing one channel at it, is what leaves money in the pile.


The standard recovery stack and what it actually recovers

I want to be fair to the tools here. A lot of vendor content strawmans email to sell something else. Email and SMS are the highest-ROI thing in your recovery stack and they should run first, every time. The argument is about sequencing, not replacement.

Abandoned cart email

Still the workhorse. Cheap, scalable, and the one channel where you can afford to contact every cart including the $18 ones from anonymous first-time visitors.

What good looks like, and most brands are not doing all of it:

  • Three to four emails, not one. The second and third emails in a sequence routinely carry a meaningful share of the recovered revenue. Brands that send one email and call it a flow are leaving the easiest money on the table.
  • First send inside an hour. The cart is warmest immediately. Waiting until the next morning turns a live decision into a cold one.
  • Show the cart contents, with images. The customer may genuinely not remember which variant they picked.
  • Address objections in the body, not just the product. Return policy, shipping timeline, sizing guarantee, subscription flexibility. You are answering the comparison shopper without knowing which comparison they are running.
  • Hold the discount until the last email, if you use one at all. Train the list that abandoning produces a coupon and you will manufacture abandonment. I have watched brands do this to themselves. Their cart abandonment rate went up after they put a 15% code in email one.
  • Plain-text-style from a person outperforms the designed template more often than you would expect. Worth testing. Not a rule.

For the adjacent lapsed-customer sequences, our win-back email templates cover the structure.

Honest limits: email recovery depends on deliverability, inbox placement, and a customer willing to re-enter a checkout that may have been the problem. It cannot ask a question. It cannot fix a declined card. And its performance on high-value carts is roughly the same as on low-value carts, which means you apply identical effort to a $40 cart and a $400 cart.

SMS

Higher open rates than email and much faster. Good for the first-hour nudge, good for distraction recovery, good for a short link straight back into a prefilled checkout.

Constraints that get skipped in most guides: you need real consent, volume tolerance is low, and customers punish you for abusing the channel. One cart message plus maybe one follow-up is the ceiling for most lists. If cart SMS competes with your promo calendar for the same send budget, cart wins on revenue per message, but you have to actually make that tradeoff.

SMS also inherits email’s main limitation. It is a broadcast the customer can ignore at zero cost, and it cannot resolve an objection it does not know about.

Retargeting

Paid retargeting on Meta and Google still works for cart audiences, and cart audiences are the highest-intent audiences you can build. Two caveats. Signal loss means match rates are not what they were, so the audience you think you are retargeting is smaller than the platform reports. And retargeting takes credit for a large share of purchases that would have happened anyway, because you are bidding on people who already decided to buy. If your retargeting ROAS looks extraordinary, some of that is measurement artifact, not incrementality.

Use it. Just do not read its reported numbers as recovered revenue that would not have arrived otherwise.

Exit intent and on-site

An exit-intent offer catches the customer before they leave, the cheapest possible intervention, and the one most likely to give away margin to people who were going to buy anyway. Test it with a holdout, cap the discount, be honest about the lift.

What the stack adds up to

Run all four well and you have a competent abandoned cart recovery strategy. You will recover the distracted customers, a chunk of the comparison shoppers, and whoever a discount tips over. What is left after those flows finish is what nobody in the stack is built to handle: payment friction, unanswered objections, and high-value carts from customers who already trust you.


Segment by cart value and purchase history

This is the part that changes the economics, and it is mostly free to implement because the data is already in Shopify or WooCommerce.

Stop thinking about “abandoned carts” as one list. Split it on two axes.

Cart value relative to your AOV. A cart at 2x AOV is not twice as important as one at 0.5x. Effort cost is roughly flat per cart while revenue scales, so the high-value cart justifies four or five times the effort, not two.

Known customer or anonymous first-timer. A known customer comes with purchase history, a phone number, an established relationship, and a much higher baseline conversion on any contact. An anonymous cart from a visitor who dropped an email into a popup is a different animal.

Cross those and you get four buckets. Here is how I would staff them.

Low value, anonymous. Email flow only, two or three sends. Zero human effort, no discount beyond what you would offer anyone. Biggest bucket by count, smallest by recoverable revenue.

Low value, known customer. Email plus SMS. Worth watching for pattern: a known customer abandoning small carts repeatedly usually signals a checkout or shipping-threshold problem, not disinterest.

High value, anonymous. Email plus SMS plus retargeting. Be careful about discounting: you have no relationship and no LTV history, so you are buying a first order at a lower margin and hoping it repeats.

High value, known customer. This is the bucket. Fewest carts, highest recoverable revenue, best conversion on any contact, and almost universally handled with the same three emails as everything else. If you do nothing else after reading this, pull this segment for the last 30 days and total the cart value sitting in it. That number is usually what starts the conversation with the brands we work with.

One practical note on building the segments. Cart value and purchase history are easy. What trips people up is deduplication: one customer with three abandoned carts in a week is one opportunity, not three, and contacting them three times trains them to ignore you. Collapse to the most recent, highest-value cart per customer first.


Timing windows

Recovery is a decay curve. Everything you do gets less effective by the hour.

The rough shape I would work to:

  • 0 to 60 minutes. Highest intent. First email, and SMS if you have consent. The customer may still have the tab open.
  • 1 to 24 hours. Second touch. Where the sequence earns its keep on distraction recovery.
  • 24 to 72 hours. Third touch, and the window where a human contact on a high-value known-customer cart still lands as helpful rather than strange. Past 72 hours the customer has usually bought elsewhere or moved on, and a call starts to feel like surveillance.
  • Day 4 onward. Stop treating it as cart recovery. That customer is now a warm lead for your normal lifecycle and browse-abandonment programs.

One timing point operators get wrong: do not stack channels in the same hour. Email at minute 30, SMS at minute 45, and a retargeting ad in the same session reads as pressure and produces unsubscribes.


The play almost nobody runs: calling high-value carts after the flows fail

Here is where I am obviously biased, because this is what Winback Engine does. I will try to be useful about it anyway, including about when it does not work.

The play is narrow on purpose. Trigger: a known customer starts a cart and does not order within an hour. Your Klaviyo and Postscript flows fire on their normal schedule and get their full run. Then, for the carts those flows did not convert, prioritized by cart value and purchase history, a trained agent calls. What counts as recovered is the completed order. Not a reply, not a click. The order.

Three reasons it works on that segment and not on the general cart population.

It is the only channel that can ask a question. Every automated touch guesses at the objection. A call finds it, and the answer is usually small and specific: they were not sure the subscription could be paused, they wanted to know if the second item ships together, their card was declined and they assumed the order went through anyway.

It can fix payment friction in real time. A declined card, a failed wallet, an address that would not validate. An agent walks the customer through it and the order completes on the call. No flow can do this.

The economics only work at the top of the value distribution. On a $35 cart a call does not pay. On a $250 cart from a customer who has ordered four times, it pays several times over. That is the entire reason segmentation comes first.

What a good call sounds like

Not a script recital, and not a sales pitch. The frame that works is service, not closing.

It opens by naming the order attempt plainly, with a reason for the call that is actually true: something looked like it did not go through, and the agent is calling to see whether the customer hit a problem. That framing is honest, because most of the time it is exactly what happened, and it gives the customer permission to say “yeah, my card got declined” instead of defending a decision.

Then the agent shuts up and listens. The objection comes out in the first thirty seconds if you let it. From there it is one of four paths: fix the payment, answer the question, adjust the order, or thank them and close the file.

What a good call does not do: pressure, invent urgency, offer a discount the brand did not pre-approve, or keep going after a no. Agents work from offers you approve and your store stays the system of record. If the customer bought elsewhere, the call ends politely and the record gets marked so nobody calls again.

The bar I hold our own agents to is simple. If the customer would not have minded getting that call, it was a good call, whether or not the order completed.

When calling is not worth it

I would rather you skip this than run it badly.

  • Low-value carts. At or below your AOV, the call cost eats the margin.
  • Anonymous carts with no purchase history. Cold call to a stranger who dropped an email into a popup. Bad experience, poor conversion, and consent questions you do not want.
  • No phone number on file, or no consent to use it. Non-negotiable. Check your jurisdiction’s rules and your own terms.
  • Your checkout is the problem. If a third of your abandonment is payment or checkout failure, calling treats a symptom at unit cost. Fix checkout, then recover.
  • Low cart volume. Below a certain daily volume of qualifying carts there is not enough work to justify the setup.
  • B2B or considered purchases. A 30-day decision cycle does not respond to a 24-hour call window.

There is a related question about whether the call needs to be a human at all. I wrote up the honest version of that tradeoff in human vs AI reactivation: the short answer is that AI voice handles the simple confirm-and-book cases fine and falls apart the moment the objection is real, which is most of the calls that matter in this segment.


Measurement: recovery rate, incrementality, and not lying to yourself

This is the section that separates operators who run a real program from operators who run a dashboard.

Recovery rate, defined properly

Recovery rate is completed orders divided by qualifying abandoned carts, where “qualifying” means the cart actually entered the program. Two things ruin this number if you are not careful.

First, denominator games. If your platform counts every add-to-cart as an abandoned cart, your denominator is full of window shoppers and your rate looks terrible. If it counts only reached-checkout carts, your rate looks great. Neither is wrong, but pick one definition and never change it, or your trend line is meaningless. Second, deduplication: if three carts from one customer resolve in one order, that is one recovery, not three.

Report recovery rate per segment, not in aggregate. The blended number moves whenever your traffic mix moves and tells you nothing about whether the program got better.

Incremental versus would-have-converted-anyway

This is the hard one and almost nobody does it.

Some share of your recovered carts were always going to come back. The customer got distracted, remembered on their own, and returned that evening. If your flow sent an email in the meantime, the flow takes credit for a purchase it did not cause. Same for retargeting, more so.

The only clean way to know is a holdout. Randomly exclude a small slice, say 5 to 10 percent, of qualifying carts from the recovery program entirely. Measure their natural conversion rate over the same window. Your incremental recovery is program conversion minus holdout conversion, not program conversion.

It is uncomfortable the first time, because the incremental number is always lower than the attributed number. Do it anyway. It is the only figure that belongs in a P&L conversation. Run the holdout continuously if you can, not once: seasonality moves the natural return rate, and a holdout from November does not describe February.

Attribution windows

Pick a window and defend it. For cart recovery, 72 hours from the abandonment event is defensible. Seven days is generous. Thirty days is not cart recovery, it is lifecycle marketing wearing a cart recovery costume, and anyone quoting you a thirty-day cart window is quietly counting a lot of organic repurchase.

Two more rules that keep the numbers honest. Use last touch within the window with one owner per order, because splitting credit across channels makes every channel look profitable and makes the total not add up. And exclude orders containing none of the abandoned cart’s items: that is a nice outcome and it is not cart recovery.

To sanity-check the revenue math before building any of this, the ROI calculator does the arithmetic, and what is customer churn covers the same definitional discipline on the retention side.


A worked model, with the inputs clearly labelled

Every number below is assumed. I am not presenting these as benchmarks and you should not quote them as such. Replace each one with your own data. The point is the shape of the calculation, not the output.

Assumed inputs for an illustrative store:

InputAssumed value
Qualifying abandoned carts per month2,000
Share from known customers with a phone number25% (500 carts)
Of those, carts at or above 1.5x AOV40% (200 carts)
AOV$120
Average value of the high-value segment$210
Flow recovery rate on that segment (email + SMS)12%
Incremental lift from calling the remainder8 percentage points
Gross margin60%

The arithmetic:

The high-value known-customer segment is 200 carts at $210, so $42,000 of cart value per month.

Flows recover 12 percent of it: 24 orders, $5,040. That is already happening with no extra effort, which is why email and SMS run first.

That leaves 176 carts the flows did not convert. An 8 point incremental recovery rate on the original 200 means 16 additional orders, or $3,360 in revenue that would not otherwise have arrived. At 60 percent gross margin that is $2,016 of contribution per month, against whatever the calling costs. On a performance-priced model where you pay a percentage of recovered revenue, the question is simply whether that percentage sits below your gross margin.

Now change one input. Drop the incremental lift from 8 points to 3 and recovered revenue falls to $1,260 a month, which for most brands is not worth the operational overhead. Raise the segment from 200 carts to 600 and the same 8 points produces $10,080. This play lives or dies on segment size and incremental lift, not on the headline recovery rate.

Which is the argument for doing the boring work first. Pull the segment, size it, run a holdout to find your real lift, then decide.


Where this sits in the bigger retention picture

Cart recovery is the front end of a longer sequence. The same logic, flows first and humans calling what the flows did not save, applies to failed renewal payments, one-time buyers who never subscribed, and subscribers who cancelled. Those are the other three plays on our ecommerce recovery page, and for subscription brands the failed-payment one usually carries more revenue than carts do. If you are building the wider program, the customer reactivation guide covers the lapsed-buyer side and subscription churn covers what to measure once recurring revenue is involved.


FAQ

What is a realistic abandoned cart recovery rate?

It depends entirely on how you define the denominator, which is why I am not quoting a number. A store counting every add-to-cart will report a far lower rate than one counting only reached-checkout sessions, and both can be running the same program. Set your own definition, measure it consistently for a quarter, and treat your own trend as the benchmark.

Should I discount in abandoned cart emails?

Cautiously, and late in the sequence if at all. A discount in the first email teaches your list that abandoning produces a coupon, and I have watched brands increase their own cart abandonment rate this way. If you discount, hold it to the final touch, cap it, and exclude customers who recently bought at full price. Better first moves are a free-shipping threshold nudge or an objection-handling email.

Is calling abandoned carts legal and does it annoy customers?

Legality depends on your jurisdiction, your consent records, and your terms, so check with counsel rather than a blog post. Operationally, the segment and the frame decide whether it annoys people. Calling a repeat customer within a day about an order that looks like it failed, with a genuine offer to help, is received as service. Cold-calling an anonymous visitor who dropped an email into a popup is not, and we do not run that play for anyone.

Do I still need email and SMS flows if I am calling carts?

Yes, and they run first. They are the cheapest revenue in the stack, they cover the entire cart population including everything a call cannot economically touch, and they recover the distracted customers before anyone picks up a phone. Calling is a layer on the remainder. If your flows are weak, fixing them beats adding a channel on top.


To size this in your own data: pull the last 30 days of abandoned carts from known customers at 1.5x AOV or above, subtract the ones your flows recovered, and total what is left. That is the honest size of the opportunity. If it looks big enough to act on, get the math run on your abandoned carts and we will show you what the incremental piece is worth before you commit to anything.