Back to all articles
Automation

How to recover abandoned carts across email and SMS without annoying people

Most cart recovery does nothing or far too much. A three-touch, two-channel ladder with hard frequency caps and attribution you can defend.

Written by
The AppBO Team
Published
October 1, 2026

Somebody adds two items to a cart on their phone at 9:12pm, enters an email address at the first checkout step, then stops when the shipping options load. What happens next decides whether that order exists. In most stores one of two things happens: nothing at all, because the built-in recovery email is switched off or goes out once from a no-reply address that nobody monitors, or far too much, because an aggressive sequence fires email and SMS simultaneously, leads with a discount, and keeps going after the customer has already bought something else. Both cost money, and the second one costs more than people realize.

Abandonment is not the failure

Most people who put something in a cart do not buy it on that visit. That is not a fault in the store, it is how browsing works. People compare, get interrupted, hit a shipping cost they did not expect, or simply run out of attention on a train. Treating abandonment itself as the problem leads to the wrong fix, which is usually more messages.

The failure is what happens afterwards. Specifically, it is these three things:

  • Nothing happens, so a cart with a known email address and a restorable session is left to decay.
  • Something happens too often. Without a frequency cap, a shopper who abandons three carts in a week receives three overlapping sequences and concludes the brand is broken.
  • Nobody can say what worked. Without channel-level tracking you cannot tell whether the recovered revenue came from the email, the SMS, or from people who were always coming back.

That last one matters more than it sounds, because it is what makes the whole program either defensible or decorative at budget time.

The two opposite mistakes, and what they cost

Doing nothing is the cheaper mistake to make and the easier one to fix. Doing too much damages assets you cannot easily rebuild.

  1. Discount dependency. Lead with a code on the first touch and you train your customer base to abandon deliberately and wait. The discount stops being a recovery tool and becomes your pricing.
  2. Deliverability damage. Cart recovery is your highest-volume automated email program. Unsubscribes and spam complaints generated here degrade inbox placement for every other message the business sends, including order confirmations.
  3. Messaging risk. SMS marketing without proper prior consent is the single highest-risk element of a recovery program in several markets, and checking out does not constitute consent to marketing texts. Confirm what applies to you with your own counsel before you send anything.
  4. Collisions with post-purchase. A recovery message offering an incentive, arriving an hour after somebody paid full price, is worse than no message.

What good cart recovery looks like

A disciplined ladder with a small number of touches, each with a different job, and a hard brake. Concretely:

  • A short hold after the last activity before anything sends, so you are not messaging someone who is still typing their card number. Thirty minutes is a sensible default.
  • Three touches per cart, ever. Touch one reminds, touch two re-offers on a different channel, touch three removes the obstacle.
  • One SMS per cart, and it is the second touch rather than the first. SMS is the expensive, intrusive channel, so it gets one shot.
  • A tokenized link that actually restores the cart. Without that, the whole thing is just a reminder.
  • A per-contact cap across all carts, and a minimum gap between sequences. A new cart inside that window updates the existing record rather than starting a fresh ladder.
  • Two-way messaging, so a reply pauses the sequence and starts a conversation instead of being discarded.
  • A recorded reason for abandonment, captured conversationally or by a one-question survey.

The full field list, stage design, suppression rules and workflow spec are in the abandoned cart recovery build.

How to build it, step by step

Step 1: Check your store can actually do the three things this needs

A cart-updated signal, an order-created signal, and a tokenized recovery URL. Shopify, WooCommerce and BigCommerce generally provide all three. If your platform cannot produce a recovery URL, the program degrades into a reminder with a link to a category page, which performs very differently. Verify this before you plan anything else.

Step 2: Write the discount policy down before you build the sequence

Whether a code is offered at all, at which touch, to which segments, how long it lasts, and whether repeat customers are excluded. Decide it first, because every other decision depends on it, and because a discount policy improvised during launch week becomes permanent. Codes should be unique and single-use with a real expiry, generated through your store's API. Shared static codes end up on voucher-aggregator sites within days and get applied to orders that were never at risk. Whatever expiry you state has to be honoured, because a code described as expiring that still works a week later is a misleading-practice exposure.

Step 3: Set the caps and the suppression list at the same time as the sequence

Three touches per cart, one SMS per cart, a ceiling per contact per month, and a minimum gap between sequences. Then the hard stops: any order placed even for different items, an open support conversation, a return or refund in progress, an opt-out, or a reply to any recovery message. Build the daily alarm that tells you when a cap is breached at the same time, because an unmonitored cap is a hope rather than a control. Test specifically that a step already scheduled honors a suppression applied after it was queued, which is the most common silent failure in the whole program.

Step 4: Segment on order history, not on cart value alone

Pull lifetime order count and last order date from the store. A repeat customer does not need the trust-building content about your returns policy, and a first-time buyer does. Without that sync every shopper is treated as a first-timer and your segmentation branches are dead weight. Flag high-value carts for a human follow-up task, with the threshold agreed in advance.

Step 5: Name the product, not the cart

Use the highest-value line item in the subject and the preview image. Spell out the shipping cost plainly in the body rather than making people click to find it, since shipping is one of the two questions that causes most checkout abandonment in the first place. One button that restores the cart, no discount on touch one.

Step 6: Put the assistant on the cart and checkout pages, and on the replies

