Annual renewals are where SaaS retention quietly dies. A customer paid you 11 months ago, hasn't logged in since March, and the renewal reminder goes to an inbox they haven't opened in weeks. The card auto-charges — or it doesn't, because the card expired — and either way the first time the customer thinks about your product is the refund request or the failed-payment email. That's a terrible way to find out whether someone still wants your software.
Full disclosure: I work for ReadySMS, so I have a horse in the "send more texts" race. But the renewal window is one of the few places where SMS earns its keep on pure timing. Annual subs renew once a year. You get one shot at the conversation. Email is where that conversation gets buried; a text is where it actually happens.
Why the renewal window is different from every other SaaS text
Most SaaS SMS lives in the marketing bucket — feature announcements, upsells, win-backs. Renewal reminders sit closer to transactional. The customer has an active paid relationship, a billing event is coming, and you're informing them about their own account. That's a meaningfully different consent posture than blasting a promo.
I say "closer to" transactional deliberately. A pure "your card will be charged $1,188 on March 3" notice is transactional. A "renew now and lock in this year's rate before it goes up" message tilts toward marketing. Where you land changes which 10DLC campaign use case you should be sending on — and getting that wrong is why delivery silently drops. Register the campaign that matches what you're actually sending, not the one that sounds friendlier.
The consent basis, briefly
You still need consent to text renewal reminders. An active paid subscription doesn't grant you an SMS channel automatically — the phone number has to have been collected with a disclosure that you'll text it, and that disclosure needs to cover account and billing notices at minimum.
The clean version: capture a mobile number at signup with a checkbox that says "Text me account and billing notifications." That gives you a defensible basis for the entire renewal cadence below, because every message in it is tied to a real billing event or account state. If your consent language only covers "marketing offers," the rate-lock and discount messages get shakier. ReadySMS records opt-in attestation on bulk and API sends, so you have the audit trail, but the trail only helps if the underlying consent actually covered what you sent. Consent is the sender's responsibility — the platform documents it, it doesn't manufacture it. If you're new to this, the SaaS 10DLC compliance guide covers the registration side.
The cadence: three touches, three account states
The whole thing is three messages. More than that and you're nagging someone about a payment they haven't been asked to make yet. Each fires on a different account state, not just a calendar date — the calendar is the trigger, the account state is the filter.
| Touch | Timing | Fires when | Goal |
|---|---|---|---|
| T-90 | 90 days out | Account is healthy + engaged | Confirm value, pre-empt surprise |
| T-60 | 60 days out | Account is quiet / low usage | Re-engage before the decision |
| T-14 | 14 days out | Renewal confirmed OR card issue detected | Confirm the charge, or fix the card |
The 90-day touch is not a sell. It's a "you're getting your money's worth" note to the accounts that are already using you — the ones who'll renew anyway. Skip the healthy accounts and you lose the cheapest, highest-goodwill message of the three.
The 60-day touch is the real work. That's the segment that's gone quiet — logged in twice in the last quarter, seat count dropping, whatever your health signal is. This is the account most likely to churn, and 60 days gives you time to actually do something (a check-in call, a feature nudge) before the auto-charge forces a yes/no.
The 14-day touch splits by billing state. If the card on file is good and renewal is confirmed, it's a courtesy heads-up. If the card is expired or the pre-auth failed, it's a fix-your-card message — and that one overlaps hard with failed-payment dunning, which recovers noticeably more than email when it lands inside the right window.
The template pack
Each one keeps the account/billing framing explicit so the message stays defensible. {brand}, {plan}, {amount}, {date}, {link} are merge fields. Every marketing-leaning message gets STOP language; ReadySMS honors STOP automatically and propagates the opt-out across campaigns, so a customer who opts out of renewal texts won't get caught by a different blast later.
T-90 — healthy account, value confirmation
{brand}: your {plan} plan renews {date}. You've logged 40+ sessions this quarter — nice. Nothing needed now, just a heads-up. Questions? Reply here. Txt STOP to opt out.
T-60 — quiet account, re-engagement
{brand}: your annual {plan} renews in ~60 days ({date}). Haven't seen you in a while — want a quick walkthrough of what's new before then? Reply YES and we'll set it up. STOP to opt out.
T-60 — quiet account, at-risk variant
{brand}: your {plan} renewal is coming up {date}. Before it does, is there anything not working for you? Reply and a real person will read it. STOP to opt out.
T-14 — renewal confirmed, courtesy
{brand}: heads-up — your {plan} plan renews {date} for {amount}. Card on file ending {last4}. No action needed. Manage anytime: {link}
That last one is pure transactional — no STOP required because it's an account notice, though many teams include it anyway. Check your own posture.
T-14 — card issue, recovery
{brand}: your {plan} renewal on {date} may fail — the card on file expired. Update it here to avoid a service gap: {link}
T-14 — downgrade save (optional)
{brand}: your {plan} renews {date} at {amount}. If the full plan's more than you need, we have a smaller tier — reply DOWNGRADE and we'll sort it. Beats losing you entirely. STOP to opt out.
That last template is the one billing teams resist and shouldn't. A customer who downgrades is worth more than a customer who cancels and disputes the charge. Offering the smaller tier proactively at T-14 catches the "this got too expensive" churn before it becomes a refund ticket.
Quiet hours matter more here than you'd think
Renewal texts skew toward business hours by nature, but auto-fired cadences don't respect time zones unless something forces them to. A T-14 card-fix message that lands at 6:40am because the customer moved to a different time zone reads as spam, and spam-flagged renewal reminders defeat the entire point.
ReadySMS enforces quiet hours based on the recipient's area, holding sends outside permitted local windows. For a cadence like this — where the whole value is the message landing at a moment the customer can act on it — that's not a compliance checkbox, it's a deliverability feature. A renewal text at 11am gets a card updated. The same text at 6:40am gets ignored, then opted out of.
What this costs to run
The math is small enough that renewal texting is nearly free relative to the revenue it protects. Say you have 5,000 annual subscribers renewing across the year. Each gets three messages, all single GSM-7 segments (keep them under 160 chars and they stay one segment each). That's 5,000 × 3 = 15,000 segments a year.
On the Standard tier at $0.02/segment plus the $0.0045 carrier pass-through — $0.0245 all-in — that's 15,000 × $0.0245 = $367.50 for the year. If even a handful of those subscribers renew because a text caught them where email didn't, on an annual plan worth four figures each, the cadence pays for itself in a single save. Run your own numbers on the cost calculator.
If you're running high enough volume that you cross 50,000 segments in a calendar month, the Growth rate of $0.016/segment applies automatically — but for most renewal cadences you're nowhere near that.
The practical takeaway
Three texts, three account states: confirm the healthy accounts at 90 days, re-engage the quiet ones at 60, and handle the billing reality (confirm or fix the card) at 14. Keep every message tethered to a real account or billing event so it stays defensible, register the campaign that matches what you're actually sending, and let quiet-hours enforcement keep the timing sane.
None of this replaces a good product or a renewal ops process. It just makes sure the customer knows the renewal is coming while there's still time to say yes, no, or "smaller plan, please" — instead of finding out from a failed charge. If you want to see how the renewal cadence fits into the broader lifecycle, the SaaS SMS strategy blueprint maps the whole path from lead to retention. Or grab the 2,500 free credits and test the T-14 template against your next batch of renewals — that's enough to run a real cohort before you commit a dollar.