You registered a 10DLC campaign weeks ago. The status finally changed, and it says REJECTED, followed by a code like 30897 or 30885 and a sentence that reads like it was written for a lawyer, not for the person who has to fix it. Support tells you to "review your use case." Nobody tells you whether editing the campaign will work or whether you just spent a vetting fee on something that was never going to be approved no matter what you typed into the form.
The rejection codes are public. Twilio publishes them, and they fall into two categories that behave completely differently: things you can fix by editing your submission, and things no amount of editing will ever fix because the vetting provider has flagged the vertical itself, not your paperwork. Knowing which one you're looking at saves you a second rejection and a second week of waiting.
What a rejection code is actually telling you
When you register an A2P 10DLC campaign, the aggregator (Twilio, Bandwidth, whoever you signed up with) submits your brand and use case to The Campaign Registry, and a carrier-approved vetting provider checks it against the registered use case, your website, your sample messages, and each carrier's content policy. A rejection isn't one generic status. It comes back as a specific numbered error that maps to a specific reason, and Twilio's own documentation is explicit that most rejected campaigns should be fixed by editing the existing submission, not deleted and recreated. There's no cap on how many times you can resubmit, and the vetting fee is only charged once per campaign, so editing costs you time, not money.
The part that trips people up: a handful of these codes come with a second line that says the campaign is "not eligible for resubmission." That line means what it says. No edit gets you through.
The rejections you can actually fix
Most rejections are paperwork problems, and they respond to editing:
- Error 30894, Invalid Brand Information: the brand name, website, or entity behind the campaign doesn't match what's registered. Fix the mismatch, resubmit.
- Error 30896, Opt-in Error: your message flow doesn't name every way a customer opts in, or it's missing a link to your privacy policy and terms. This one exists because carriers follow a consent framework laid out in CTIA's Messaging Principles and Best Practices, which separates conversational, informational, and promotional messaging and expects each to show the right kind of consent, implied, express, or express written. If your submission doesn't say which one applies and how you captured it, this is what comes back.
- Error 30898, Excessive EIN: your EIN is attached to too many brands. This is also the reason you shouldn't delete a rejected campaign and quietly re-register under the same EIN hoping for a clean slate. That pattern is exactly what this flag is built to catch.
- Error 30909, Message Flow or Call to Action incomplete: your submission didn't fully describe how a customer ends up receiving messages. Spell out the actual flow, step by step.
Edit the specific field the code points to, leave the rest alone, and resubmit. These are the rejections a support ticket can actually solve.
The rejections no edit will fix
Then there's the other category, and this is the one that matters if you're in a restricted industry:
- Error 30897, Disallowed Content: Twilio's own description lists what triggers it word for word: "loan marketing, stock alerts, cryptocurrency, or other risky investment content," "third-party debt collection, debt reduction, credit repair, or third-party lead generation," and "gambling, sweepstakes, or federally illegal substances." The documentation states plainly that campaigns rejected under this code are ineligible for resubmission.
- Error 30940: cannabis, CBD, marijuana, or other controlled-substance content, rejected outright regardless of state legality, not eligible for resubmission.
- Error 30949: debt reduction or consolidation content specifically, same non-resubmission language.
- Error 30885, High Risk: reserved for campaigns the vetting provider flags as fraudulent or deceptive during manual review. Twilio's guidance here is to not resubmit the same campaign at all. If you genuinely believe the flag was wrong, the only path is an appeal directly to Twilio support, not an edited resubmission.
Read that 30897 list again next to the industries this blog exists for: loan marketing, debt collection, debt reduction, credit repair, lead generation, gambling, cannabis. That's not a coincidence and it's not a paperwork gap. The vetting provider isn't asking you to rewrite your call to action. It has classified the entire use case as something it will not carry, full stop, and no amount of resubmitting will change that outcome.
Why the wording doesn't matter here
This is the point where a lot of operators start rewriting their sample messages to sound less like what they are, hoping a softer description slips through. It doesn't work, because the rejection isn't reading your tone, it's matching your business against a category. A payday lender describing a payment reminder as an "account update" is still a payday lender. A dispensary calling itself a "wellness retailer" is still selling a federally illegal substance as far as the carrier is concerned.
What actually gets you out from under this specific wall is the routing, not the copy. A2P 10DLC is a carrier-mandated gate that sits in front of business messaging sent through an aggregator pipeline, and it applies because the message is being sent by a business, at volume, through a registered campaign. Android Texter routes messages through a real Android handset instead, so the traffic is person-to-person SMS, the same category as texting a friend, and it never enters the campaign-vetting pipeline at all. There's no brand to register and no use case to get flagged as disallowed content, because the phone isn't announcing itself as a business sender in the first place.
That doesn't touch the other layer. The TCPA still governs who you can text and what you need from them before you do it, completely independent of whether a carrier ever sees your campaign, and the FCC's TCPA rules apply the same way whether you're on A2P, P2P, or anything else. A rejected campaign is a routing problem. Consent is a separate problem, and it's yours either way.
What to actually do next
First, find the specific error code, not just the word "rejected." Twilio and most aggregators show it in the campaign status detail, and it tells you immediately which category you're in.
If it's a fixable code (30894, 30896, 30898, 30909, or similar), fix the specific field it names and resubmit. Don't touch anything else in the submission, since an unrelated change can trigger a new review from scratch.
If it's 30897, 30940, 30949, or 30885, stop resubmitting. Editing won't change a classification decision. At that point the real choice is between finding an aggregator willing to take a heavily throttled version of your traffic (several exist for lending and collections, at a cost and with no guarantee of delivery) or moving the traffic that's actually blocked onto a channel that was never inside the A2P gate to begin with.
Frequently Asked Questions
Can I just delete a rejected campaign and register a new one instead of editing it?
Usually no benefit, and sometimes it backfires. Editing the existing campaign doesn't cost a second vetting fee, while deleting and re-registering under the same EIN too many times is what triggers the Excessive EIN flag (error 30898). If the rejection is fixable, edit in place. If it's a disallowed-content rejection, a new campaign with the same use case will be rejected the same way.
Does a High Risk rejection mean my business did something fraudulent?
Not necessarily. The code covers campaigns the vetting provider flags as resembling deceptive or fraudulent patterns during manual review, which can include legitimate businesses with an unclear use case description or an inconsistent website. If you believe it was a mistake, Twilio's guidance is to appeal directly rather than resubmit the same campaign, since editing alone doesn't trigger a new manual review of a high-risk flag.
If my campaign gets approved, does that mean my messages will always deliver?
No. Approval clears the registration gate, but carriers keep filtering traffic afterward based on content and sending patterns. An approved campaign can still see individual messages throttled or silently dropped if it starts looking like unwanted traffic.
Does sending SMS from a personal phone instead of a registered campaign remove my TCPA obligations?
No, and no tool can honestly claim otherwise. The TCPA governs consent and applies regardless of what channel carries the message. Routing outside A2P 10DLC only removes the carrier's campaign-vetting gate, not the legal requirement to have the recipient's consent before you text them.
What's the difference between a rejected campaign and a number that gets suspended later?
A rejection happens before you ever send a message, during the initial vetting review. A suspension happens to a campaign that was already approved and sending, after carrier monitoring flags a pattern in the live traffic, like a spike in volume or a spam complaint rate. They're different checkpoints with different fixes.
If your campaign keeps coming back with a disallowed-content code no matter how you word it, the problem was never the wording. Android Texter routes messages through a real phone instead of a registered campaign, so the traffic that A2P 10DLC won't carry for your industry can still reach the people who've agreed to hear from you, with the same consent responsibilities you'd have on any channel.