Not just the homepage. Give it a knowledge base covering shipping costs and thresholds by zone, delivery timeframes, the returns policy in plain words, sizing guidance, accepted payment methods, how to apply a code at checkout, and the common technical checkout failures. It should answer questions, re-send a fresh cart link, register a back-in-stock request, and hand off to a person on anything about an existing order, a refund, a complaint or a payment failure. It should not invent or negotiate a discount, promise a delivery date the shipping rules do not support, or override a stock position. Feed it a live stock position, so it never confirms availability on something that sold out two hours ago.

Step 7: Hold out a small group before you launch

Keep a small randomly selected share of abandoned carts out of all messaging and compare purchase rates. It is the only honest measure of whether the sequence causes anything, and it is worth the revenue you give up to know. Agree the size explicitly with whoever owns the number, because it means deliberately not messaging some carts.

Mistakes that turn recovery into harassment

Mistake 1: Firing email and SMS at the same moment

Two messages about the same cart within a minute of each other reads as a malfunction. Space the channels out and alternate them, so each touch feels like a separate thought rather than a broadcast.

Mistake 2: Re-sequencing a serial abandoner

Some shoppers use the cart as a wishlist. Three or more carts in a month should drop that contact to email only. If a large share of your carts come from these contacts, a real wishlist feature will outperform any recovery sequence you can build.

Mistake 3: Sending from a no-reply address

A reply is the single most valuable response a hesitant buyer can give you, because it usually names the obstacle. Throwing it away to save on inbox management is a bad trade. Enable two-way SMS as well, and expect the recovery texts to generate inbound calls, so put missed-call text-back on the store number.

Mistake 4: Ignoring the quiet-hours problem

Shopping peaks at night and recovery triggers fire around the clock. Set a sensible SMS window local to the recipient and a wider email window, and make sure out-of-window messages queue rather than drop. A cart abandoned late at night should wait until morning for its text, not lose it entirely.

Mistake 5: Letting product names reach a lock screen when they should not

If any part of your catalog could reveal something personal about the buyer, exclude those categories from SMS and from any message whose preview text names the item. A message visible on a lock screen that somebody else can see is a real harm, not a theoretical one.

Mistake 6: Forgetting that cart contents are behavioral data

Messaging someone on the basis of what they browsed and nearly bought needs a lawful basis in several regimes, disclosure in your privacy notice, and often consent for the tracking that identifies them in the first place. Make sure your cookie banner and your recovery mechanism actually agree with each other, decide how long recovery records and tokens are retained, and invalidate expired tokens rather than leaving them live. Capturing an email at the first checkout step and then messaging about the cart is the specific case regulators look at most closely, so be clear in the checkout flow about what that address will be used for.

How to measure recovery honestly

Gross recovered revenue flatters every cart program ever built. These are the numbers that survive scrutiny.

  • Recovery rate measured against abandoned carts with a contactable identity, not against all carts. The wrong denominator makes the figure meaningless.
  • Recovered revenue net of discounts issued and messaging costs.
  • Incremental recovery against the holdout. This is the only number that tells you whether the sequence caused anything.
  • Recovery rate by touch. If touch three carries most of the orders, your customers have learned to wait for the code and the policy needs rethinking.
  • Channel conversion, email against SMS against chat reply, per touch.
  • Discount dependency, the share of recovered orders that used a code. Watch the trend rather than the level.
  • Unsubscribe and opt-out rate on recovery messages specifically, separate from your broadcast list, plus spam complaint rate and inbox placement.
  • Serial abandoner share, which tells you how much of your cart volume is really wishlist behavior.
  • The distribution of abandonment reasons, reviewed monthly.

That last one is the real output. If shipping cost dominates the list, the answer is a shipping-policy change, not a better email. If payment failures dominate, the answer is a checkout fix, and that is the single most actionable reason there is, because those shoppers had already decided to buy. Recovery sequences manage the symptom; the reason field tells you what to fix in the store. The same logic applies upstream to inquiry forms people start and never finish, which the form abandonment recovery build covers. To scope a recovery program against your actual store platform and consent position, book a call.

Frequently Asked Questions

How many messages is too many?

Three per cart is a defensible ceiling and most of the value sits in the first two. The more important limit is the per-contact one across all carts in a rolling month, because that is what stops a frequent browser receiving a stream. If you only enforce one cap, enforce that one.

Should the first message include a discount?

No. A customer who was always going to come back should not be paid to do so, and leading with an incentive teaches the rest of your list to wait. Keep the code for the final touch, if your policy allows one at all, and prefer removing the actual obstacle where you can. If a cart sits just below a free-shipping threshold, suggesting the qualifying addition is usually better for both sides than discounting.

Do I need SMS at all?

Not to start. If your marketing consent for SMS is thin, launch email-only and add SMS once proper consent collection is in place, with an unticked checkbox, clear wording about what will be sent and how often, and the timestamp and wording stored. A text program built on weak consent is a liability rather than an asset. Register the traffic honestly as marketing too, however it is framed internally, because a marketing sequence registered under a transactional use case is a common cause of silent carrier filtering.

When should the sequence stop?

The moment an order lands, even for different items, and immediately on any reply, opt-out, open support ticket or refund in progress. After the ladder finishes without a purchase, close the record rather than re-sequencing the same cart, and lock that contact out of recovery for a cooling-off period. They stay on your general marketing list if consent exists; they just stop hearing about that cart.

Keep going
Read the full build

Every article on this blog sits on top of a build guide in the AppBO library. It is the same system, written out end to end: the problem it solves, the architecture behind it, every workflow with its triggers and conditions, and what measurably changes once it is live. If this piece made the case, the build guide shows you the wiring.

Open the build library

Want this running in your business?

Bring us how your business actually runs today and we will tell you which system to put in first, what it will take, and what it should change.

Book a call