Reference

10DLC Campaign Rejection Reasons & Fixes

Roughly 90% of 10DLC rejections trace to a handful of fixable gaps. Here's every common cause, its code, and the exact fix — before you burn another $15.

reference Last verified mid-2026 3 min read

Campaign vetting is done by a DCA (Direct Connect Aggregator), typically takes ~3–5 business days, and costs $15 per submission. The painful part: each rejection-and-resubmission costs another $15, and DCAs do not credit partial fixes — you must resolve every cited issue before resubmitting.

Fix everything before you resubmit
A resubmission that fixes 4 of 5 cited problems gets rejected again — and costs you another $15. Treat the rejection notice as a complete checklist, not a starting point.

Stuck on a specific code or symptom? Use the Rejection-Reason Troubleshooter to jump straight to the cause and fix.

The rejection-reason → fix table

Exact numeric codes shift over time and vary by platform (Twilio’s 30xxx codes vs raw TCR codes), so confirm against your provider’s live console. The causes and fixes below are stable.

#Rejection causeCode (approx.)Fix
1Opt-in language doesn't match sample content~30909 / 30916Align the CTA wording, the use case, and the message samples so they describe the same program.
2Marketing consent bundled with transactional or general T&C/privacy30913 / 30923Make the SMS marketing consent standalone and optional — its own unchecked checkbox.
3Pre-checked or missing consent box30925 / 30931Add an unchecked, skippable SMS-consent checkbox the user must actively tick.
4Missing CTA disclosures30924Add message type, frequency, "Msg & data rates may apply", and STOP/HELP to the opt-in.
5Consent flow unverifiable / behind a login / on paper30909 / 30921Supply a hosted screenshot or document link of the opt-in for reviewers.
6Privacy policy missing / broken / 404 / login-gated30932 + brand codesPublish a public, working privacy policy and link it from the website and opt-in form.
7Privacy policy shares mobile data for marketing30932Add the clause: SMS opt-in data and consent are never shared/sold to third parties for marketing.
8Brand–website mismatch / insecure / broken / form-only / under construction30919–30922Match the registered legal name, serve HTTPS, and add a real business-description page.
9DBA / legal-name or sole-prop / EIN mismatch30914 / 30915 / 30918Reconcile the brand registration to exactly match IRS/EIN records.
10Personal email (gmail) or unauthorized contact30971 / 30972Use a business-domain email and an authorized representative.
11Samples copied/identical, no brand name, link shorteners, or HTTP URLs30911 + high-risk codesWrite distinct samples, include the brand name, and use full HTTPS URLs only (no bit.ly, no bare HTTP).
12Prohibited content (SHAFT, cannabis/CBD, high-risk loans, debt, gambling, crypto, MLM)30940–30964Usually non-fixable for that use case — remove the content. It cannot be registered.

Sample-message hygiene

A large share of rejections come from sloppy sample messages. Before you submit:

  • Use 2–5 distinct samples — never duplicate or near-duplicate text.
  • At least one sample must contain the brand name; at least one should include opt-out language (“Reply STOP to cancel”).
  • Use [bracketed] placeholders for variable fields (Hi [name], your order [#] shipped).
  • Full HTTPS URLs only — no bit.ly/link shorteners, no bare http://.
  • If a sample contains a link or phone number, set has_embedded_links / has_embedded_phone to match. Mismatches get flagged.
  • A Mixed campaign needs at least one promotional and one transactional sample.

The three things that align — or you fail

The single most common root cause is misalignment. Your campaign description, your use case, your sample messages, and the opt-in flow on your website must all describe the same program. If your samples look like marketing but your use case says “Account Notification”, you’ll be rejected.

Sources