When a message receives a spam reject error, the carrier's filtering system has flagged it as potentially unwanted. Carriers don't share the exact reason — but the steps below address the most common causes and prepare you to escalate effectively if blocks continue.
Step 1: Audit your content
Review every message template and your campaign registration in TCR for the following before contacting support.
URLs and domains
Use a dedicated, branded domain you own and control. Avoid shared URL shorteners (bit.ly, tinyurl) and Google Docs or Sheets URLs — both are disproportionately associated with spam and phishing. If a domain has been flagged before, even on a different campaign, it may still be blocklisted.
Opt-out language
Every message must include standard opt-out instructions — for example, "Reply STOP to opt out." Avoid compressed variants like "txt stop2stop." Carriers parse for standard STOP and HELP keywords; non-standard variants can be treated as non-compliant.
SHAFT content
Review for any content touching Sex, Hate, Alcohol, Firearms, or Tobacco/Cannabis. Even borderline references trigger stricter filtering.
Carrier names in message content
Avoid referencing carrier names in your message body. Some carriers actively block messages containing their name or brand to prevent customer poaching, and blocks of this type require a formal exception process with no guaranteed approval. The fastest resolution is to remove or substitute the carrier name entirely. If your use case genuinely requires it, contact Bandwidth support with at least five real message examples demonstrating why. (Note: these are use-case justification examples for the carrier exception process — they are separate from the blocked-traffic message samples requested in the escalation section below.)
Campaign registration alignment
Carrier filtering frequently traces back to a mismatch between what is registered in TCR and what is actually being sent. Verify the following in your campaign registration:
Call to action / message flow (10DLC)
Your campaign's Call to Action (CTA) field must be filled out — a blank or vague entry is a leading cause of filtering that will not be actionable in a carrier escalation until corrected. Describe specifically how subscribers opt in: the website form, keyword, point of sale, IVR method, or other mechanism, and what disclosure they receive at the time of opt-in.
Sample messages (10DLC)
Your registered sample messages must reflect what recipients actually receive. Each sample must include your brand name, the type of content being sent, and standard opt-out language. For example: "AcmeCo: Your appointment is tomorrow at 10am. Reply STOP to opt out." Generic placeholder samples that don't match live traffic are flagged during carrier review and will not support an escalation.
Important: Avoid using "test" or "test message" as your message body when testing your campaign. Carriers filter messages containing this word, and it can trigger blocks on your sending number. When you need to test, use your TCR-approved sample messages instead — they reflect real content and will not flag carrier filters.
Age-gated content (10DLC)
If any URL or content in your messages is restricted to users 18 or older — including alcohol, cannabis, tobacco, or adult content — two things must both be true: the Age-Gated Content attribute must be enabled in your TCR campaign registration, and the linked website must actively enforce age verification at the landing page. Having one without the other will not satisfy carrier requirements.
Privacy Policy and Terms & Conditions links
For all 10DLC campaign registrations, both the Privacy Policy Link and Terms & Conditions Link fields must contain links to real, live, program-specific pages — not a generic homepage and not left as N/A. Leaving either field blank or invalid is an active vetting rejection reason.
For the full list of vetting rejection codes and remediation steps, see the vetting rejection reasons articles for your campaign type.
Step 2: Review your consent and list quality
Check your opt-out rate. A rising opt-out rate is an early signal of low engagement, stale consent, or recipient surprise. Address it before it generates spam complaints.
Test your own opt-in flow. Sign up as a new subscriber. Confirm the opt-in clearly discloses who is messaging, what kind of messages to expect, and how often. Verify a compliant welcome message arrives promptly with clear opt-out instructions.
Audit your subscriber list. Remove recipients who have not engaged in 90 or more days. Stale lists generate disproportionate spam complaints because disengaged recipients are far more likely to report messages as junk.
Ready to escalate? Here's what we need
If you have completed Steps 1 and 2 and blocks continue, contact Bandwidth support. Providing the following upfront lets us advocate with the carrier immediately — without a back-and-forth to collect it.
Information needed | Why it matters |
Recent message samples with timestamps (UTC), source and destination phone numbers, and message IDs — minimum 1, no more than 7 | Allows carrier-level investigation of specific traffic |
Summary of remediation steps already taken (for example: "Switched to branded domain on 6/10" or "Standardized opt-out language") | Prevents duplication of effort and demonstrates good faith to the carrier |
Opt-in flow documentation — URL, screenshot, or written description | Required for carrier escalation submissions |
Consent storage method | Demonstrates compliance posture to the carrier |
For the full background on how carriers detect and filter traffic — including long-term deliverability best practices — see the Carrier Spam-Reject Errors: Deliverability Best-Practices Guide.
