Executive Summary
A TCR campaign rejection means your A2P 10DLC Campaign did not pass CSP/upstream review—not that US carriers have “banned your industry.” Common root causes are mismatched samples vs use case, unverifiable opt-in (CTA/message flow), broken or non-SMS-ready privacy/terms URLs, Brand still unverified, and prohibited or inconsistent website content. Twilio documents failures such as error 30902 when a Direct Connect Aggregator (DCA2) rejects a Campaign registration request. The Campaign Registry (TCR) itself emphasizes that CSPs register Brands/Campaigns and that approval timing varies; TCR is not a substitute compliance consultancy for opt-in design. This guide gives a structured diagnose → fix live assets → edit/resubmit protocol so you stop burning cycles on blind resubmits.
Short answer: If your A2P campaign registration with TCR/your CSP failed, read the exact rejection reason, fix the live website/opt-in/privacy/samples first, confirm Brand status is verified, then edit and resubmit (or recreate only when immutable fields like use case cannot change). Do not resubmit the same package unchanged.
Who This Is For / Who It Is Not For
Who this is for
- Teams seeing “Campaign rejected,” Twilio 30902-class errors, or CSP portal failure reasons
- Agencies resubmitting on behalf of many Brands
- Developers integrating A2P registration APIs who need a remediation checklist
- Compliance staff aligning public disclosures with Campaign fields
Who this is not for
- Send-time blocks on unregistered numbers (different problem—see unregistered traffic guides)
- Pure TCPA lawsuit strategy (different workstream)
- Anyone expecting a guaranteed approval SLA from this article
Definitions
| Term | Meaning |
|---|---|
| TCR | The Campaign Registry—central Brand/Campaign registry for US 10DLC |
| CSP | Campaign Service Provider submitting on your behalf |
| DCA / DCA2 | Downstream aggregator/review path referenced in some CSP errors (e.g., Twilio 30902) |
| Campaign rejection | Failed Campaign review before approved sending |
| Brand unverified | Identity status blocking standard Campaign registration |
| CTA / message_flow | Description of how end users opt in |
| Resubmit | Edit failed Campaign and send again vs delete/recreate |
What a Rejection Is (and Is Not)
| Event | When it happens | What to do |
|---|---|---|
| Brand unverified / failed | Identity check | Fix EIN/legal name/address/website; appeal/vet per CSP |
| Campaign rejected | Use-case review | Fix packaging; resubmit |
| Number unregistered after approval | Number not associated / pending MNO | Attach to Messaging Service; wait/propagate |
| Send error 30034-class | Unregistered send attempt | Register/associate—not a “rejection code” fix |
Twilio’s 30902 docs describe Campaign registration rejected by DCA2 review. Always read your CSP’s specific reason strings—codes differ by provider.
Top Rejection Causes (With Fixes)
1. Opt-in / CTA cannot be verified
Symptom: Reviewer cannot see how users consent.
Fix: Live public page with unchecked SMS consent, disclosures (brand, purpose, frequency, rates, STOP/HELP, privacy/terms). Provide URL or screenshot/video in message_flow. Bandwidth requires clear, conspicuous, 1:1 opt-in not buried only in T&Cs.
2. Samples do not match use case or website
Symptom: Marketing samples on Customer Care; generic “we text customers.”
Fix: Rewrite description and 2–5 samples showing brand name, realistic content, and opt-out language on at least one sample (Bandwidth best practices).
3. Privacy policy / terms failures
Symptom: 9108-class or “privacy policy not compliant.”
Fix: Public SMS section covering mobile data sharing expectations; working URL. See 9108 guide.
4. Non-working or placeholder website
Fix: Production site resolving without auth walls; support contact reachable.
5. Content attributes mismatch
Symptom: Embedded link = No but samples include links.
Fix: Attributes must match samples; some fields cannot change—may require new Campaign.
6. SHAFT-C / prohibited website content
Fix: Remove prohibited categories from site/SMS or use only approved special paths with counsel/CSP guidance.
7. Brand still unverified
Fix: Resolve Brand before expecting Campaign approval. Unverified Brands generally cannot register standard Campaigns.
8. Reseller / ISV Brand mismatch
Fix: Register the end-customer Brand that customers see; include reseller identifiers your CSP requires.
Decision Framework: Edit vs Recreate
- Capture full rejection text + Campaign ID + Brand ID + use case.
- Map each reason to a live asset (URL, sample, attribute).
- Fix live assets first; date-stamp screenshots.
- If only editable fields changed → edit and resubmit.
- If immutable wrong use case / locked attributes → delete/recreate per CSP guide.
- If prohibited content → remediate site; consider appeal paths your CSP documents.
- Confirm Brand verified before resubmit.
- After approval, associate numbers; soak-test—do not blast.
Twilio publishes troubleshooting and rectifying A2P Campaigns for edit vs recreate scenarios.
Requirements Matrix for a Clean Resubmission
| Element | Must be true |
|---|---|
| Brand identity status | Verified or Vetted_Verified as required |
| Campaign description | Who / whom / why—specific |
| Samples | Match use case; brand named; STOP on ≥1 |
| Opt-in CTA | Verifiable 1:1 flow |
| Privacy & terms URLs | Public, SMS-aware |
| Content attributes | Match samples |
| Website | Live, consistent with Brand |
| Use case | Correct; recreate if wrong and locked |
Risk / Failure Modes
| Failure | Mitigation |
|---|---|
| Blind resubmit same package | Checklist gate before submit |
| Fixing samples but not live checkout | Update production UI first |
| Multiple rapid recreates | Prefer edit; document why recreate |
| Ignoring Brand status | Verify Brand dashboard first |
| Snowshoeing while rejected | Stop; do not evade with new numbers |
| Mixing TCPA gaps with TCR packaging | Separate legal consent audit |
Implementation Checklist (Owner + Artifact)
| Step | Owner | Artifact |
|---|---|---|
| Export rejection reasons | Messaging admin | Ticket with raw text |
| Brand status check | Ops | Screenshot |
| Live opt-in QA | Product | URL + screenshots |
| Privacy policy update | Legal | Published URL |
| Sample rewrite | Marketing ops | Sample set vN |
| Attribute audit | Admin | Checklist |
| Resubmit / recreate decision | Admin + CSP support | Decision note |
| Post-approval number attach | Eng | Sender pool report |
| Soak test | Eng | Metrics |
Soft CTA
Use MyTCRPlus rejection troubleshooting and tools to preflight packaging before you burn another review cycle—without treating results as guaranteed approval.
Operating Appendix
Expanded Operating Playbook
Week-by-week launch plan
Use this plan whether you are registering a first Campaign or remediating a rejection. Adjust dates to your CSP queue—there is no universal SLA.
| Week | Focus | Exit criteria |
|---|---|---|
| Week 0 | Inventory numbers, templates, consent sources | Spreadsheet signed by ops + compliance |
| Week 1 | Fix website, privacy SMS section, checkout/CTA | Public URLs load; screenshots dated |
| Week 1–2 | Brand registration / verification | Brand status verified (or Sole Prop path confirmed) |
| Week 2–3 | Campaign draft + peer review | Description, samples, attributes aligned |
| Week 3 | Submit Campaign; monitor failure reasons | Ticket with raw CSP reason text if rejected |
| Week 3–4 | Remediate and resubmit if needed | All rejection reasons closed |
| Week 4 | Attach numbers; low-volume soak test | Error rate acceptable to your SLO |
| Week 5 | Enable full volume; marketing gated separately | Marketing consent audit passed |
RACI for messaging compliance
| Activity | Responsible | Accountable | Consulted | Informed |
|---|---|---|---|---|
| Brand legal identity | Controller / legal | General counsel | CSP admin | Exec sponsor |
| Campaign copy + samples | Marketing ops | Compliance lead | Legal | Support |
| Opt-in UI | Product | Compliance lead | Eng | Marketing |
| Privacy policy SMS | Legal | GC | Marketing | CSP admin |
| CSP console submission | Messaging admin | Ops director | Eng | Finance |
| STOP suppression sync | Eng | Ops director | Support | Compliance |
| Incident response (blocks) | Eng on-call | Ops director | CSP support | Exec |
Evidence pack to keep for audits and resubmits
- Dated PDF/HTML capture of opt-in page and privacy policy
- Sample message set versioned in git or CMS
- Brand and Campaign IDs from CSP
- Consent ledger schema + 10 redacted example rows
- STOP test threads (inbound keyword → confirmation → suppression check)
- Rejection reason exports and fix notes
- Change log for From numbers and Messaging Services
Common executive questions—model answers
- “Can we just buy more numbers?” No—throughput is tied to Brand/Campaign factors; more numbers do not multiply capacity and can look like snowshoeing.
- “Sales wants to text the whole list Friday.” Only numbers with marketing consent on an approved Marketing Campaign; otherwise pause.
- “We are registered—why blocked?” Registration ≠ number association ≠ consent. Diagnose which layer failed.
- “How much will fees be?” Use your CSP’s current published schedule; do not rely on blog fee tables.
- “Will this stop lawsuits?” No system eliminates TCPA risk; it reduces carrier delivery failures when done correctly.
Quality bar before every submit
- [ ] Legal name / EIN / address match tax records (non–Sole Prop)
- [ ] Website live and consistent with Brand
- [ ] Privacy + terms URLs public and SMS-aware
- [ ] Opt-in 1:1, not pre-checked, not T&Cs-only
- [ ] Samples name the Brand and match use case
- [ ] At least one sample includes opt-out language
- [ ] Content attributes match samples (links, phone numbers, etc.)
- [ ] STOP/HELP configured in the messaging platform
- [ ] Owner assigned for post-approval number association
Failure drill: first 24 hours after a production SMS outage
- Declare severity; freeze marketing sends.
- Pull CSP error codes for top From numbers.
- Classify: unregistered vs rejected vs filtered vs consent complaint.
- Communicate customer-facing status if transactional SMS is down.
- Open CSP ticket with Campaign/Brand IDs and sample SIDs.
- If unregistered, do not rotate new long codes to “get around” blocks.
- Document timeline for leadership within 24 hours.
- Schedule postmortem with corrective actions owners.
How this page connects to the rest of the MyTCRPlus library
Pair this article with registration how-tos, privacy policy templates, disclosure wording guides, and rejection-code playbooks on mytcrplus.com. Use internal draft cluster links for TCPA rules, Brand registration, and vertical guides so readers can move from diagnosis to packaging without repeating foundational definitions. Keep a soft path to tools and microsite services for teams that need public disclosure pages—without promising approval rates or legal outcomes.
Sustaining compliance after go-live
Registration is not a one-time project. Quarterly, re-audit live templates against Campaign samples, re-test STOP across every system that can send, and re-verify that privacy URLs still resolve. When marketing launches a new promo calendar, update samples or register an additional Campaign rather than silently drifting content. When legal refreshes privacy policies, notify the messaging admin the same day. When finance changes legal entities or EINs after an acquisition, treat Brand identity as a migration project before the next send. These operating habits prevent the majority of “sudden” rejections and blocks that actually began as documentation drift weeks earlier.
FAQ
Why was my TCR campaign rejected?
Usually packaging: opt-in, samples, privacy URLs, Brand status, or attribute mismatch. Read the CSP reason string.
Can I just resubmit immediately?
Only after fixing root causes. Identical resubmits waste time.
What is Twilio 30902?
A documented Campaign registration rejection by DCA2 review—see Twilio’s error page for causes/solutions context.
Does TCR itself approve campaigns?
TCR materials indicate CSPs/upstream partners handle approval; timing varies. Work through your CSP.
Should I create a new Campaign every time?
Not if fields are editable. Recreate when use case/locked attributes are wrong.
Privacy policy keeps failing—what now?
Add SMS-specific language, ensure public HTTPS URL, align with samples. See 9108 guide.
Brand verified but Campaign still fails?
Focus on Campaign fields and live CTA—Brand OK does not auto-approve Campaigns.
How long after fix until approval?
No universal SLA. Completeness drives speed more than “priority tickets.”
Are rejection codes universal across CSPs?
No. Map your provider’s codes; MyTCRPlus hubs translate common patterns.
Does approval mean TCPA safe?
No. Consent law is separate.
Key Takeaways
- Rejections are usually fixable packaging problems, not mysterious bans.
- Fix live opt-in, privacy, and site assets before resubmit.
- Align description, samples, attributes, and use case.
- Verify Brand status first.
- Prefer edit over recreate unless fields are immutable.
- Use structured playbooks; avoid snowshoeing.
- MyTCRPlus tools help preflight—not guarantee.
Additional Deep Dive: Building a Rejection War Room
When a mid-market brand burns two weeks on failed Campaigns, stand up a short war room: compliance owns disclosure copy, marketing owns samples, engineering owns live URLs, and the messaging admin owns the CSP console. Meet daily until resubmit. Keep a single source-of-truth spreadsheet with columns for rejection reason, owner, fix URL, screenshot date, and “ready for resubmit” checkbox. Do not allow partial ready states—reviewers see the whole package. After approval, keep the war-room folder; the next product launch will reuse the same evidence pattern. For agencies, template the war-room per client Brand so you are not reinventing CTA language under deadline pressure. Finally, brief executives that each failed cycle is usually a documentation defect, not a carrier conspiracy—funding a privacy-page and checkout fix is cheaper than another month of blocked SMS revenue.
After each resubmit, wait for the CSP status change before opening duplicate tickets that confuse reviewers.
Disclaimer
Informational only—not legal advice. CSP error codes, fees, and review outcomes change. Confirm with your provider and counsel. MyTCRPlus does not guarantee approval.