TextApprovedFree checker

Guides › Error 30909

What error 30909 means and how to fix it

Last checked against official sources: October 29, 2026. Rules change, so re-check the source links before you resubmit.

What it means

Twilio lists 30909 as "Campaign rejected: Message Flow or Call to Action incomplete/unverified." HighLevel calls the same code a "CTA Verification Issue." In plain terms: the reviewer read how you said people opt in to your texts, and couldn't confirm it.

The "message flow" is the field Twilio labels "How do end-users consent to receive messages?" (the message_flow field in the API). HighLevel says reviewers go to the opt-in URL in your campaign and compare what they find with what you wrote.

Common causes

How to fix it, step by step

  1. Open the exact opt-in URL from your campaign in a private browser window. It must load with no login, no cookie wall and no 404, and the form must be visible on that page.
  2. Check the consent wording next to the phone field. It should name your business, say what messages people will get, give message frequency, say "Message and data rates may apply," and explain how to stop (Reply STOP) and get help (Reply HELP). If there's a checkbox, it must be optional and unchecked by default.
  3. Link a live Privacy Policy and Terms on your own domain. The privacy policy must say mobile numbers aren't shared with third parties.
  4. Rewrite the message flow as a complete, step-by-step description of every opt-in path (Twilio allows 40 to 2,048 characters). Include the page URL, the keyword and number for text-in, and a public evidence link for any offline method.
  5. Make the description match the page. Reviewers compare the two, so describe only opt-in paths people actually use.
  6. Fix any other codes first. Twilio notes you may also get a more specific code with 30909 (for example 30908 privacy policy, 30924 missing consent language, or 30925 pre-checked box). Fix every reason listed.
  7. Edit and resubmit the same campaign instead of deleting it. In Twilio's console, open the campaign and choose Edit & resubmit (Fix Campaign in the Legacy Console). Twilio says resubmitting keeps the campaign, avoids a second vetting fee, and starts a new review of up to 5 business days for standard use cases.

Example message flow (from Twilio's documentation)

Customers visit www.acmecoffee.example/sms, enter their phone number, and select an optional checkbox that is unchecked by default to agree to recurring promotional messages from Acme Coffee.
Message frequency varies. Message and data rates may apply. Reply STOP to unsubscribe. Reply HELP for help.
Terms: www.acmecoffee.example/terms. Privacy Policy: www.acmecoffee.example/privacy.

Adapt this to your real process. Don't copy it word for word.

FAQ

Will fixing these things guarantee approval?

No. Twilio says these changes make consent easier to verify but don't guarantee approval. Carriers and their vetting partners decide.

Should I delete the campaign and start over?

Usually not. Twilio recommends editing and resubmitting the rejected campaign, since a new campaign is charged another vetting fee.

My opt-in happens on paper or over the phone. What do I submit?

Describe the whole process and give a public URL with evidence, such as a photo of the form, hosted screenshots, or the full verbal script.

My website isn't live yet.

HighLevel says to add a URL that hosts screenshots or a mockup of the form, or wait until the page is live before resubmitting.

Not sure what the reviewer flagged?

Paste your rejection message into our free rejection checker for a plain-language diagnosis. If you'd rather have the fields written for you, see our approval packets. We can't guarantee approval, but we revise free until it's approved.

Sources

TextApproved is independent and not affiliated with Twilio or HighLevel. This guide is not legal advice.