What reviewers want in the message flow field
The message flow is the most important text in a campaign registration, and the most common place to fail. Twilio's error 30896 ("campaign vetting rejection, opt-in error") is raised when the flow does not explain who is opting in, where, and how consent is collected, when it leaves out an opt-in method, when a website flow is not public, or when the privacy policy linked from it is missing the required language. The generated description answers each of those points explicitly.
For a website form it names the URL, says the checkbox is separate and unchecked, says the form submits without it, quotes the exact consent wording and names the policy links. For a keyword it gives the keyword, the number, the call to action people see and the confirmation reply they receive. For paper, verbal and QR flows it describes the form, the script or the code, says where the record is kept and offers a copy to reviewers. It closes with the frequency, rates, STOP and HELP, and a line that consent is collected only for your messages and is not shared.
Sample messages that pass vetting
- Start every sample with the brand name. Reviewers reject samples that do not identify the sender.
- Include opt-out language in every sample ("Reply STOP to opt out"). The rules require it in at least one, and including it in all of them avoids an argument.
- Match the use case. Marketing samples for a campaign registered as customer care, or appointment reminders for a campaign registered as marketing, are rejected.
- Use [bracketed] placeholders for names, dates, order numbers and links, and replace [Link] with a full https:// URL on your own domain. Link shorteners are a rejection reason on their own.
- Keep samples realistic and distinct. Three near-identical messages, or samples copied from a template everyone uses, draw a closer look.
The generator writes three samples per selected use case along these lines. Edit them to sound like your business; the rules above are what to keep. The segment pill under each sample shows the GSM-7 segment count so you can see which ones will cost two segments once the placeholders are filled.
Keyword responses
If people can text a keyword to join, the registration asks for the keyword and the opt-in message. Reviewers expect the confirmation to name the brand, confirm the enrollment, state the frequency and rates, and give HELP and STOP instructions. The generated confirmation does all of that in one segment. The HELP and STOP responses follow the same pattern and come from the opt-in language generator, so they match the disclosure on your form word for word.
Paper, verbal and QR code opt-ins
Offline consent is allowed but has to be documented. For a paper form, the flow describes the separate consent box and its wording, and says signed forms are stored with the date and time. For verbal consent, the generator writes a script staff read word for word, including frequency, rates, STOP and that saying yes is optional, and the flow says the date, time and number are logged. For QR codes, the flow explains that the code opens your web form and that the same disclosure and links appear there. In every case, hosting a photo or screenshot of the form or signage at a public URL and mentioning it in the flow makes the reviewer's job easy.
Putting it all together before you submit
Paste the flow into the campaign's message flow field (most registries allow around 2,000 characters), the samples into the sample message fields, and set the keyword responses in your platform. Make sure the form URL in the flow is live, public and shows exactly the wording quoted. Then run the website compliance checker, which covers the privacy policy, terms and business details reviewers check alongside the flow. If you want the campaign handled end to end, the card at the bottom of this page links to a registration service.