Skip to content
Hireaghlva — Your GHL Workforce
A2P & SMS Compliance

How to Submit A2P 10DLC Registration in Twilio (Step-by-Step, 2026)

How to submit A2P 10DLC registration in the Twilio Console, step by step: Customer Profile, Brand, Messaging Service, and Campaign, plus fees and fixes.

By the Hireaghlva team Updated 12 min read
Step-by-step Twilio Console walkthrough for A2P 10DLC brand and campaign registration

To submit A2P 10DLC registration in Twilio, create a Customer Profile in Trust Hub, register your Brand, attach it to a Messaging Service, and register your Campaign — four steps reviewed by The Campaign Registry (TCR). Most GoHighLevel users never see Twilio’s actual console — GoHighLevel’s Trust Center handles A2P 10DLC registration on your behalf, using Twilio underneath. But if you’re managing numbers directly in Twilio (a custom integration, a non-GHL messaging setup, or you simply want to understand exactly what’s happening behind GoHighLevel’s simplified interface), this is the native step-by-step process, with the extra objects — Customer Profile and Messaging Service — that GHL’s flow abstracts away entirely.

If you’re specifically working inside GoHighLevel, our GoHighLevel-specific walkthrough covers the same underlying registration through GHL’s own Trust Center screens instead.

4 steps

Customer Profile, Brand, Messaging Service, Campaign

Minutes

Typical Customer Profile and Brand review time

Days

Typical Campaign review time — the step most failures happen at

Step 1: Create a Customer Profile

In the Twilio Console, navigate to Trust Hub and create a Customer Profile. This captures your core business identity — legal name, address, business type, and industry — and functions as the identity record that both your Brand and any future Twilio trust products (including toll-free verification — see toll-free vs. A2P 10DLC if you’re still choosing) reference. Complete every required field accurately and submit it for review (Twilio, A2P 10DLC registration application quickstart).

Step 2: Register your Brand

With an approved Customer Profile, register your Brand under Trust Hub → Brands. This is where you formally declare your business identity for A2P messaging purposes specifically — legal name, EIN (or SSN for Sole Proprietor), address, and vertical. If you don’t have an EIN, our guide to A2P Sole Proprietor registration without an EIN covers that path.

Brand rejections almost always trace back to a mismatch between what you entered and your official business records — a legal name that doesn’t exactly match your EIN registration, or an address that’s slightly out of date. Verify every field against your actual tax documents before submitting, not from memory.

The Campaign Registry (TCR) typically approves clean brand submissions within a few minutes (Twilio, A2P 10DLC Campaign Registration docs).

Step 3: Set up a Messaging Service

Navigate to Products & Services → Trust Hub → Registrations, select the A2P Campaigns tab, and click Create A2P Campaign. You’ll be prompted to select your approved Brand and attach it to a Messaging Service — either an existing one, or a new one you create as part of this flow. A Messaging Service is the container that groups your sending number(s) under one configuration, and it’s what your approved Campaign ultimately attaches to.

Step 4: Register your Campaign

Complete the Campaign registration fields: use case, campaign description, sample messages, and your opt-in method with a link to where consent actually happens (typically your privacy policy or opt-in form). Click Create, confirm, and submit.

What each Twilio registration step asks for, and its typical review time

StepWhat you submitTypical review
1. Customer ProfileLegal name, address, business type, industryOften minutes
2. BrandLegal name, EIN (or SSN for Sole Proprietor), address, verticalOften minutes
3. Messaging ServiceContainer for your sending number(s), linked to the BrandConfiguration, not a review step
4. CampaignUse case, description, sample messages, opt-in method and linkSeveral days; where most failures occur
Source: Twilio, A2P 10DLC Campaign Registration docs

Twilio’s documentation is explicit that campaign registration is where most application failures occur, and directs applicants to review the tips and examples provided at that step carefully before submitting — TCR typically approves clean campaigns within several days (Twilio, A2P 10DLC Campaign Registration).

Twilio API and CLI registration, for developers

