GoHighLevel A2P 10DLC registration, and the six reasons it gets rejected
Brand then campaign, in that order. What each form actually wants, how long approval takes, the exact-match rule that fails most brands, and what to do when a campaign is rejected.
No SMS leaves a US sub-account until the business behind it is registered. That is not a GoHighLevel rule — it is the carrier standard for application-to-person messaging on ten-digit long codes, and every platform that sends business SMS in the US has to implement it.
For an agency rolling out sub-accounts, this matters more than it looks, because registration is per client business and it is the one part of a build that no snapshot can pre-solve. You will do it as many times as you have clients, and it gates the go-live date on all of them.
The two-step shape
Step one: register the brand. The brand is the business — legal entity, tax ID, address, website, contact person. Approval is usually quick, sometimes within the hour, occasionally a day.
Step two: register a campaign against the approved brand. The campaign describes the messaging — what you send, why, and how the recipient agreed to receive it. This is the slower step, typically one to five business days, and it is where most rejections happen.
You cannot start step two until step one is approved. That dependency is the reason we start registration on day one of an account build rather than at the end. It is item four in our sub-account creation order for exactly that reason.
What the brand form actually wants
The brand form looks like a normal business details form. It is not. It is a form that is checked against government filings by an automated matching process, and the matching is unforgiving.
- Legal business name must match the tax registration exactly. Not the trading name. Not the
name with “LLC” dropped because it looked untidy. If the IRS document says
NORTHGATE HEATING & COOLING LLC, that is the string. - EIN must match the same document. A transposed digit is a rejection.
- Registered address must match the filing, not the shop the customers visit.
- Website must be live, must describe the business the brand claims to be, and should carry a privacy policy that mentions SMS.
- Contact person must be a real person at the business, reachable at a business email address. A generic mailbox at a free provider is a weak signal.
The single most useful thing you can do at intake is ask the client for their CP 575 or 147C letter and copy the strings from it. Asking a business owner to tell you their legal name produces the name they think it is, which is frequently not the name that is filed.
What the campaign form actually wants
The campaign form is asking one question in five ways: can a stranger reading this tell who is messaging, what they will receive, and how they agreed to it?
You need to supply:
- a use case that matches what you will actually send — mixed marketing and customer care is common for a service business
- a plain description of the message programme
- two sample messages that look like the real thing, including the business name and a stop instruction
- a description of the opt-in flow, specific enough to be checked
- the URL where the opt-in happens, and it must be reachable
Sample messages should carry the brand name, the reason for the message, and Reply STOP to opt out.
A sample that reads Hi {{first_name}}, your appointment is confirmed will be rejected for not
identifying the sender.
The six reasons registrations get rejected
- Legal name or EIN mismatch. The most common by a distance. Fixed only by using the filing document.
- Opt-in cannot be verified. You described a web form; the reviewer visited the URL and the form has no consent checkbox, or no SMS-specific consent language. The checkbox must say the business will send text messages, and it must not be pre-ticked.
- Sample messages do not identify the sender or offer a stop. Both are mandatory in practice.
- Use case does not match the samples. A campaign registered as customer care with two promotional samples reads as an attempt to slip marketing through a lower-scrutiny lane.
- Website is thin, parked, or does not mention SMS. A privacy policy that covers SMS consent and data handling is doing real work here.
- Prohibited or restricted content. Certain categories are heavily restricted regardless of how well the form is filled in. Know before you promise the client a launch date.
What to do when it is rejected
Read the rejection reason literally, fix that one thing, and resubmit. Do not rewrite the whole submission — a second, differently-wrong submission restarts the clock and tells you nothing.
If the rejection is opt-in related, the fix is usually on the client’s website rather than in the form: add explicit SMS consent language next to the submit button, publish a privacy policy section covering it, and then resubmit pointing at that URL.
Build the consent language into the forms your snapshot ships, and this becomes a non-issue on every subsequent account. Every sub-account kit ships its forms with compliant consent wording already in place, precisely because retrofitting it one account at a time is the slowest possible way to solve it.
Sequencing this into a build
Here is the order that keeps registration off the critical path:
- Day 1 — collect the filing documents at intake, alongside the rest of the client data.
- Day 1 — create the sub-account, provision the number, submit the brand.
- Day 1–2 — build or load everything that does not send: structure, calendars, pipelines, forms.
- On brand approval — submit the campaign, with samples taken from the actual templates in the account rather than invented for the form.
- While the campaign is pending — configure email, connect integrations, fill custom values, run every non-SMS test.
- On campaign approval — run the SMS test pass, then publish message-sending workflows last.
Step 6 is the same publish-order discipline described in loading a snapshot without breaking it, and it matters doubly here: a workflow published before approval will attempt sends that fail, and the failure history makes later debugging harder to read.
Throughput, message classes and why your sequences should be quiet
Approval is not the end of it. A registered campaign carries a throughput allowance, and that allowance is a function of how much the carriers trust the brand. A brand new small business does not get the same per-minute message rate as a national one.
Three practical consequences for how you build:
Do not blast. A reactivation campaign that dumps eight thousand messages into the queue at 9am will be throttled, will deliver over hours, and will look broken to the client watching the dashboard. Throttle deliberately — batches through the day, spread over days — and tell the client the plan before you run it. This is why our database reactivation campaign service runs in throttled batches rather than one push.
Keep the message-to-conversation ratio healthy. Carriers watch for one-way traffic. A programme where people reply, book and answer looks materially different from one where nobody ever responds. Two-way sequences are not just better marketing, they are better standing.
Handle STOP properly and immediately. Opt-outs are honoured at the platform level, but your workflows should also stop enrolling an unsubscribed contact in anything else. That is an exit condition problem, and exit conditions are the thing most builds get wrong — see testing workflows before go-live.
Non-US clients
The 10DLC regime is a US carrier standard. Other countries have their own rules — sender ID registration, content restrictions, quiet-hours legislation — and they are not interchangeable. If you run accounts in several countries, keep a per-country note in the same compliance register, and never assume a sequence that is legal in one market is legal in the next. Reminder timing in particular is regulated in more places than agencies expect.
The agency-level habit worth building
Keep one row per client in a compliance register: legal name, EIN, brand status, campaign status, submission date, approval date, use case, and the opt-in URL you declared. When a client changes their website — and they will — you want to know within a day that the URL you registered no longer shows a consent checkbox.
Registration is also worth pricing. It is per-client work, it does not shrink with volume, and it is skilled enough that a junior doing it badly costs you a week. It sits squarely in the fixed credential cost described in what a sub-account really costs, and it is included in our sub-account setup service rather than left as an exercise for the client.
This note is one stage ofthe complete guide to GoHighLevel sub-accounts — seven stages from a signed client to a live account.