Most brands I talk to obsess over the discount in their abandoned-cart text. Should it be 10% off? 15%? Free shipping? They'll A/B test the offer for a month and never touch the one lever that does more work than any of it: when the text goes out.

Full disclosure: I work for ReadySMS, so I have skin in the SMS game. But this post isn't a pitch. It's the timing math, because the timing math is where the money leaks — and no discount depth fixes a badly timed send.

The decay curve nobody puts on a slide

Here's the pattern I've seen across enough ecommerce accounts to trust it, framed as an approximation because your catalog and price point will move the numbers:

Recovery rate on an abandoned-cart text is roughly flat for the first 30–45 minutes, then it falls off a cliff. By 60 minutes you're recovering somewhere around half of what a 15-minute send would have pulled. By the next day, you're mostly recovering people who were going to come back anyway — you're paying to text buyers you'd have kept for free.

Why the cliff? Purchase intent is a candle, not a log fire. At minute 10 the shopper still has your product in their head, the tab may still be open, the "should I?" is live. At minute 90 they've eaten lunch, opened Slack, and mentally closed the loop. A text at that point isn't a nudge, it's a cold pitch to someone who's moved on.

The practical read: a 15-minute send at 10% off will usually beat a 90-minute send at 20% off. You're spending discount margin to compensate for a delay you could have just… not had.

Worked math: what the delay actually costs

Say you get 1,000 abandoned carts a month, average cart value $80.

  • Fast send (~15 min), 12% recovery: 120 recovered carts × $80 = $9,600 recovered.
  • Slow send (~90 min), 6% recovery: 60 recovered carts × $80 = $4,800 recovered.

Same message, same list, same offer. The delay alone costs you $4,800 in recovered revenue. There is no discount you can bolt on that closes that gap — a deeper discount on the slow send just shrinks your margin on the carts you do recover.

Now flip it. People assume "faster send = we have to give a bigger discount to feel aggressive." Wrong direction. A fast send lets you use a smaller discount, or none at all, because timing is carrying the conversion. On that 120-cart fast send, dropping from 15% off to 8% off keeps most of the recovery and hands you roughly $700–$900 in retained margin over the month at that cart value.

The send itself is cheap enough that it's not the variable worth optimizing. A one-segment reminder at ReadySMS Standard is $0.02 + $0.0045 carrier = $0.0245. A thousand of them is $24.50. You are not going broke on the SMS cost. You're going broke on discount depth you didn't need. See current per-segment pricing if you want to run your own numbers, or the ROI calculator to model recovery against margin.

When to include a code — and when a code costs you money

The reflex is to lead with a discount code in message one. Two problems.

First, you train the behavior. If every abandonment reliably produces a 15%-off text 15 minutes later, your repeat customers learn to abandon on purpose. You've built a coupon vending machine. I've watched brands' "abandoned-cart recovery revenue" go up while total margin went down, because they were discounting buyers who'd have paid full price.

Second, you're spending margin on the timing-sensitive people who didn't need it. The shopper at minute 15 with a live tab converts on a plain reminder. The code is wasted on them.

A sequence that respects both problems:

  1. Message 1 (~15–20 min): no code. Just the nudge. "You left [product] in your cart — still want it? [link]." This is where the bulk of your recovery happens, at zero discount cost.
  2. Message 2 (~4–24 hours): soft incentive, if any. Free shipping or a modest code, only for carts that didn't recover on message 1.
  3. Message 3 (day 2–3): last call. Only if your unsub math supports a third touch — and it often doesn't. We wrote about how the 4th text in 7 days is where unsub rates double; the same fatigue logic caps your cart sequence.

The abandoned-cart template post has copy you can lift for each stage. The point here is structural: hold the discount back until timing has done everything it can.

The quiet-hours edge case that eats your fast send

Here's where the timing advantage quietly evaporates, and almost nobody accounts for it.

Say a shopper abandons at 10:47 PM in their local time. Your automation fires the perfect 15-minute reminder at 11:02 PM. Except: quiet-hours rules (and plain courtesy) mean you don't send marketing texts at 11 PM. Texting someone that late is a fast track to STOP replies and, depending on the jurisdiction, TCPA exposure.

So what happens to that send? One of two things:

  • Bad version: it goes out at 11:02 PM anyway, and you've annoyed a buyer into unsubscribing over a $40 cart.
  • Good version: it's held and released the moment the quiet-hours window reopens the next morning — say 9:00 AM local.

That held send is now ~10 hours late. The decay curve says it recovers at a fraction of the 15-minute rate. But it's still the right call, because sending at 11 PM would have cost you the subscriber entirely.

ReadySMS enforces quiet hours based on the recipient's local area — sends outside permitted local hours are held rather than blasted at whatever time your server clock happens to say. That's the mechanism. But the strategy around it is yours to set: for late-night abandoners, accept the morning delay and consider that this is exactly the cohort where a small incentive in the first (now-delayed) message earns its keep, since timing can't carry it anymore.

For the full breakdown of the legal rule vs. the smart rule, this quiet-hours post is worth ten minutes.

A timing playbook you can set today

Abandonment time (local)First sendDiscount in msg 1?Why
9 AM – 8 PM~15 minNoIntent is hot; reminder alone converts
8 PM – 8:45 PM~15 minNoStill inside a reasonable window
8:45 PM – 8 AMHeld to ~9 AMYes, smallTiming edge is gone; incentive compensates

Two rules doing most of the work:

  • Send fast when you legally and reasonably can. Every minute past ~30 is measurable recovery you're forfeiting.
  • When quiet hours force a delay, switch strategies — lead with a modest incentive on that delayed message, because you no longer have speed as your lever.

What this means for your budget

Notice what didn't appear in any of the math above: a reason to spend more on discounts. The wins here are cheap. Sending faster costs nothing extra. Holding late-night sends to morning costs nothing extra. Dropping the code from message one saves margin. The only real spend is the per-segment cost, and at $0.0245 all-in on Standard, a thousand cart reminders is lunch money against $9,600 in recovered orders.

If you're on GoHighLevel, the trigger and delay logic live in your workflow and the send routes through ReadySMS — the GHL integration keeps the two-way replies synced so a "yes send me the link" lands back in your inbox.

Set the fast-send window. Hold the late-night ones. Keep the code in your pocket until message two. That sequence recovers more carts at a lower discount cost than the deep-discount blast most brands default to — and it does it with timing, which is free, instead of margin, which isn't.

If you want to model it against your own cart value and recovery rate before touching your automation, the ROI calculator will get you a number in a couple of minutes.