Everything above describes the Twilio Console (the web dashboard), but every step in this flow is also available programmatically through Twilio’s REST API — relevant if you’re registering brands and campaigns as part of an automated onboarding pipeline rather than one-off manually. Customer Profiles, Brands, Messaging Services, and Campaigns each have corresponding API resources (/v1/CustomerProfiles, /v1/Brands, /v1/Services, and the Messaging Compliance API for campaigns respectively), and Twilio’s Trust Hub documentation includes request/response examples for each. For most single-business use cases the Console is faster and less error-prone than scripting the API; the API path earns its complexity specifically when you’re registering many brands programmatically — a SaaS platform onboarding its own customers onto their own A2P identities, for example, rather than a single business or a small agency managing a handful of client sub-accounts by hand.

Registering for government or nonprofit organizations

Government agencies and registered nonprofits follow a distinct onboarding path with different documentation requirements than standard commercial brands — Twilio maintains separate guidance for this case specifically, since the standard EIN/business-type verification flow doesn’t map cleanly onto a government or 501(c)(3) entity structure (Twilio, Government and Nonprofit A2P 10DLC onboarding).

Direct Standard vs. Low-Volume Standard registration

Twilio distinguishes between a full Direct Standard registration path and a Low-Volume Standard path, aimed at businesses with lower expected sending volume that still need a formal EIN-based brand. The core difference is default throughput and vetting depth rather than the registration steps themselves — both still require a Customer Profile, Brand, and Campaign (Twilio, Direct Standard and Low-Volume Standard Registration Guide).

Understanding your Trust Score and throughput after approval

Approval isn’t a single fixed outcome — Twilio and the carriers assign your Brand a trust score that determines your default sending throughput, and that score can improve over time as you build sending history and complete additional vetting.

Low

Unregistered / Sole Proprietor — throttled hard, lowest default throughput

Medium

Standard Brand, no secondary vetting — moderate default throughput

High

Standard Brand with secondary vetting — highest default throughput ceiling

If your business is growing into higher SMS volume — a larger contact list, more frequent campaigns, multiple sub-accounts sending simultaneously — secondary vetting (an additional, more detailed review beyond the standard Brand registration) is worth pursuing specifically to raise your throughput ceiling, rather than continuing to hit default rate limits as volume grows. It carries its own fee and review time but pays off for genuinely high-volume senders.

Common configuration mistakes beyond registration itself

A clean Brand and Campaign approval doesn’t guarantee smooth sending if the surrounding configuration is off. A few issues that show up specifically in the native Twilio setup, distinct from the registration content itself:

Number not added to the Messaging Service. The Campaign attaches to a Messaging Service, and the Messaging Service needs the actual sending number added as a resource inside it — a common gap when a number was purchased separately from when the Messaging Service was configured.

Multiple numbers, one campaign, wrong assumptions about which is registered. If a Messaging Service has several numbers attached, all of them inherit that Messaging Service’s Campaign association — which is usually what you want, but worth confirming explicitly rather than assuming, especially if numbers were added at different times by different team members.

Webhook/status callback misconfiguration masking delivery issues. If you’re not seeing delivery failures because your status callback URL isn’t correctly configured, messages can be silently failing without your integration ever surfacing the error. Confirm your Messaging Service’s status callback is pointed at a URL that’s actually logging or alerting on failures, not left at a default or placeholder value from initial setup.

Troubleshooting a rejected Twilio submission

If a Brand or Campaign comes back rejected, Twilio’s own troubleshooting documentation is worth reading directly rather than guessing — it maintains dedicated pages covering both brand-level and campaign-level rejection scenarios, with the specific corrective action for each named error code (Twilio, Troubleshooting and Rectifying A2P Campaigns). The general pattern across nearly every rejection reason is the same: edit and resubmit the existing registration rather than deleting and starting fresh, since resubmission avoids triggering a second vetting fee. We cover the most common rejection causes — and exactly how to fix each — in our dedicated A2P rejection reasons and fixes guide.

Managing multiple brands with Twilio Subaccounts

