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.

A2P 10DLC campaign rejected? Why it happens and how to get approved — guide thumbnail

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:

  1. What the program is — the kind of messages people will receive.
  2. Who is sending — your business name.
  3. How often — message frequency, even if it varies.
  4. That message and data rates may apply.
  5. 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:

ChartOne-time A2P 10DLC registration fees in GoHighLevel
  • Sole proprietor$22.50
  • Low volume standard$22.50
  • High volume standard$64.00

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

  1. Read the exact error code. In GoHighLevel it shows in the Trust Center; on Twilio, in the campaign details.
  2. 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.
  3. Rewrite the campaign description in two or three plain sentences: who receives messages, what they contain, and how people opt in.
  4. Replace the sample messages so they match the use case and include your business name and STOP language.
  5. Describe the opt-in flow precisely — where the checkbox lives and the exact disclosure text — and link the page.
  6. 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.

Hunaid Zia

Hunaid Zia

GoHighLevel Expert, Developer & Automation Specialist

I have built GoHighLevel systems, AI agents and websites for 50+ businesses since 2021, and written this guide from that work. Questions about your own setup? Book a free call.

References

  1. Overview of US A2P 10DLC Messaging System and Carrier Benefits — Twilio Help Center
  2. Why Was My A2P 10DLC Campaign Registration Rejected? — Twilio Help Center
  3. A2P 10DLC Campaign Onboarding Guide — Twilio Help Center
  4. A2P 10DLC Campaign Vetting FAQ — Twilio Help Center
  5. Pricing and Fees for A2P 10DLC Service — Twilio Help Center
  6. US A2P 10DLC is now a fully verified route — Twilio Changelog
  7. Messaging Principles and Best Practices (May 2023) — CTIA
  8. The Campaign Registry — The Campaign Registry
  9. What is A2P 10DLC: Brand and Campaign Registration — HighLevel Support Portal
  10. How to get your phone number A2P approved in 2026 — HighLevel Support Portal
  11. A2P 10DLC Messaging Fees: Registration, Monthly, and Carrier Costs — HighLevel Support Portal
  12. Eleventh Circuit Vacates FCC’s TCPA One-to-One Consent Rule — Morrison Foerster

FAQ

Quick answers.

The questions people ask most about a2p 10dlc campaign rejected.

Ask me directly

Twilio says standard campaign vetting currently takes up to 5 business days, and to contact support if it passes 10. In practice brand registration is usually quick and campaign review takes longest, so plan for one to two weeks and longer if a resubmission is needed.

Not from an unregistered 10DLC number. Since 1 September 2023 Twilio blocks all unregistered US-bound 10DLC traffic, and GoHighLevel’s LC Phone runs on the same carrier rules. Use email or calls until the campaign is approved.

In GoHighLevel, resubmitting a rejected campaign does not carry a new vetting fee; adding a separate, additional campaign costs $15. On Twilio directly, check the current fee schedule — the $15 campaign vetting fee is non-refundable.

No. There is a Sole Proprietor brand type for businesses without an EIN. It has lower throughput and tighter limits than a Standard brand, so a business that has an EIN is usually better registering as Standard or Low Volume Standard.

The Campaign Registry (TCR) is the industry database US carriers use to check A2P 10DLC brands and campaigns. Businesses do not register with it directly — they register through their messaging provider, such as GoHighLevel or Twilio, which submits the details to TCR.

The brand describes who is sending: the legal business name, EIN, address and website. The campaign describes why you are texting: the use case, description, sample messages and how people opt in and out. Most rejections happen at the campaign stage.

Error 30891 usually means the website was down, unfinished, or did not match the registered business. Reviewers visit the site, so it needs to be live, show the same business name as the brand, and ideally display the SMS opt-in form, privacy policy and terms.

GoHighLevel charges a one-time $22.50 for Sole Proprietor and Low Volume Standard brands, or $64 for High Volume Standard, covering brand, campaign and fast-track vetting. Each additional campaign is $15, and monthly campaign and carrier fees apply on top.

No. A2P 10DLC covers ordinary 10-digit local numbers. Toll-free numbers go through a separate toll-free verification process instead.

Rather have it fixed?

I can do thisfor you.

If you would rather not work through this yourself, tell me what is going on and I will fix it — usually faster than reading the guide twice.

Spots fill fast — most weeks I take on two new builds.

Chat with Hunaid Zia on WhatsApp (+92 340 422 2101), opens in a new tab