Solution guide · SMS & compliance
A2P 10DLC campaign rejected? Why it happens and how to get approved
Why A2P 10DLC campaigns get rejected — every common error code explained — and the exact opt-in, privacy policy and sample-message fixes that get approval.

Key takeaways
- Almost every A2P 10DLC rejection traces back to one of a handful of fixable problems: a vague campaign description, a weak opt-in, a missing or non-compliant privacy policy, or sample messages that do not match the use case.
- An approvable opt-in names the sender, says what messages will be sent and how often, states that message and data rates may apply, explains STOP and HELP, and links to the privacy policy and terms — with a checkbox that is not pre-ticked.
- The privacy policy must say that mobile numbers and SMS opt-in consent are never shared with third parties or affiliates for marketing.
- Most rejections can be fixed and resubmitted; a few — content violations, spam or phishing, high-risk and disallowed content — cannot, and need an appeal or a genuinely different campaign.
- Since September 2023, unregistered US 10DLC traffic is blocked outright, so there is no texting while you wait for approval.
A rejected A2P 10DLC campaign stops every text your business sends from a local number — appointment reminders, missed-call text-back, follow-up, the lot. The good news is that rejections are rarely mysterious. Carriers reject campaigns for a short list of reasons, Twilio publishes them as error codes, and each one has a specific fix.
This guide walks through what A2P 10DLC registration actually checks, every common rejection reason, and the exact wording that gets campaigns approved. It is the same process I use on registrations for GoHighLevel clients, where first-submission approval is the norm rather than the exception.
What A2P 10DLC registration actually is
A2P 10DLC is the US carriers’ system for application-to-person text messages sent from ordinary 10-digit long code numbers — the local numbers GoHighLevel, Twilio and similar platforms give you. Twilio’s own definition is blunt: if you send SMS or MMS to US numbers from long code numbers, you need to register, and carriers treat all platform traffic as A2P.
Registration happens in two parts, both submitted through your provider to The Campaign Registry, the industry database carriers check:
| Part | What it describes | What carriers check |
|---|---|---|
| Brand | Who is sending: legal business name, EIN, address, website | That the business is real and the details match public records |
| Campaign | Why you are texting: use case, description, sample messages, opt-in, opt-out and help | That recipients asked for the messages and can easily stop them |
Brand registration is usually the quick part. Almost every rejection happens at the campaign stage, because that is where carriers judge consent.
Every common rejection reason, and what fixes it
Twilio lists campaign rejections by error code. These are the ones that come up again and again, with the usual cause and the fix:
| Code | Rejection | Usual cause | Fix |
|---|---|---|---|
| 30886 | Invalid campaign description | One vague line such as “marketing” | Describe who receives messages, what they are about and how people sign up |
| 30896 | Opt-in error | No visible consent step, or a pre-ticked box | An unticked checkbox with full disclosure text (see below) |
| 30882 | Terms & conditions | Terms missing or not linked from the opt-in | Publish SMS terms and link them next to the checkbox |
| 30887 | Opt-out error | STOP instructions missing from messages | Include “Reply STOP to opt out” in the first message and samples |
| 30890 | Subscriber help | HELP keyword not handled | State “Reply HELP for help” and set an auto-response with contact details |
| 30891 | Invalid website URL | Website down, unfinished, or for a different business | Use a live site that matches the brand name and shows the opt-in |
| 30893 | Sample message and use case mismatch | Marketing samples on a “customer care” campaign | Write samples that match the selected use case exactly |
| 30892 | Public URL shortener in samples | bit.ly-style links | Use full links on your own domain |
| 30889 | Embedded phone number | A different phone number inside sample messages | Remove it, or use the number being registered |
| 30894 | Invalid brand information | Name, EIN or address does not match records | Match the legal name and EIN exactly as the IRS has them |
| 30898 | Excessive EIN | Too many brands registered on one EIN | Consolidate campaigns under one brand |
| 30900 | Ineligible use case | Content carriers do not allow on 10DLC | Choose the correct use case, or a different channel |
How to write an opt-in that gets approved
Carriers approve campaigns when they can see that recipients knowingly asked for the messages. CTIA’s Messaging Principles and Best Practices (section 5.1.1) — the guidelines carriers enforce — say a call-to-action should make clear:
- What the program is — the kind of messages people will receive.
- Who is sending — your business name.
- How often — message frequency, even if it varies.
- That message and data rates may apply.
- How to stop and get help — STOP and HELP — plus links to your terms and privacy policy.
On a website form, that becomes an unticked checkbox next to text like this:
I agree to receive appointment reminders and service updates by text from Cooper Plumbing. Message frequency varies. Message and data rates may apply. Reply STOP to opt out or HELP for help. See our Privacy Policy and Terms.
Privacy policy and terms: the wording carriers look for
A missing or careless privacy policy is one of the most common reasons for an opt-in rejection. Carriers need to see it linked from the opt-in, and they need it to rule out selling or sharing phone numbers. Twilio’s guidance, reflecting CTIA, asks for a statement along these lines:
We do not sell or share your SMS opt-in data or personal information with third parties for marketing purposes.
HighLevel’s own approval checklist flags the same trap from the other side: a privacy policy that mentions selling leads or sharing data with partners will get the campaign rejected. If you run a lead-generation business, the policy still has to say that SMS consent and mobile numbers are never shared.
Sample messages that match your use case
Reviewers compare your sample messages with the use case you chose. When they do not match, the campaign fails with 30893 even if everything else is perfect.
| Use case | Good sample | Why samples get rejected |
|---|---|---|
| Customer care | “Hi Jordan, this is Cooper Plumbing. Your technician arrives between 10 and 12 tomorrow. Reply STOP to opt out.” | A discount offer in a customer-care campaign |
| Marketing | “Cooper Plumbing: 15% off drain cleaning this week. Book at cooperplumbing.com/book. Reply STOP to opt out.” | Missing business name or STOP language |
| Account notifications | “Cooper Plumbing: your invoice #1042 is ready at cooperplumbing.com/pay. Reply HELP for help.” | Shortened links or a different phone number |
Every sample should name the business, sound like a real message you will send, and include STOP or HELP language where it naturally fits.
What it costs and how long it takes
Fees depend on the platform. In GoHighLevel, the one-time registration bundle covers brand, campaign and fast-track vetting:
Each additional campaign costs $15. Resubmitting a rejected campaign carries no new vetting fee. Monthly campaign and carrier fees are charged on top.
Source: HighLevel, A2P 10DLC Messaging Fees (September 2026)
On Twilio directly, The Campaign Registry raised its fees on 1 August 2025: brand registration is now $4.50, standard brand vetting $41.50, and campaign vetting $15 (non-refundable), plus $2–$10 a month per campaign depending on use case.
Timing varies more than the fees. Twilio’s vetting FAQ says standard reviews take up to 5 business days, and to contact support after 10. Other Twilio pages warn that reviews can take longer during busy periods. Plan for one to two weeks from submission to sending, and longer if you need a resubmission.
Resubmitting after a rejection: step by step
- Read the exact error code. In GoHighLevel it shows in the Trust Center; on Twilio, in the campaign details.
- Fix the cause on your website first. Reviewers check the live site, so update the form, privacy policy and terms before you touch the campaign.
- Rewrite the campaign description in two or three plain sentences: who receives messages, what they contain, and how people opt in.
- Replace the sample messages so they match the use case and include your business name and STOP language.
- Describe the opt-in flow precisely — where the checkbox lives and the exact disclosure text — and link the page.
- Resubmit once, carefully. Repeated quick resubmissions with the same problem only add delay.
Getting it approved the first time
The pattern behind approved campaigns is simple: the website, the opt-in, the privacy policy and the sample messages all tell the same story about who is texting, why, and how to stop it. When I handle A2P 10DLC registration, most of the work happens on the website before anything is submitted — which is why first-submission approval is the normal outcome.
If you text customers in states with their own rules, the federal process is only part of the picture. Florida, for example, adds quiet hours and frequency limits on top — see the Florida page for how those are handled. Once your campaign is live, make sure the rest of your follow-up reaches people too — email and SMS deliverability covers the email side of the same problem.
References
- Overview of US A2P 10DLC Messaging System and Carrier Benefits — Twilio Help Center
- Why Was My A2P 10DLC Campaign Registration Rejected? — Twilio Help Center
- A2P 10DLC Campaign Onboarding Guide — Twilio Help Center
- A2P 10DLC Campaign Vetting FAQ — Twilio Help Center
- Pricing and Fees for A2P 10DLC Service — Twilio Help Center
- US A2P 10DLC is now a fully verified route — Twilio Changelog
- Messaging Principles and Best Practices (May 2023) — CTIA
- The Campaign Registry — The Campaign Registry
- What is A2P 10DLC: Brand and Campaign Registration — HighLevel Support Portal
- How to get your phone number A2P approved in 2026 — HighLevel Support Portal
- A2P 10DLC Messaging Fees: Registration, Monthly, and Carrier Costs — HighLevel Support Portal
- Eleventh Circuit Vacates FCC’s TCPA One-to-One Consent Rule — Morrison Foerster