Agencies and platforms managing A2P registration for several distinct businesses commonly use Twilio Subaccounts — a way of partitioning a single Twilio account into isolated environments, each with its own Customer Profile, Brand, and Campaigns. This mirrors how GoHighLevel structures its own sub-accounts under one agency login, and for good reason: carriers need to see each underlying business identified separately, and Subaccounts (or GHL sub-accounts, if you’re working through GoHighLevel instead) are the mechanism that makes that possible without opening a fully separate Twilio account for every client.

A practical detail that catches people off guard: A2P registration status doesn’t carry over between a Twilio Subaccount and the parent account, or between two separate Subaccounts, even under the same overall Twilio login. Each Subaccount’s Brand and Campaign registration is independent and has to be completed on its own.

Moving an existing Twilio A2P registration into GoHighLevel

If you registered A2P 10DLC directly in Twilio before moving your messaging into GoHighLevel — a common situation for businesses that started with a custom Twilio integration and later adopted GHL — you generally don’t need to re-register from scratch. GoHighLevel’s Trust Center can connect to an existing, already-approved Twilio Brand and Campaign rather than forcing a new submission, provided the underlying Twilio account is the one GoHighLevel is configured to use for that sub-account. This is worth confirming directly with GoHighLevel support during the transition, since the exact linking process depends on how your existing Twilio account is structured (a standalone account vs. a Subaccount) and how GHL is provisioned to connect to it.

Testing your Twilio setup before going live

Before pointing real customer traffic at a newly registered number, send test messages the same way you’ll actually be sending in production — through the same Messaging Service, from the same number, ideally triggered by the same code path or workflow you’ll use live. Confirm delivery to test numbers on at least two of the three major carriers (AT&T, T-Mobile, Verizon), since carrier-side filtering behavior can differ slightly even for an identically registered campaign. Check Twilio’s message logs (Monitor → Logs → Messaging) for the delivery status of each test — a status of delivered confirms the full path is working, while failed or undelivered with an error code points you toward the specific cause (an unregistered number, a content filter, or a carrier-side rejection) rather than leaving you guessing.

How much does A2P 10DLC registration cost in Twilio?

A2P 10DLC registration in Twilio costs about $4.50 one-time for a Sole Proprietor or Low-Volume Standard brand, about $46 one-time for a Standard brand, a $15 one-time campaign vetting fee plus a small monthly fee, and roughly $0.003–$0.005 per message in carrier surcharges.

Twilio’s fee structure applies whether you’re registering natively or through a platform like GoHighLevel that sits on top of it: Sole Proprietor/Low-Volume Standard brand registration runs about $4.50 one-time, a Standard brand runs about $46 one-time (including secondary vetting), campaign use-case registration adds a $15 one-time vetting fee plus a small recurring monthly fee, and ongoing carrier surcharges of roughly $0.003–$0.005 apply per message sent (Twilio Support, A2P 10DLC pricing and fees).

Twilio A2P 10DLC fees at a glance

FeeAmountFrequency
Sole Proprietor / Low-Volume Standard brand~$4.50One-time
Standard brand (includes secondary vetting)~$46One-time
Campaign use-case vetting$15One-time
Campaign feeSmall recurring feeMonthly
Carrier surcharges~$0.003–$0.005Per message sent
Source: Twilio Support, A2P 10DLC pricing and fees
One-time Twilio A2P 10DLC registration fees (USD)
One-time Twilio A2P 10DLC registration fees (USD)
ItemValue
Standard brand (includes secondary vetting)46
Campaign use-case vetting15
Sole Proprietor / Low-Volume Standard brand4.5

Source: Twilio Support, A2P 10DLC pricing and fees

Our complete A2P 10DLC guide puts these fees in context, including a realistic first-month cost example for a single-location business.

Should you register directly in Twilio, or through GoHighLevel?

This question comes up often enough to answer directly rather than leaving it implied. If GoHighLevel is your primary CRM and messaging platform, register through GHL’s Trust Center — there’s no compliance or approval-odds advantage to using Twilio’s native console instead, since it’s the same TCR review either way, and GHL’s simplified flow reduces the number of screens and objects (Customer Profile, Messaging Service) you have to configure correctly.

