Twilio rejected our A2P 10DLC campaign again (error 30924 — non-compliant SMS opt-in language). The compliant disclosure text is genuinely heavy. Forcing it onto signup is the wrong fight. Real SaaS don't do that — they collect phone later, where heavy disclosure feels native. Here's the simpler path.
Remove "offers and news" checkbox from Step 1
Not a compliant SMS opt-in. Twilio flagged it. Just delete it.
Add inline SMS disclosure under the phone field on Step 2
Phone stays where it is. No checkbox. Tapping Continue = consent (Uber / Airbnb pattern).
Marketing emails — no change
Auto opt-in for trial signups stays. Compliant in AU/US/UK/CA via existing-relationship rule.
Two modals, two compliance gaps Twilio caught.
Start free today, and get 50% off your first 6 months when you subscribe.
I agree to the Terms of Use and Privacy Policy
I would like to receive offers and news
Gap A — link goes to SMS Terms but checkbox isn't an SMS opt-in
No phone is collected on this page, no STOP/HELP/Msg-rates language, link mismatch. This is the specific thing Twilio flagged.
A few quick details to get you started
↑ phone collected with zero SMS consent or disclosure
Gap B — phone collected without disclosure
If you collect a number with the intent to text, CTIA + Twilio require visible STOP/HELP, frequency, and rates language at the moment of collection. We provide nothing.
Production SaaS solve A2P compliance by avoiding the consent moment at signup. Five patterns observed in the wild.
Email + password (or OAuth) only. Phone is never collected during signup.
Password
By continuing you agree to Terms & Privacy
Why it works: If you never ask for a phone, there's no SMS consent to manage. They collect it later, contextually.
Phone field appears only when booking a meeting, with disclaimer text inline. Field is optional. Per Calendly's docs, the SMS field "cannot be made mandatory."
Phone for SMS reminders (optional)
By providing your phone you agree to receive booking reminders via SMS. Reply STOP to unsubscribe. Msg & data rates may apply.
Why it works: Disclosure feels native because the user just asked for a feature that needs it.
No checkbox. The submit button itself is the consent action, with disclosure directly above it. Twilio accepts this if all required phrases are visible.
Mobile number
By tapping Continue, you agree to receive automated SMS messages. Msg & data rates may apply. Reply STOP to cancel. Terms
Why it works: Same compliance, less friction, no extra click. Users perceive it as standard mobile flow.
A button opens the user's SMS app pre-populated with a keyword like JOIN. The act of sending the message is the opt-in. Strongest possible consent record.
Get text reminders
Text JOIN to (555) 123-4567 to enable SMS reminders for your appointments.
Msg & data rates may apply. Reply STOP to cancel. T&Cs apply.
Why it works: The user types and sends — irrefutable opt-in. Twilio loves this.
Phone is collected later in account profile or billing setup, with separate notification preferences. SMS opt-in lives in Notification Settings.
Notifications
Email reminders
Always on
Text reminders
Sent to +61 412 345 678
Why it works: Heavy SMS disclosure feels appropriate once the user has chosen to enable a feature that uses it.
For Carepatron we recommend Pattern A + Pattern E together: clean signup with no phone, then a notification settings page where SMS opt-in lives.
It's the path with the lowest signup friction and the cleanest A2P story for Twilio reviewers.
Same two-step signup. Step 1 loses one checkbox. Step 2 gains an inline disclosure under the phone field. No new screens, no extra clicks.
Start free today, and get 50% off your first 6 months when you subscribe.
By creating an account you agree to our Terms of Use and Privacy Policy.
No checkboxes needed
Submission is the consent action. Terms wording lives under the button as a single inline line — standard SaaS pattern.
A few quick details to get you started
By entering your number, you consent to receive texts from Carepatron. Msg & data rates may apply. Msg frequency varies. Reply STOP to opt out, HELP for help. SMS Terms
Phone stays — disclosure added inline, no checkbox
"Button-as-consent" pattern (Pattern C above). Tapping Continue with a phone number provided = opt-in. Twilio accepts this if all required phrases are visible — they are.
Today, every trial signup is auto opted-in to marketing emails. That's compliant. Don't change it.
Auto opt-in for trial signups is legal in every market we operate in.
Anti-spam law in our key markets accepts trial signup as the consent event for marketing emails about Carepatron, as long as every email has a working unsubscribe link (we have this in Customer.io). Specifics:
🇦🇺 Australia — Spam Act 2003
"Inferred consent" via existing business relationship. Trial signup creates that relationship; marketing about Carepatron is in scope.
🇺🇸 United States — CAN-SPAM
Opt-out regime. Signup = permission. Just need a clear unsubscribe link in every email.
🇬🇧 UK / 🇪🇺 EU — PECR + GDPR
"Soft opt-in" — collected during negotiation of a sale of similar products, with opt-out at point of collection and on every email. Trial signup qualifies.
🇨🇦 Canada — CASL
Implied consent via existing business relationship. Trial signup qualifies.
The only thing that wouldn't be covered: purely promotional emails about unrelated third-party products (affiliate promos, partner offers). We don't send those, so we're fine.
Action: nothing. Keep auto opt-in for trial signups, keep the unsubscribe link working, and the "offers and news" checkbox can come off Step 1 with no compliance impact.
sms_consent = truesms_consent = false and unenrol from A2PVerbatim — every phrase is CTIA-required. This is the minimum that passes:
12px text, centred under the Create account button. No checkbox.
Paste this verbatim into the campaign form. Attach a screenshot of Signup Step 2 with a phone number filled in and the disclosure visible.
Prepared 2026-04-16 · Carepatron Growth · Twilio A2P 10DLC error 30924
carepatron.com