Every DTC brand has a folder of people who bought once, maybe twice, and then vanished. The instinct is to text all of them. They opted in, they're technically reachable, and the marginal cost of one SMS feels like rounding error. So the win-back list balloons — 90-day lapsed, 120-day, 180-day, "anyone who ever gave us a number" — and someone hits send.
The rounding error is the problem. A win-back blast isn't free, and its return-on-send falls off a cliff the deeper into the lapse window you dig. Past a certain segment size, you're not recovering revenue — you're paying to text contacts who were never coming back, and the recovered orders from the good part of the list are quietly covering that loss.
Full disclosure: I work for ReadySMS, so I have a horse in the "send more texts" race. Which is exactly why I want to show you where sending fewer is the correct answer. The math below uses our public pricing, but it works with any per-segment cost you plug in.
The unit that matters: cost per recovered dollar
Response rate on a well-scrubbed opt-in list runs somewhere around 30–50% for engagement (clicks, replies), but conversion on a win-back — an actual repeat order — is much lower. For lapsed buyers, a 1–3% conversion on a win-back blast is a realistic band. Frame all of these as approximations; your own numbers will differ.
Here's the chain you actually care about:
`` cost per recovered order = (segments per contact × cost per segment) ÷ conversion rate ``
And the number that tells you whether to send at all:
`` recovered revenue = contacts × conversion rate × average order value send cost = contacts × segments × cost per segment net = recovered revenue − send cost ``
Notice send cost scales linearly with contacts. Recovered revenue scales linearly with contacts and conversion rate. When you add contacts by extending the lapse window, you add cost at full price but you add revenue at a declining conversion rate — because a 180-day-lapsed buyer converts worse than a 90-day one. That gap is where the ceiling lives.
Pricing the send, honestly
On ReadySMS Standard, one SMS segment is $0.02 plus the $0.0045 carrier pass-through = $0.0245 all-in. Past 50,000 segments in a calendar month the rate drops automatically to $0.016 + $0.0045 = $0.0205. (Full pricing: readysms.io/pricing.)
Segment count is where win-back messages get expensive quietly. A win-back usually carries a discount code and a link, and it's often warmer/longer than a transactional text. A single SMS segment is 160 GSM-7 characters; go over and it splits into 153-char segments. Drop in a single emoji — a 🎉 to signal the comeback offer — and the whole message reverts to a 70-char unicode limit (67 per part after the first).
So a 175-character "we miss you, here's 20% off" text with one emoji isn't one segment. It's three unicode segments:
- 175 chars ÷ 67 chars/segment = 3 segments
- 3 × $0.0245 = $0.0735 per contact on Standard
That's before anyone converts. People model win-back at "two cents a text" and it's actually three-and-a-half times that once the emoji and the length are real. Kill the emoji, keep it under 160, and you're back to one segment at $0.0245. This is the cheapest optimization on the page and most brands skip it.
A worked example: where the 90-day list still pays
Say you sell a $60 AOV product. You segment lapsed buyers by recency and you know (roughly) how conversion decays:
| Segment | Contacts | Conversion | Recovered orders | Revenue @ $60 |
|---|---|---|---|---|
| 60–90 days lapsed | 4,000 | 3.0% | 120 | $7,200 |
| 91–120 days | 3,000 | 1.5% | 45 | $2,700 |
| 121–180 days | 5,000 | 0.7% | 35 | $2,100 |
| 181–365 days | 8,000 | 0.3% | 24 | $1,440 |
Now price a 2-segment win-back (say, 320 chars, no emoji — a real message with an offer and a link) at $0.0245/segment, so $0.049 per contact:
| Segment | Send cost | Revenue | Net | Cost / recovered $ |
|---|---|---|---|---|
| 60–90 days | $196 | $7,200 | +$7,004 | $0.027 |
| 91–120 days | $147 | $2,700 | +$2,553 | $0.054 |
| 121–180 days | $245 | $2,100 | +$1,855 | $0.117 |
| 181–365 days | $392 | $1,440 | +$1,048 | $0.272 |
Every one of these is still net positive. So where's the ceiling? It's not in send cost alone — SMS is cheap enough that raw texting rarely goes underwater on an opted-in list. The ceiling shows up when you layer in the two costs the segment table hides.
The two costs that flip the sign
1. Discount margin. A win-back almost always carries an incentive. That 20% off $60 is $12 of margin gone per converted order. In the 181–365 band you recovered 24 orders — 24 × $12 = $288 of discount cost against $1,440 of top-line and $392 of send. Net contribution is now closer to $760, and if your product margin is thin the discount alone can erase the deepest lapse tier. The send cost is the small number here.
2. List-health cost. Every text to a truly dead contact is a chance to earn a STOP, a spam complaint, or a carrier filter that suppresses your whole campaign's throughput. That cost doesn't show up in the recovered-revenue line — it shows up next month, when your good segments deliver worse because you trained carriers to distrust your traffic. Blasting a 30,000-name graveyard to net $1,000 off the tail end is a bad trade against the deliverability of the 4,000 names that actually pay.
ReadySMS handles STOP automatically and propagates the opt-out across campaigns, and quiet-hours are enforced by recipient area, so the compliance mechanics are covered. But no platform can make a disengaged contact worth texting. That's a targeting decision, not a feature.
Finding your ceiling: the breakeven conversion rate
The clean way to draw the line is to solve for the conversion rate where a segment stops paying, discount included. For a 2-segment send at $0.049/contact, a $60 AOV, and $12 discount per order, breakeven contribution is roughly:
`` per-contact cost = $0.049 per-conversion contribution = $60 − $12 discount − COGS ``
If your COGS is $24 (60% gross margin before discount), each recovered order contributes about $24. Breakeven conversion is $0.049 ÷ $24 = 0.20%. Below a 0.2% expected conversion, that slice of the list loses money once you count the discount.
Look back at the table: the 181–365 band at 0.3% clears that bar barely, and it only clears it because SMS is cheap. Push to a 366-day-plus tail converting at 0.1% and you're underwater — and that's before list-health damage. That's your ceiling: the lapse depth where expected conversion drops under your per-contact breakeven.
Two levers move the ceiling in your favor:
- Cut segments. One-segment message instead of two roughly halves per-contact cost, dropping breakeven conversion to ~0.10%. Trim copy, drop the emoji, use a branded short link instead of a bulky one — link shorteners like bit.ly get filtered anyway.
- Hit volume tiers. If your total monthly sends cross 50,000 segments, the automatic Growth rate ($0.0205 all-in) lowers per-contact cost across every campaign, nudging the ceiling deeper. You don't pick it — it applies.
Send the good segments harder, not the dead ones wider
The honest takeaway: win-back economics reward depth on your best names, not breadth into your worst. The 60–90 day segment returned $7,000 net in the example — that's the list to test cadence, offers, and a follow-up on. The 365-day tail is where operators go to feel productive while destroying deliverability.
This mirrors what shows up on the other end of the list too: your top 5% of subscribers driving 40% of SMS revenue deserve more sends, and the five segmentation splits that actually move revenue are how you find both ends. If you want to pressure-test your own numbers before hitting send, run them through the ecommerce SMS ROI calculator — plug in your real AOV, discount, and expected conversion by lapse tier.
Practical next step: pull your lapsed list, bucket it by recency, and compute the breakeven conversion for each bucket at your actual per-contact segment cost. Wherever expected conversion falls below that line, don't send — suppress it. You'll spend less, your good segments will deliver better, and the recovered revenue you do book won't be quietly subsidizing contacts who were never coming back.
If you want to model the send cost side exactly, the cost calculator will price any segment count and message length against current tiers. Start there, then decide how deep your list is worth going.