A2P 10DLC registration for GHL — the 2026 walkthrough
A2P 10DLC is the regulatory layer that’s stopped more SMS rollouts than every technical bug combined. If you’re sending Application-to-Person (A2P) text messages from a 10-digit long code (10DLC) in the US, you need to register both a brand and a campaign. AT&T, Verizon, and T-Mobile rate-throttle — and increasingly outright block — unregistered traffic.
This is the walkthrough for doing it correctly inside the GHL + Twilio stack.
What you’re registering
Two things, in order:
- Brand registration with The Campaign Registry (TCR). This identifies your business as the sender. Done once per legal entity.
- Campaign registration, also with TCR but submitted through Twilio. This identifies what you’re sending — the use case, the sample messages, the opt-in flow.
Both are required. Brand without campaign = throttled. Campaign without brand = rejected.
Brand registration — what you need before you start
- Legal business name (matches your EIN paperwork exactly — “LLC” matters)
- EIN (sole props can register, but vetting takes longer)
- Physical address (no PO boxes for the legal entity)
- Vertical (e.g. “Professional Services”, “Retail”)
- Stock symbol or D-U-N-S number if you’re a public/large company (skips low/medium-trust scoring)
- Authorized representative — name, email, phone
Submit through Twilio Console → Trust Hub → Customer Profile. The vetting takes 1-3 business days for most. If you’re vetted with a higher trust score, your throughput caps go up.
Campaign registration — the part that gets rejected
This is where most agencies stall. The campaign requires:
Use case selection
Pick the most specific use case that fits. Common ones:
- Customer Care — appointment confirmations, customer service
- 2FA — one-time codes only (don’t pick this if you’re sending anything else)
- Account Notifications — order updates, account changes
- Marketing — promotional content (highest scrutiny)
- Mixed — you’re sending more than one of the above (covers most agencies)
If you’re in doubt, Mixed is the safe pick. Carriers reject “Marketing”-only campaigns more often than Mixed.
Sample messages
You submit 2-5 sample messages that show what you’ll actually send. This is where 70% of rejections happen. Patterns that get rejected:
- Missing opt-out language. Every message in a marketing flow needs
Reply STOP to opt out.(or equivalent). - Missing brand identification. The first message in a sequence should include your brand name.
- Loan/credit phrases without proper SHAFT compliance. SHAFT = Sex, Hate, Alcohol, Firearms, Tobacco. Even adjacent language gets flagged.
- Generic templates. Carriers can tell when you submitted a template and not actual production messages. Use real, specific copy.
A sample that passes:
Hey {first_name}, this is Marcus with Acme Roofing. We have a free
inspection slot tomorrow at 2pm — want me to grab it for you? Reply
STOP to opt out.
A sample that gets rejected:
Hi! Click here to learn more about our amazing offers!!!
Opt-in description
You describe — in plain English — how customers opt in. This needs to match your actual website. Common acceptable phrasings:
“Customers opt in by checking a consent checkbox on our intake form at example.com/contact, which states: ‘I agree to receive automated text messages from {brand} regarding my inquiry. Reply STOP to opt out.’”
If your form doesn’t have that checkbox, add it before submitting. Carriers verify the URL.
After submission — the rejection cycle
Plan for at least one rejection. Common reasons + fixes:
| Rejection reason | Fix |
|---|---|
| ”Sample messages do not include opt-out language” | Add Reply STOP to opt out to at least 2 samples |
| ”Use case does not match samples” | Switch to Mixed or rewrite samples to fit chosen use case |
| ”Opt-in language not present on website” | Update your form’s consent checkbox before resubmitting |
| ”Brand not verified” | Brand vetting still pending — wait, then resubmit |
Most rejections come back within 24-72 hours. Resubmission is free. Each resubmission goes back through the same review queue.
Toll-free as the alternate path
If A2P keeps rejecting and you need to send sooner, toll-free verification is a parallel path. Same opt-in requirements, faster vetting (often 24 hrs), but throughput caps differ. Most home-service agencies start on toll-free while their A2P registration works through TCR.
Inside GHL
Once registered:
- In GHL’s location-level settings → Phone Numbers → assign your registered Twilio number to the location.
- In Workflows, any SMS action will route through the registered campaign.
- Throughput is now uncapped (or capped at your trust-score tier) instead of rate-throttled.
TL;DR
A2P 10DLC isn’t hard — it’s tedious and unforgiving. The bureaucracy of brand vetting + carrier rejection cycles + opt-in language audits is what stops most agencies. The technical implementation is 15 minutes once the registration clears.
If you’d rather not memorize the rejection patterns, book a 15-minute call. We have brand + campaign templates that pass first-time most of the time, and we handle the rejection loop when they don’t. A2P registration is included in the $1,295/mo retainer.
Want this built for you?
Snapboard handles every part of GHL for marketing agencies. Flat $1,295/mo, 24-hour turnaround, pause anytime.
Book a 15-min intro call →