Registering directly in Twilio makes sense specifically when: you’re building a custom application or integration that sends SMS outside of GoHighLevel entirely (if that integration also needs to feed data back into GoHighLevel, that’s where a custom GoHighLevel software build fits); you need finer-grained control over Messaging Service configuration than GHL’s Trust Center exposes; you’re a developer or platform provisioning A2P identities programmatically for many end customers; or you already have an established Twilio setup predating your GoHighLevel adoption and are deciding whether to migrate it or maintain it separately.

Best for

Register via GoHighLevel
Businesses using GHL as their primary platform
Register via Twilio directly
Custom integrations, developers, non-GHL messaging

Interface complexity

Register via GoHighLevel
Lower — fewer screens/objects
Register via Twilio directly
Higher — Customer Profile + Messaging Service exposed

Underlying review process

Register via GoHighLevel
The Campaign Registry (TCR)
Register via Twilio directly
The Campaign Registry (TCR) — identical

API/programmatic access

Register via GoHighLevel
Not exposed directly
Register via Twilio directly
Full REST API available

Questions that come up mid-registration

“Why does Twilio ask for a Customer Profile before I’ve even registered a Brand?” Customer Profile is the foundational identity record Twilio’s Trust Hub uses across multiple products, not just A2P messaging — it’s also referenced by toll-free verification and other trust products, which is why it’s collected as a separate, earlier step rather than folded directly into Brand registration.

“I registered a Brand months ago for toll-free verification — do I need a new one for A2P 10DLC?” Not necessarily. If your existing Customer Profile and Brand information is still accurate, you can typically proceed directly to Campaign registration for A2P 10DLC using that existing Brand, rather than creating a duplicate from scratch. Confirm the Brand type is appropriate for A2P specifically before assuming it carries over cleanly.

“Can I use the same Brand across multiple Messaging Services?” Yes — a single approved Brand can support multiple Campaigns, each potentially attached to a different Messaging Service, which is useful if you’re running genuinely distinct message types (say, transactional order updates on one number and marketing promotions on another) under the same underlying business identity.

“Does registering directly in Twilio cost more than going through GoHighLevel?” No — the fees are set by The Campaign Registry and the carriers, not by whichever platform you’re using to submit the registration. Brand, campaign vetting, and carrier surcharge fees are identical whether you register natively in Twilio or through GoHighLevel’s Trust Center, since both are ultimately submitting the same registration to the same review body.

A practical checklist before you submit

Exact match

Legal name, EIN, and address match official records precisely

Live link

Privacy policy URL is public and specifically addresses SMS

Real examples

Sample messages reflect what you actually send, not placeholders

No shorteners

Message links use full URLs, not bit.ly/tinyurl-style shorteners

What do Twilio A2P error codes mean?

Twilio A2P error code 30034 means the number isn’t linked to an approved campaign, 30007 means the carrier filtered the message, and 30003 means the destination handset is unreachable.

Once you’re sending live traffic, Twilio’s message logs attach a specific error code to any failed delivery — and these codes are the fastest way to diagnose a problem without guessing. A few of the most common ones relevant to A2P-registered numbers: 30034 indicates the number isn’t associated with an approved A2P campaign (a registration or linking problem, not a content problem); 30007 indicates the message was filtered by the carrier, often a content or link-related flag rather than a registration issue; 30003 indicates the destination handset is unreachable, unrelated to A2P status at all. Checking the specific error code before assuming “it must be a registration problem” saves time — a large share of delivery failures on an already-approved campaign trace back to content filtering or number issues, not registration status at all. Our guide to fixing SMS carrier filtering in GoHighLevel walks through those filtering causes in detail.

Bringing it together

The native Twilio flow has more steps than GoHighLevel’s simplified Trust Center wrapper — a separate Customer Profile and Messaging Service step that GHL handles behind the scenes — but the underlying review process and rejection risks are identical, because it’s the same Campaign Registry review either way. Get your Customer Profile and Brand details exact, treat Campaign registration as the step that deserves the most care, and budget several business days for review rather than expecting instant approval across the board.

