SOP: A2P 10DLC Verification — Chat Widget Method (GHL)
Purpose: Get a client phone number A2P/10DLC approved in GoHighLevel using HighLevel’s Pre-Built / Quick Setup (Chat Widget–first) campaign flow.
Audience: Agency owners, VAs, onboarding staff
Related methods (classroom): Funnel Method snapshot, A2P Wizard — use those when widget-first is not a fit (see §12).
Sources: GHL Pre-Built A2P Campaign (Widget-First) docs (May 2026), coaching-call A2P / onboarding practices, carrier-aligned consent language.
1. What this method is
Carriers require proof that people opt in before you text them. In the widget-first flow:
- HighLevel auto-builds a compliant LeadConnector Chat Widget (locked disclosure language, STOP/HELP, rates, frequency).
- You install that widget on the business website URL used for brand registration.
- You declare Chat Widget as the only SMS opt-in method on that site.
- HighLevel’s compliance review checks the live site for the widget before you can submit.
You are not writing opt-in copy yourself. You are responsible for correct business identity data, a clean website (no competing SMS consent), and Privacy Policy / Terms that meet the SMS clause.
When to use Chat Widget method
| Use when… | Avoid when… |
|---|---|
| Client has (or you control) a public website / funnel URL | You need Mixed use-case or Sole Prop brand (widget Quick Setup is not available) |
| You’re okay with SMS consent living only in the chat widget | You need SMS consent on contact forms, booking forms, or pop-ups |
| You want GHL to auto-generate disclosures & sample structure | You’re registering a campaign that must use form / keyword / verbal opt-in |
Not available for: Mixed use-case campaigns · Sole Proprietor campaigns.
2. Critical rule (read first)
If Chat Widget is your A2P opt-in method, it must be the ONLY SMS opt-in method on the website.
Before you submit:
- Remove SMS consent checkboxes / “I agree to receive texts…” language from all other forms (contact, lead magnets, booking, pop-ups, footers).
- Leave Privacy Policy and Terms links on the site (required) — those are not SMS opt-in checkboxes.
- Confirm the LeadConnector widget script is live on the brand website URL.
Having form checkboxes and Chat Widget as the declared method is a common rejection reason.
3. End-to-end process (checklist)
□ Collect client business info (intake form below)
□ Create / open GHL sub-account for that client
□ Buy / assign local (or toll-free) number in that sub-account
□ Brand registration (Trust Center) — legal name, EIN, address, website
□ Wait for Brand Approved (if auto-submit is off, proceed to campaign after brand clears)
□ Start Campaign → choose Quick Setup / Pre-Built (Chat Widget)
□ Choose message type: Marketing OR Transactional (not mixed in this flow)
□ Generate / attach compliance widget; copy embed code
□ Install widget on website URL from brand registration
□ Strip SMS consent from every other form on that site
□ Confirm Privacy Policy + Terms live + SMS non-sharing clause
□ Run Compliance Review until Chat Widget check = Pass
□ Confirm website checklist boxes → Submit Application
□ Wait 24–72 hours (often); fix & resubmit if rejected (usually no re-charge if checklist was green)
□ After Approved: warm number gently; only then turn on rebilling / high-volume SMS
Typical coaching guidance: A2P often clears in ~2–4 days; don’t over-explain to the client — “carriers require registration to send texts for your business.”
4. Client intake — business info you must collect
Brand registration fails when EIN / legal name / address don’t match public records (OpenCorporates, SOS filings, IRS letter). Collect this once, early (card + wallet first on sales calls; EIN when you’re ready to register — per call training).
4.1 Required fields
| Field | Notes | Example |
|---|---|---|
| Legal business name | Exact LLC / Inc / Corp name on EIN — not the DBA alone | Joe Schmo LLC |
| DBA / trade name (if any) | For messaging display / website logo only; brand fields should match legal name per stricter GHL checks | ABC Plumbing |
| EIN / Tax ID | 9 digits; match IRS CP 575 or SS-4 | 12-3456789 |
| Entity type | LLC, Corp, Partnership, etc. | LLC |
| Business address | Physical / registered address that matches filings | 123 Main St, Austin, TX 78701 |
| Business phone | Main line | (512) 555-0100 |
| Business email | Prefer domain email | info@abcplumbing.com |
| Website URL | Public URL you will put the widget on (client site or subdomain / funnel you control) | https://abcplumbing.youragency.com |
| Industry / vertical | Must match site + use case | Home services – plumbing |
| Authorized contact name | Person submitting / authorized | Jane Owner |
| Authorized contact title | Owner | |
| Authorized contact mobile | (512) 555-0199 |
4.2 Optional but useful
- Articles of organization / EIN letter (PDF) if brand keeps failing
- Preferred area code for local number
- Whether they already text customers (and how)
- Age-gated content? (alcohol, cannabis, adult, etc. → DOB gate auto-applies in widget flow)
4.3 Copy-paste client intake form (send in email / Form / Notion)
A2P / TextING SETUP — BUSINESS INFO
1. Legal business name (exactly as on your EIN / LLC papers):
_______________________________________________
2. DBA / “doing business as” name (if different):
_______________________________________________
3. EIN / Federal Tax ID (XX-XXXXXXX):
_______________________________________________
4. Entity type (LLC / Inc / Sole prop / Partnership / Other):
_______________________________________________
5. Business street address (no P.O. Box if possible):
_______________________________________________
City: ______________ State: ____ ZIP: ________
6. Business phone: _______________________________
7. Business email: _______________________________
8. Website URL (live public site we’ll use for registration):
_______________________________________________
9. Do you already have Privacy Policy + Terms pages on that site?
[ ] Yes [ ] No — we’ll add them
10. Primary use of SMS (pick one for this campaign):
[ ] Customer care / appointments / service notifications (transactional)
[ ] Promotions / offers / marketing
(Note: Chat Widget Quick Setup does not support Mixed or Sole Prop.)
11. Authorized contact name + title:
_______________________________________________
12. Best mobile for us to reach you:
_______________________________________________
13. Attach (if available): EIN confirmation letter or SOS filing screenshot.
4.4 Sales-call script (keep short)
“Because we’re sending texts on behalf of your business, carriers require A2P registration. I just need your EIN and legal LLC name — same info you’d use for taxes. Takes a couple days, then we can send.”
Do not over-explain TCR / Twilio / HighLevel. Do not lead with “$11–$25 campaign fee” on the sales call unless asked.
5. Brand registration (Trust Center)
Path (verify in UI): Sub-account → Settings → Phone Numbers → Trust Center (or Phone System → A2P).
5.1 Brand field tips (from coaching + common fails)
- Use legal LLC name everywhere branding asks for business name (stricter HighLevel checks; DBA-only often fails).
- Website URL must be public, load without login, and be the same URL you install the widget on.
- EIN + legal name + address must match filings. Brand fails are usually identity mismatch, not the widget.
- Prefer a business email on the brand when possible.
- One brand per legal entity; each sub-account gets its own campaign/number story in GHL (numbers don’t freely move between sub-accounts).
5.2 Website strategy (agency reality)
Clients often won’t add pages to their own site. Coaching options that still work:
- Client’s real domain (best when you have access) — install widget + Privacy/Terms.
- Your subdomain (e.g.
clientname.youragency.com) with Privacy/Terms + widget — submit that URL as the brand website (funnel / snapshot pattern). - A2P Wizard / Funnel Method snapshot if widget-first isn’t the path (see §12).
Whatever URL you submit for the brand is what compliance AI will scrape for the widget.
6. Campaign — Quick Setup (Chat Widget)
6.1 Start the flow
- After brand is in progress / approved, start Campaign Registration.
- Select Quick Setup / Pre-Built campaign (Chat Widget) — not the fully manual path.
- Read the in-app warning: remove other SMS consent methods.
6.2 Message type → use case (widget flow behavior)
| You select | System behavior |
|---|---|
| Marketing / Promotional | Marketing use case; marketing consent checkbox required in widget before send |
| Transactional / Non-marketing | System assigns Customer Care (use-case picker may be locked) |
Default guidance in widget-first UI leans Customer Care / Account Notification for transactional — good fit for review requests, appointment reminders, missed-call text-back style messaging.
Do not pick Marketing if you only send appointment / review / service texts.
6.3 What HighLevel auto-generates (locked)
You generally cannot edit:
- Disclosure block (business name injected)
- STOP / HELP language
- Message & data rates language
- Message frequency language
- Opt-in method (forced to Chat Widget)
Required locked fields: Phone number · Disclosure · STOP/HELP · Rates · Frequency
Optional editable: Name field · Message field · Colors / header styling
Removed from this flow: Email field · Custom compliance fields · Manual opt-in method picker
Age-gated: If you mark age-gated content, a mandatory DOB field appears and cannot be removed.
6.4 Marketing consent (marketing campaigns only)
Widget includes a dedicated marketing consent checkbox. User must check it before continuing — don’t try to bypass.
7. Install the Chat Widget
- In the flow, open Chat Widget / continue → copy install script.
- Paste into the site’s
<head>or before</body>on pages where the widget should appear (homepage at minimum; ideally site-wide). - Publish / clear cache.
- Open the brand website URL in an incognito window — confirm the chat bubble loads.
- Return to Trust Center → Review Application / Compliance Review → Review Again until Chat Widget check passes.
7.1 If compliance review fails (“widget not detected”)
- Re-copy script from GHL (correct location / sub-account).
- Confirm you’re on the exact URL used in brand registration (www vs non-www, http vs https).
- Install site-wide, not only a draft page.
- Disable blockers / wait a few minutes for CDN cache.
- Re-run Review Again — you cannot submit until it passes.
7.2 Strip competing SMS opt-ins
On that same website, remove from every form/flow:
- “Text me” / “SMS consent” checkboxes
- Hidden pre-checked SMS consent
- Footer lines that say submitting the form means you agree to receive marketing texts
Keep normal contact forms (name/email/phone) without SMS marketing consent language if Chat Widget is the A2P method.
8. Privacy Policy & Terms (required even with widget)
LeadConnector widget TOS does not replace the customer website policies. The site must have:
- Clickable Privacy Policy
- Clickable Terms of Service / Terms & Conditions
- Privacy Policy must include a mobile info non-sharing clause (carriers check this)
8.1 Required Privacy Policy clause (paste verbatim)
No mobile information will be shared with third parties/affiliates for
marketing/promotional purposes. Information sharing to subcontractors in
support services, such as customer service, is permitted. All other use case
categories exclude text messaging originator opt-in data and consent; this
information will not be shared with any third parties.
8.2 Minimal Privacy Policy skeleton (add to client or funnel site)
# Privacy Policy — [LEGAL BUSINESS NAME]
Last updated: [DATE]
[LEGAL BUSINESS NAME] (“we”, “us”) operates [WEBSITE URL].
## Information we collect
We may collect name, phone number, email, and message content when you
contact us through our website (including our chat widget) or otherwise
provide information to us.
## How we use information
We use this information to respond to inquiries, provide services, and
(if you opt in) send SMS related to [customer care / appointments / offers].
## SMS / mobile information
No mobile information will be shared with third parties/affiliates for
marketing/promotional purposes. Information sharing to subcontractors in
support services, such as customer service, is permitted. All other use case
categories exclude text messaging originator opt-in data and consent; this
information will not be shared with any third parties.
## Opt-out
You may reply STOP to cancel SMS. Reply HELP for help. Message and data
rates may apply. Message frequency varies.
## Contact
[BUSINESS EMAIL] · [BUSINESS PHONE]
8.3 Minimal Terms skeleton
# Terms of Service — [LEGAL BUSINESS NAME]
By using [WEBSITE URL] and communicating with us (including via chat),
you agree to these Terms and our Privacy Policy.
Services are provided as described on our website. You agree to provide
accurate contact information.
SMS: If you provide a mobile number through our chat widget and consent
to messaging, you agree to receive texts as described in the widget
disclosure. Reply STOP to opt out; HELP for help. Message and data rates
may apply.
Contact: [BUSINESS EMAIL]
Link both in the site footer. Links must open without login.
9. Example campaign narrative & sample messages
Even when Quick Setup auto-fills a lot, align your mental model (and any editable description fields) with what you actually send.
9.1 Example use-case description (transactional / customer care)
This campaign sends customer care and service-related SMS from Joe Schmo LLC
(doing business as ABC Plumbing) to customers and website visitors who
voluntarily provide their mobile number and consent via the LeadConnector
chat widget on https://abcplumbing.example.com. Messages include appointment
reminders, scheduling confirmations, review requests, and responses to
customer inquiries. Every message identifies the business and includes
opt-out instructions. Message frequency varies based on customer activity
and scheduled appointments.
Write it specific to the client — don’t paste generic templates verbatim if the UI warns against that.
9.2 Sample message snippets (include name, business, STOP)
Transactional / customer care
Hi {{contact.first_name}}, this is Sam from ABC Plumbing. Your appointment
is confirmed for Thursday at 2:00 PM. Reply STOP to unsubscribe or HELP
for help.
Hi {{contact.first_name}}, ABC Plumbing here — thanks for chatting with us.
We’ll text you when we’re on the way. Reply STOP to opt out.
Marketing (only if Marketing campaign)
Hi {{contact.first_name}}, ABC Plumbing here — spring drain cleaning special
ends Friday. Reply YES for details or STOP to opt out. Msg & data rates may apply.
Required elements carriers expect in samples: contact name (or placeholder), business/staff identity, business name, Reply STOP…
10. Final submission confirmations
Before Submit Application, confirm in the checklist:
- Chat Widget is the only SMS opt-in method on the website
- Other forms/flows do not include SMS consent checkboxes/disclosures
- Privacy Policy & Terms are live and include the SMS clause
- Compliance Review shows Chat Widget = Pass
- Sample messages / use case match what you’ll actually send
Then submit. Review is often 24–48 hours; sometimes longer depending on reviewer.
After approval
- Wait up to a few days for all carriers to propagate.
- Warm gently (coaching: avoid blasting; remove loud STOP lines from early review texts when legally/ops-allowed in your process — opt-out still must work).
- Turn on rebilling after number is approved and sending works (common coaching pattern).
11. Rejections & troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Brand failed | EIN / legal name / address mismatch | Fix identity to match SOS / EIN letter; resubmit brand |
| Campaign failed — opt-in / website | Competing form consent or widget missing | Remove form SMS checkboxes; reinstall widget; Review Again |
| Campaign failed — privacy policy | Missing SMS non-sharing clause or broken link | Paste §8.1 clause; fix footer links; resubmit |
| Compliance Review red before submit | Widget not detected on brand URL | Fix URL match + install; don’t submit until green |
| GHL “A2P specialist” says site needs FAQ / testimonials | Support script ≠ carrier reality | Prefer fixing the stated fail reason; coaching: funnel/widget setups still get approved without bloated sites |
| Same reviewer keeps failing you | Nitpick on one detail | Change the specific item they cited (privacy wording, opt-in screenshot, etc.) and resubmit |
| Mixed / Sole Prop rejected before | Can’t use widget Quick Setup for those | Delete old campaign if required by GHL rules; submit new campaign on correct flow |
Fees (coaching / GHL norms): Resubmits often not re-charged if you don’t force-submit with a red checklist. Deleting and recreating a campaign can trigger a new fee — prefer edit + resubmit.
12. When to use a different method
| Method | Best for | Notes from coaching |
|---|---|---|
| Chat Widget Quick Setup | Standard brand + single use case; you control site; want locked compliance | Official GHL pre-built flow |
| Funnel Method (classroom snapshot) | Client won’t touch their site; you need Privacy/Terms/form package fast | Subdomain + snapshot; still widely used in group |
| A2P Wizard | Fast generated compliance site when stuck | Variable approval rates; fallback / parallel option |
| Manual Trust Center | Odd use cases, paper/verbal/QR opt-in | More writing; more rejection surface |
If widget-first keeps failing for website reasons after fixes, pivot to Funnel Method / Wizard with a clean dedicated URL — don’t fight the same reviewer for weeks.
13. VA / onboarding mini-runbook
- Client fills §4.3 intake.
- Create sub-account named with legal business name.
- Purchase number (local preferred; 800 for trials / reuse patterns per coaching).
- Register brand with intake data + chosen public URL.
- Run Quick Setup → Chat Widget → install script on that URL.
- Add Privacy/Terms pages with §8.1 clause if missing.
- Remove SMS consent from all other forms.
- Pass Compliance Review → submit.
- Log approval date in CRM; notify closer/CS that texts can go live.
- Only then enable rebilling / production workflows.
14. Quick reference — disclosure language (what the widget shows)
Exact locked text is generated by HighLevel. Conceptually it will always cover:
- Business name
- Consent to receive SMS at the number provided
- Message frequency varies
- Message and data rates may apply
- Reply STOP to opt out · HELP for help
For marketing campaigns, an explicit marketing consent checkbox is also required in the widget.
15. Document control
| Version | Date | Notes |
|---|---|---|
| 1.0 | 2026-07-17 | Initial SOP: GHL widget-first flow + agency intake / coaching practices |
Disclaimer: Carrier and HighLevel requirements change. Before submit, confirm against the live GHL Trust Center / help article Pre-Built A2P Campaign (Widget-First) Registration Flow. This SOP is operational guidance, not legal advice.