7 Trial-Expiry SMS Templates With the Consent Footnotes Most SaaS Teams Forget
Most SaaS trial-expiry SMS sequences I see were written by a growth marketer in fifteen minutes and never looked at by anyone who understood consent. The copy is fine. The conversion logic is fine. What's missing is the boring footnote attached to each message — what consent basis lets you send this, and does it need a STOP line.
That footnote is the difference between a clean campaign and one that gets carrier-filtered or, worse, turns into TCPA exposure at $500–$1,500 per text.
Full disclosure: I work for ReadySMS, so when I mention how the platform handles opt-outs or quiet hours, that's me describing our product. The templates below work on any compliant sender — the compliance reasoning is the part you can't skip regardless of who you use.
The one distinction that controls everything: transactional vs marketing
Under A2P 10DLC, your campaign gets registered with a use-case classification, and your messages have to match it. The line that matters most for trial sequences:
- Transactional — a message tied to an existing relationship and a specific account event. "Your trial expires in 2 days." A receipt. A password reset. These are servicing an account the user actively created.
- Marketing / promotional — a message whose primary purpose is to sell or upsell. "Upgrade now and save 20%." Even if it goes to a trial user, the discount-and-CTA framing pushes it into promotional territory.
Why you care: marketing-classified messages generally require explicit marketing consent and a STOP disclosure, and they're held to quiet-hours rules more strictly. Transactional account notifications have more latitude — but the moment you bolt a "Upgrade for 20% off" onto a trial-expiry alert, you've reclassified the whole message as marketing.
The practical rule I give SaaS teams: decide the classification of each message before you write the copy, not after. If your 10DLC campaign is registered as a mixed/marketing use case, treat every trial message as marketing and add the STOP line. It costs you ~20 characters and removes the argument. If you want the deeper version of this, the SaaS-specific 10DLC walkthrough covers registration choices in detail.
A note on collecting phone consent during signup
None of these templates are legal if you never had permission to text the number. A trial signup form that collects a phone field does not automatically grant SMS marketing consent. You need a checkbox (unchecked by default) or clear disclosure language at the point of capture, and you should record it.
ReadySMS captures opt-in attestation for bulk and API sends, which builds an audit trail you'll be glad to have if anyone ever asks "prove this person agreed." That's the foundation every template below stands on.
The 7 templates, annotated
Each one is marked with its consent basis, its likely classification, and whether it needs an explicit STOP line. I'm using {{merge}} fields generically.
1. Day 1 — welcome / activation nudge
Welcome to {{Product}}, {{First}}! Your 14-day trial is live. Reply HELP for support. Most teams start here: {{link}}
- Consent basis: transactional — they just created the account.
- Classification: transactional onboarding.
- STOP line needed? Best practice yes on the first message of any program. Even transactional sequences should give a clear opt-out path on entry.
- Footnote: this is also your implicit opt-in confirmation. Make message one unambiguous about what they signed up for.
2. Mid-trial — value check-in (day 5–7)
Hey {{First}} — you've created {{count}} {{thing}} in {{Product}} so far. Want to see the feature most teams miss? {{link}}
- Consent basis: transactional — account-state notification.
- Classification: borderline. Pure usage-based help stays transactional; a soft "see what else you could do" leans engagement, not sale. Keep the discount out and it stays clean.
- STOP line needed? Include
Reply STOP to opt outif your campaign is registered marketing.
3. Mid-trial — stuck-user re-engagement
{{First}}, noticed you haven't set up {{key_feature}} yet. It takes ~3 min and it's why people stick around. Walkthrough: {{link}} Reply STOP to opt out.
- Consent basis: marketing consent (you're driving deeper adoption to sell).
- Classification: marketing.
- STOP line needed? Yes.
- Footnote: this is the message that earns the most "wait, can we send this?" debate. If you're unsure, classify it marketing and add STOP. Done.
4. 48-hour warning
Heads up {{First}}: your {{Product}} trial ends in 2 days. After that your account pauses. Keep your data + access: {{upgrade_link}}
- Consent basis: transactional — this is a genuine account-state event.
- Classification: transactional, if you keep it to the facts (expiry + how to continue). The link can go to your pricing page without making the message promotional, because continuing service is the point.
- STOP line needed? Recommended, not strictly required for transactional. I'd include it.
- Watch out: "Upgrade now and save 25%!" reclassifies this to marketing instantly. Pick a lane.
5. Expiry day
Today's the last day of your {{Product}} trial, {{First}}. To keep your {{data/projects}} active, choose a plan here: {{upgrade_link}}
- Consent basis: transactional.
- Classification: transactional account notification.
- STOP line needed? Optional for transactional; include if registered marketing.
6. Win-back — 3 days after expiry
{{First}}, your {{Product}} data is still saved but your account's paused. Pick up where you left off — first month 20% off: {{link}} Reply STOP to opt out.
- Consent basis: marketing consent (now it's a discount-driven re-acquisition).
- Classification: marketing.
- STOP line needed? Yes, no exceptions.
- Footnote: once you add a promo, you are unambiguously marketing. The STOP line isn't optional and quiet hours apply hard.
7. Final win-back — 14 days after expiry
Last one from us, {{First}} — we'll stop here. If {{Product}} is still on your list, your saved data + 20% off is waiting: {{link}} Reply STOP to opt out.
- Consent basis: marketing consent.
- Classification: marketing.
- STOP line needed? Yes.
- Footnote: signaling "last one" reduces opt-outs and respects attention. If someone never engaged across seven messages, stop. Continuing to text an unresponsive number is exactly the behavior that generates complaints.
Quick-reference table
| # | Message | Basis | Class | STOP line |
|---|---|---|---|---|
| 1 | Day 1 welcome | Transactional | Onboarding | Yes (entry) |
| 2 | Mid-trial value | Transactional | Borderline | If marketing campaign |
| 3 | Stuck-user re-engage | Marketing | Marketing | Yes |
| 4 | 48-hour warning | Transactional | Transactional | Recommended |
| 5 | Expiry day | Transactional | Transactional | Optional |
| 6 | Win-back + promo | Marketing | Marketing | Yes |
| 7 | Final win-back | Marketing | Marketing | Yes |
The compliance plumbing that should run underneath
Annotating templates is half the job. The other half is making sure the system enforces the rules so a copy edit can't quietly break compliance.
- Automatic STOP handling. When someone replies STOP to template 6, they should never receive template 7. ReadySMS honors inbound STOP/UNSUBSCRIBE and propagates the opt-out across campaigns, so a contact who quits during win-back isn't messaged again from a different sequence.
- Quiet-hours enforcement. Your expiry alert firing at 11:40pm because that's when the trial clock hit zero is a TCPA-flavored mistake on marketing messages. Holds based on the recipient's local hours fix this without you babysitting send times — more on the smart version of quiet hours here.
- Litigator / DNC scrubbing. Before a marketing blast (templates 3, 6, 7), screening known TCPA-litigator and DNC numbers removes the people most likely to turn one text into a five-figure problem. As a standalone, the scrub runs $0.005 per contact — cheap insurance against $500–$1,500-per-text exposure.
A worked cost sketch
Say you've got 5,000 trials expiring this month and the win-back (template 6) runs at 178 characters. No emoji, so GSM-7 at 160 chars/segment means it splits into 2 segments.
On the Basic tier ($0.0074/segment) plus the $0.0045 carrier pass-through:
5,000 × 2 × ($0.0074 + $0.0045) = 5,000 × 2 × $0.0119 = $119 for the blast.
Add the litigator scrub at $0.005 × 5,000 = $25. So ~$144 to send a compliant, scrubbed win-back to 5,000 expired trials. If that recovers even 30 accounts at $40/mo, the sequence paid for itself the first month and compounds after. Run your own numbers on the cost calculator.
The takeaway
The templates aren't the hard part — you'll rewrite the copy to match your voice in an afternoon. The discipline is deciding each message's consent basis and classification before you write it, then letting the platform enforce STOP and quiet hours so a future copy tweak can't silently break things.
If you want to go deeper on the registration side, the SaaS 10DLC guide and the lead-to-retention SMS blueprint are the two I'd read next. And if you want to send these on infrastructure that handles opt-outs and quiet hours for you, ReadySMS starts with 2,500 free credits and no card — enough to test a full expiry sequence before you commit a dollar.