Skip to contentSkip to navigationSkip to topbar
Page toolsOn this pageProducts used
Looking for more inspiration?Visit the

30909: Campaign rejected: Message Flow or Call to Action incomplete/unverified


ERROR: 30909

error-30909 page anchor
MESSAGING
ERROR

This error appears when your A2P 10DLC campaign is rejected because the Message Flow or Call to Action does not give reviewers enough information to verify how end users consent to receive messages. Include a complete description of every opt-in path you use and the required disclosures so the campaign can be reviewed successfully.

(information)

Info

Your campaign rejection may also return a more specific error code. If you received one of these alongside or instead of 30909, follow the linked page for targeted guidance:

See Why Was My A2P 10DLC Campaign Registration Rejected?(link takes you to an external page) for the full list of rejection codes.

Possible causes

possible-causes page anchor
  • Your Message Flow does not clearly explain how end users opt in, especially when consent is collected outside a public website through verbal, paper, in-store, QR, or other offline flows.
  • Your submission does not list every opt-in method used for the same campaign in the message_flow field.
  • Your website opt-in flow is missing required information such as links to terms and conditions, a privacy policy, message frequency, or the "message and data rates may apply" disclosure.
  • Your opt-in evidence cannot be verified because the website is private, behind a login, incomplete, or missing publicly accessible screenshots of the consent flow.
  • Your keyword opt-in flow is incomplete because required keyword details or related opt_in_message, opt_out_message, or help_message information is missing when you manage those flows yourself.
  • Rewrite the message_flow field so it explains exactly how consent is collected from start to finish. If you use more than one opt-in method, list all of them in the same submission.
  • If you collect consent on a website, include the website URL, a link to your privacy policy, and a link to your terms and conditions. Make sure the privacy policy states that mobile numbers are not shared, and includes message frequency and "message and data rates may apply."
  • If your opt-in flow is not publicly visible at the website you provide, add a public URL with hosted screenshots or other proof that shows the full consent experience.
  • If users can opt in by texting a keyword, provide the keyword list and the required opt-in confirmation details. If you manage help and opt-out yourself instead of using default or Advanced Opt-Out behavior, provide the corresponding help_message, opt_out_message, help_keywords, and opt_out_keywords values as required.
  • After you correct the CTA details, update the rejected campaign and retry review in Console or resubmit the campaign through the API with the required campaign fields.

Campaign reviewers at The Campaign Registry (TCR) verify each of the following before approving a campaign:

  • Collection mechanism — the message_flow describes every way end users give consent, such as a website form, SMS keyword, paper form, or QR code.
  • Required disclosures — the opt-in flow includes a privacy policy link, terms and conditions link, message frequency, and a "message and data rates may apply" statement.
  • Public verifiability — reviewers can access and confirm the opt-in experience. If the flow is behind a login or offline, hosted screenshots or other publicly accessible evidence must be provided.
  • All paths listed — if the campaign uses more than one opt-in method, every method is described in the same message_flow field.

Pre-submission checklist

pre-submission-checklist page anchor

Run through this list before submitting or resubmitting your campaign:

  • message_flow names the URL, keyword, paper form, or other mechanism where consent is collected.
  • message_flow includes a link to your privacy policy and a link to your terms and conditions.
  • Your privacy policy states that mobile numbers aren't shared with third parties, includes message frequency, and includes a "message and data rates may apply" disclosure.
  • If opt-in happens on a website, the URL is publicly accessible. If it isn't public, you have provided a URL with hosted screenshots of the full consent flow.
  • If end users opt in by texting a keyword, opt_in_message, opt_in_keywords, help_message, help_keywords, opt_out_message, and opt_out_keywords are populated (when you manage these yourself rather than using Twilio defaults).
  • If the campaign uses multiple opt-in paths, all paths are described in the same message_flow field.
  • Sample messages match the declared use case, identify the Brand by name, and include opt-out language.

Required fields and what reviewers verify

