1. Read the rejection reason before changing anything
Twilio / TCR rejections usually come back as a category (vague description, content violation, opt-in not evidenced, use-case mismatch) rather than a line-by-line edit list. Find the rejection code in the Twilio Console under the campaign, and map it to the section below. Don't guess — fixing the wrong thing burns a resubmission cycle.
2. Rewrite a vague campaign description
"We send marketing messages to our customers" gets rejected. State the audience, the kind of messages, where and how people opt in, and the typical content. Quote the consent text users actually see. The description should let a reviewer picture the exact message landing on a phone without visiting your site.
3. Fix sample messages
Each sample should look like a real message you'd send: brand prefix, specific content, a frequency hint, the msg&data-rates disclosure, and Reply STOP / HELP wording on promotional traffic. Generic stand-ins like "Hi, check out our sale" read as placeholders and get flagged. See the sample message checklist for bad-vs-good examples.
4. Evidence your opt-in flow
Reviewers want to see where consent is captured. Name the exact URL, quote the consent string verbatim, confirm the checkbox is unchecked by default, and describe any confirmation step. "Users sign up on our website" with no detail is one of the most common rejection causes. The opt-in flow examples show what passes for web forms, checkout checkboxes, and keyword opt-in.
5. Repair privacy policy & SMS disclosures
Host a publicly reachable privacy policy that explicitly covers SMS opt-in data and states that you do not sell or share phone numbers with third parties for marketing. A policy that 404s, sits behind a login, or never mentions SMS is treated as missing. The privacy policy requirements page lists the exact language carriers look for.
6. Make every submitted URL crawlable
The opt-in page, privacy policy, and terms URLs you submit must be publicly reachable with the SMS-relevant language visible without authentication. If a reviewer (or a crawler) hits a 404, a login wall, or a page that doesn't actually describe SMS, the campaign is rejected even when the description is perfect.
7. Resolve use-case mismatch & disallowed content
Pick the use case that matches the majority of your traffic — declaring MARKETING while sending transactional samples (or the reverse) is a mismatch rejection. If samples touch age-gated content, lending terms, or embedded links, set the matching flags honestly rather than hiding them. Hidden attributes are what trigger content rejections; if you truly send two kinds of traffic, register two campaigns.
8. Run a final pre-resubmission pass
Before you click resubmit, run the full campaign back through the scanner and walk the resubmission checklist. Resubmitting with the same issues unfixed usually comes back as a faster rejection, not a faster approval — so spend the review wait fixing everything in one pass.