Guides › Error 30896
Error 30896: how to fix an opt-in error
Last checked against official sources: October 30, 2026. Carrier rules change, so check the source links before you resubmit.
What it means
Twilio labels 30896 "Opt-in Error." It's close to 30909, but broader: the reviewer couldn't tell who signs up, where, and how, or the disclosures around the sign-up were incomplete. Often the policy and the sign-up text are fine, and the problem is simply that the message flow field doesn't tell the full story.
Why it usually happens
- The message flow names one sign-up method when you actually use several.
- There's no public link or screenshot showing what a subscriber sees.
- The sign-up text leaves out how often you'll text or that carrier rates may apply.
- The privacy policy doesn't say numbers stay private.
- The description reads like a sales pitch instead of a step-by-step account of consent.
How to fix it
- List every way a person can opt in: web form, keyword, in person, phone, checkout.
- For each one, say where it happens, what the person sees and what they do, in that order.
- Attach proof for each path: a live page URL, or a public link to a screenshot, photo or script.
- Quote the consent wording people agree to, including brand name, message type, frequency, carrier rates, STOP and HELP.
- Check the privacy policy has a non-sharing statement for phone numbers (see our 30908 guide).
- Edit and resubmit the rejected campaign rather than deleting it. A brand-new campaign means a new vetting fee and a fresh wait.
Questions and answers
What's the difference between 30896 and 30909?
Both are about consent. 30909 tends to mean the reviewer couldn't verify the call to action they were pointed to; 30896 is a wider "we can't follow your opt-in" flag. The fix is the same: a complete flow with public proof. See the 30909 guide.
Can I say customers consent by giving us their number?
Not on its own. Reviewers want a specific, separate agreement to receive texts, not consent assumed from a phone number on file.
Do I need screenshots if my form is live?
A live public page is usually enough. Screenshots help when the form sits inside an app, a checkout or a login area.
How long should the message flow be?
Long enough to cover every path clearly. A few short paragraphs is typical; one sentence almost never passes.
Next step
Run your rejection text through the free checker to confirm nothing else was flagged. If you'd rather not rewrite the fields yourself, our approval packets cover the description, samples, opt-in wording and policy text. Carriers make the final call, so we can't promise approval, but we revise free until it goes through.
Sources
- Twilio: Error 30896
- Twilio Help Center: A2P 10DLC campaign registration rejected
- HighLevel: Campaign rejection reasons and resolutions
TextApproved is independent and not affiliated with Twilio, HighLevel or any carrier. This guide is not legal advice.
Got a rejection message?
Paste it into the free A2P 10DLC rejection checker for a plain-language diagnosis in seconds. No login.
