A discount in an abandoned cart email pays off only under three conditions: not in the first email, never for every customer, and only when price is really the obstacle. The incentives that work best come before it: free shipping, easy returns, a real review, honest stock levels. In every other case a discount hands margin to people who would have bought anyway and, over time, teaches customers to abandon the cart and wait for the code. Below you'll find why that happens, which incentives to use before a discount, when a discount is the right call and how to set up codes so they don't get out of hand. At the end there are three example emails: two that work and one to avoid.
Why a discount in the first email does more harm than good
Someone who gets "15% off your cart" an hour after closing the page learns one simple thing: abandoning pays. The next time they won't abandon out of distraction, they'll abandon to wait. And they'll tell others: recovery codes circulate in group chats and on coupon sites faster than you'd think.
There is also a math problem. One hour after abandonment, purchase intent is still high, and a share of those shoppers would have come back with a plain reminder. Every discount given to them is margin lost, not an order recovered. The typical result is a flow that "converts well" in the report and earns little at the register.
What actually holds shoppers back
The Baymard Institute puts the average cart abandonment rate at 70.22%, calculated across 50 studies. In its research on US shoppers, excluding those who were only browsing, the top cause is extra costs that are too high (shipping, taxes, fees) at 40%; next come delivery that is too slow (20%), not trusting the site (19%) and an unsatisfactory return policy (13%).
Almost none of these causes is solved by a percentage-off code. That's why the incentives that work before a discount are different ones:
- Free shipping over a threshold, if you offer it: saying so clearly removes the most common objection.
- Easy returns: the window and the process in one line.
- A real review of the product in the cart.
- Honest availability: "only 3 left in your size," but only if it's true.
- Support: a name and a way to ask a question before buying.
When a discount makes sense
A discount is a tool, not a reflex. It works in four specific situations: in the third email, when the reminder and the reassurance haven't been enough; for a first purchase, because someone who doesn't know the store perceives more risk; on products with margin that can absorb it; and on carts above a threshold, where even a small incentive is worth real dollars and the absolute margin stays healthy.
| Situation | Recommended lever | Discount yes/no |
|---|---|---|
| First email, within 1-2 hours | Reminder + shipping and returns | No |
| The customer has bought before | Related review or new arrivals | No |
| Product already on sale | Real availability | No |
| Cart below the free-shipping threshold | How much is left to reach free shipping | No |
| Second email, at 24 hours | Review or product detail | No |
| Third email, new customer, product with margin | Personal code with an expiry date | Yes |
| High-value cart, third email | Personal code or free shipping | Yes |
| First WhatsApp or text message | Reminder and support | No |
How to set up codes so they don't spread
If you decide to use a discount, the rules matter more than the percentage. Four are enough to avoid almost every problem.
Valid for the first purchase only. A customer who has already bought doesn't need to be convinced to trust you; they need a reason to come back, and that comes from a newsletter, not from the recovery flow.
Not combinable with products already on sale. Otherwise someone who abandons a marked-down item gets a discount on top of a discount, often below cost.
A short, real expiry. 48 hours, and when it expires the code really stops working. An expiry that gets extended teaches people to ignore every expiry that follows.
One code per customer, not a public code. Klaviyo can generate unique single-use codes to drop into the email; a code that's the same for everyone, like "COMEBACK10," ends up online within days.
In the flows AchillesAI creates, these rules apply to the store's evergreen codes: they can be limited to the first purchase or exclude products already on sale, and the code never appears in the first email. Above all, AchillesAI doesn't offer a code to someone who can't use it: a repeat customer, or a cart made up only of sale items, gets an email without a discount instead of a promise that fails at checkout.
What about text messages and WhatsApp?
WhatsApp and text messages get read within minutes, which is why they come first in the sequence. For that very reason they shouldn't contain discounts: a code sent an hour after the abandonment, on the most personal channel there is, is the faster version of the first-email mistake. A WhatsApp message works better as a reminder with an offer of help ("if you have doubts about sizing, reply here"). Remember too that WhatsApp requires templates approved by Meta and the customer's explicit consent.
Three example emails
1. First email, no discount, that works (supplement store)
Subject: Your magnesium is still in your cart
Hi Emily, you left Magnesium and Potassium, 60 tablets, in your cart. Shipping is free over $40 and your order already qualifies. If it's not right for you, you have 30 days to return it. [Complete your order]
Why it works: it removes the most common objection, shipping costs, without touching the price.
2. Third email with a well-built discount (jewelry store, new customer)
Subject: A code just for you, valid until Thursday
Hi Daniel, the silver hoop earrings are still available. Since this would be your first order with us, here's a personal 10% code: DANIEL-7KQ2. It's valid until Thursday at 11:59 p.m., on a single order. [Back to your cart]
Why it works: it arrives after two emails without an incentive, it's personal, it has a real expiry and a clear reason (first order).
3. A badly done email (clothing brand)
Subject: LAST CHANCE!!! 20% OFF EVERYTHING
Hey, forget something? Use SAVE20 on the whole site, even on sale items! Offer valid today only. [Buy now]
What's wrong: it's the first email, so the discount arrives before any reassurance; the code is public and will end up on coupon sites; it stacks on top of sale prices; and "today only" isn't credible if the same email goes to every abandonment.
Where to start
Open your recovery flow and check which email contains the discount: if it's the first, move it to the third and replace it with shipping and returns. Then switch to unique codes, limited to first purchases and excluded from products already on sale. Finally, check that the flow stops at the first order, so nobody gets a code after already paying full price.
For the exact timing of each email, read when to send abandoned cart emails; for more annotated messages, see the abandoned cart email examples; for the full picture, the abandoned cart recovery guide.