required-fields-and-what-reviewers-verify page anchor
API fieldWhat TCR checksDetails
message_flowEnd-to-end description of every opt-in path; links to privacy policy and terms40 to 2049 characters. Field reference
opt_in_messageAuto-reply confirming enrollment, including Brand name and opt-out instructions20 to 320 characters. Required when keyword opt-in is offered. Field reference
help_messageAuto-reply with support options when users send a help keyword20 to 320 characters. Required when managing help replies independently. Field reference
opt_out_messageAcknowledgment of opt-out and confirmation no further messages will be sent20 to 320 characters. Required when managing opt-out independently. Field reference

Website opt-in

website-opt-in page anchor
(warning)

Warning

Unacceptable message_flow

End users opt in on our website.

This doesn't name the URL, link to a privacy policy or terms page, or describe the consent mechanism.

(information)

Info

Acceptable message_flow

End users opt in by visiting www.acmesandwich.com/sms-signup and entering their phone number. They check a box agreeing to receive recurring promotional text messages from Acme Sandwich Company. Message frequency varies. Message and data rates may apply. Terms and Conditions: www.acmesandwich.com/terms. Privacy Policy: www.acmesandwich.com/privacy (states mobile numbers are not shared with third parties).

Passes because it names the URL, describes the consent action, discloses frequency and rates, and links to both required legal pages.

(warning)

Warning

Unacceptable message_flow

Customers text us to sign up.

This doesn't specify the keyword, the phone number, or the required auto-reply content.

(information)

Info

Acceptable message_flow

End users opt in by texting JOIN to (555) 123-4567. They receive an auto-reply: "Acme Sandwich Co: You are now subscribed to weekly deals. Msg frequency varies. Msg & data rates may apply. Reply HELP for help, STOP to cancel." Terms: www.acmesandwich.com/terms. Privacy: www.acmesandwich.com/privacy.

Passes because it identifies the keyword and number, shows the confirmation message content, and links to legal pages. The corresponding opt_in_message, help_message, and opt_out_message fields must also be populated.

(warning)

Warning

Unacceptable message_flow

We collect consent in our stores.

This doesn't describe the paper form or explain how reviewers can verify the flow.

(information)

Info

Acceptable message_flow

End users opt in by filling out a paper form at Acme Sandwich Company retail locations. The form collects the customer's mobile number and includes checkboxes for consent to receive recurring promotional messages from Acme Sandwich Company. The form text states message frequency varies and message and data rates may apply, and provides links to www.acmesandwich.com/terms and www.acmesandwich.com/privacy. A photo of the form is hosted at www.acmesandwich.com/opt-in-evidence.

Passes because it describes the physical form, lists the required disclosures, and provides a publicly accessible URL where reviewers can verify the consent experience.

(warning)

Warning

Unacceptable message_flow

Users scan a QR code to opt in.

This doesn't explain where the QR code leads or what disclosures the user sees.

(information)

Info

Acceptable message_flow

End users scan a QR code displayed at Acme Sandwich Company locations, which opens www.acmesandwich.com/sms-signup in their mobile browser. On that page they enter their phone number and check a box agreeing to receive promotional messages. Message frequency varies. Message and data rates may apply. Terms: www.acmesandwich.com/terms. Privacy: www.acmesandwich.com/privacy.

Passes because the QR code destination is a publicly accessible web page with the same disclosures required for any website opt-in.

Multiple opt-in paths in one campaign

multiple-opt-in-paths-in-one-campaign page anchor

If your campaign uses more than one opt-in method, describe every path in the same message_flow field. Reviewers reject campaigns when the submission accounts for only one of several active opt-in paths.

(information)

Info

Example combining website and keyword opt-in

End users opt in by (1) visiting www.acmesandwich.com/sms-signup and entering their phone number, checking a box agreeing to receive recurring promotional text messages, or (2) texting JOIN to (555) 123-4567 and receiving a confirmation auto-reply. Message frequency varies. Msg & data rates may apply. Terms: www.acmesandwich.com/terms. Privacy: www.acmesandwich.com/privacy.

Edit the rejected campaign rather than deleting and recreating it. A vetting fee is assessed only once per campaign, so resubmitting the same campaign avoids a new fee.

  • Console: go to Messaging > Regulatory Compliance > Campaigns, click the failed campaign, then click Edit Campaign to correct the fields and resubmit.
  • API: update the campaign resource with corrected field values. See Troubleshooting and rectifying A2P Campaigns for detailed instructions.