Whether you end up managing this directly in Twilio or through GoHighLevel’s Trust Center, the underlying compliance bar is the same, and the businesses that get through it fastest are the ones that treat the Brand and Campaign forms as carrier-facing legal documentation rather than a quick checkbox on the way to turning SMS on. Take the extra ten minutes to verify every field against your actual business records before submitting — it’s consistently faster than fixing a rejection after the fact.

For most GoHighLevel users, the practical takeaway is simpler than the full native flow above suggests: unless you have a specific technical reason to work in Twilio’s console directly — a custom integration, programmatic multi-brand registration, or an existing Twilio setup predating GHL adoption — registering through GoHighLevel’s own Trust Center accomplishes exactly the same carrier-side result with fewer screens to manage — and if you’d rather not manage either, a dedicated GoHighLevel VA can handle registration and the SMS workflows that depend on it. Use this guide as the reference for understanding what’s actually happening underneath, not necessarily as the path every GoHighLevel user needs to take directly.

Written by the Hireaghlva GoHighLevel team

We build and run GoHighLevel accounts, automations, dashboards, and websites for agencies and local businesses across the US and Canada. This guide reflects that hands-on work, with sources cited inline where we reference outside data. Last reviewed September 13, 2026.

About our team · Suggest a correction

how to submit A2P 10DLC TwilioTwilio A2P 10DLC registrationTwilio Trust HubTwilio brand registrationTwilio campaign registration stepsTwilio A2P 10DLC step by stepTwilio Messaging Service A2P campaignhow long does Twilio A2P campaign approval takehow much does Twilio A2P 10DLC registration costwhat does Twilio error 30034 meanshould I register A2P in Twilio or GoHighLevel

Frequently asked questions

Is registering A2P 10DLC directly in Twilio different from doing it through GoHighLevel?

The underlying registration — Brand and Campaign, reviewed by The Campaign Registry — is the same either way, since GoHighLevel's Trust Center runs on Twilio's infrastructure. The difference is the interface: Twilio's own Console exposes more granular controls (Customer Profiles, Messaging Services, multiple campaigns per brand) that most GoHighLevel users never need to touch directly.

Do I need a Twilio Customer Profile before registering a brand?

Yes — Customer Profile is the first required step in the native Twilio flow. It captures your business identity information and has to be submitted and reviewed before Brand registration becomes available.

How long does Twilio's review take at each step?

Customer Profile and Brand registration are often approved within minutes for accurate submissions. Campaign registration, per Twilio's own documentation, typically takes several days, and it's the step where most application failures occur.

What's a Messaging Service, and do I need one?

A Messaging Service is a Twilio container that groups one or more phone numbers under a single sending configuration, including your approved Campaign. You'll either select an existing Messaging Service or create a new one during Campaign registration — it's a required part of the flow, not an optional add-on.

Can I register multiple campaigns under one brand in Twilio?

Yes, if you're on a Standard brand — a single Standard Brand can support multiple Campaigns for different use cases (e.g., separate campaigns for customer care and marketing). Sole Proprietor and Low-Volume Standard brands are limited to one campaign each.

How much does A2P 10DLC registration cost in Twilio?

Twilio A2P 10DLC brand registration costs about $4.50 one-time for Sole Proprietor or Low-Volume Standard brands and about $46 one-time for a Standard brand, including secondary vetting. Campaign use-case registration adds a $15 one-time vetting fee plus a small recurring monthly fee, and carrier surcharges of roughly $0.003–$0.005 apply per message. Fees are identical whether you register in Twilio or GoHighLevel.

What does Twilio error 30034 mean?

Twilio error 30034 means the sending number isn't associated with an approved A2P 10DLC campaign, which is a registration or linking problem rather than a content problem. Check that the Campaign is approved and that the number is added to the Messaging Service the Campaign is attached to. By contrast, error 30007 indicates carrier filtering, and 30003 means the destination handset is unreachable.

Let's build

Want us to handle your A2P registration and SMS setup?

We prepare brand and campaign registration correctly, fix what's blocking delivery, and build compliant texting workflows so your messages reach customers.