Every GHL agency with more than three clients eventually hits this fork: do you register each client as its own 10DLC brand, or run everyone under one brand you own? The sales pages make it sound like a formatting preference. It isn't. The choice decides who's legally on the hook when a bad list gets texted, and it decides whether your clients' sends share a throughput ceiling or each get their own.
Full disclosure: I work for Ready, and we handle A2P 10DLC registration in-app, so I've watched a lot of agencies pick wrong and then spend a quarter unwinding it. This post is the decision tree I wish they'd had first.
What a "brand" and a "campaign" actually map to
Before the tradeoff makes sense, the terms have to be exact.
A brand in 10DLC is the legal entity behind the messaging, the EIN, the business name, the address. A campaign is a specific use-case registered under that brand: marketing, customer care, appointment reminders, and so on. Carrier filtering happens at the campaign level, but trust, throughput tiers, and vetting attach to the brand.
In a GHL agency, each client is a sub-account. The question is whether each sub-account gets its own brand (the client's EIN) or whether all of them register campaigns under your agency's single brand (your EIN).
Both are allowed. They produce very different outcomes.
Separate brands: liability stays with the client, throughput is isolated
When a client registers under their own EIN, the brand on that campaign is their business. That matters in two places.
Liability attribution. If that client uploads a list they shouldn't have, scraped leads, expired consent, a litigator's number, the registered sender is the client's brand. That doesn't make you immune (if your agency pressed send, you're in the story), but the consent record and the attestation sit under the client's entity. We've written about where the liability line actually falls between agency and client, and separate brands are the cleanest version of that split.
Throughput isolation. Each brand gets its own trust score and its own daily send caps per carrier. A standard (unvetted) brand is capped around 3,000 messages a day to T-Mobile. If Client A blasts their whole list at noon, it burns Client A's cap, not Client B's. Nobody steps on anybody's send.
The cost: more registrations, more EINs to collect, more brand fees. At roughly ~$10/mo per brand plus ~$20/mo per campaign in carrier fees, 20 clients on separate brands is ~$200/mo in brand fees alone before campaigns. And you have to chase 20 clients for 20 EINs.
Shared brand: one registration, one pooled ceiling, and a liability knot
Register everyone under your agency's brand and the math flips.
One brand fee. You pay ~$10/mo once. Campaigns still register per use-case, but you've collapsed 20 brand registrations into one. Onboarding gets dramatically faster because you're not waiting on 20 clients to find their EIN docs.
Pooled throughput, and this is the trap. Every client now shares your brand's daily caps. If your brand is unvetted at ~3,000/day to T-Mobile, that 3,000 is split across all your clients. Two clients running a flash sale on the same afternoon will throttle each other. We've documented how pooled throughput quietly stalls time-sensitive sends, and a shared brand makes that worse, not better, as you add clients.
Liability concentrates on you. Every campaign is registered to your EIN. When any client's list goes bad, the attestation points at your agency. You become the single named sender for everyone. That's a lot of trust to extend to clients whose list hygiene you can't see.
The decision table
| Factor | Separate brand per client | Shared agency brand |
|---|---|---|
| Brand fee | ~$10/mo × each client | ~$10/mo once |
| EIN collection | Required from every client | Only your own |
| Liability attribution | Sits with client entity | Concentrates on agency |
| Throughput | Isolated per client | Pooled across all clients |
| Onboarding speed | Slower (chasing docs) | Faster |
| One client's blast affects others | No | Yes |
| Best for | Clients with real volume, own brands, mixed list quality | Low-volume clients, tight margins, your content control |
When each one is right
Go separate when any client sends real volume. A dentist doing 400 reminder texts a month doesn't need its own brand. A client running 15,000-contact promos does, both for throughput isolation and so their consent record sits under their name. If a client will ever push enough to want brand vetting to lift their daily cap past 200,000, that vetting has to attach to their brand, which means they need to be registered separately in the first place.
Go shared when clients are low-volume, interchangeable, and you control the content. Think a batch of local service businesses all sending appointment reminders you wrote. One brand, a customer-care campaign, done. Just know the ceiling is shared, the moment one of them wants to do a time-sensitive blast, you're rationing throughput.
Mix them. This is what most mature agencies land on. Shared brand for the long tail of small clients; separate brands for the handful who send volume or carry list risk. Nothing forces one policy across the whole book.
The onboarding logistics that actually decide this
Here's the part the brand-vs-consolidate debate usually skips: the cost of separate brands is mostly the onboarding friction, and that friction is reducible.
The old way (registering GHL sub-accounts one at a time, waiting on each approval before starting the next) turns 20 clients into a quarter of work. The fix is batching: register brands first, then campaigns, in an order that lets approvals run in parallel. We walked through the batch registration flow that clears 30 clients in about a week and the brand-then-campaign order that doesn't serialize separately, because the order genuinely matters.
With Ready's native GHL integration, registration happens in-app, mapped per location/sub-account so clients stay isolated in the inbox regardless of which brand model you chose. Approvals typically land in 1 to 3 days, and the self-serve path means you're not waiting weeks on a manual A2P desk. That's what makes separate brands viable at scale, the per-client registration stops being a quarter-long tax and becomes a same-afternoon task.
A quick cost sanity check
Say you have 20 clients. Fifteen are small (a few hundred texts/month), five push real volume.
- All shared: ~$10/mo brand + campaign fees. Cheapest, but your five volume clients are fighting over one throughput ceiling and your EIN is on every send.
- All separate: ~$200/mo in brand fees + 20 campaigns. Clean liability, isolated throughput, but you're paying for 15 brands that barely send.
- Mixed (shared for the 15, separate for the 5): ~$60/mo in brand fees. The 15 small clients share a ceiling they'll never hit; the 5 volume clients each own their throughput and their liability record.
The mixed model is usually the margin-correct answer, and it's only possible because registering a brand in-app is cheap and fast.
The practical takeaway
The brand model isn't a formatting choice, it's a liability-and-throughput decision disguised as paperwork. Separate brands keep attribution with the client and isolate their sends; a shared brand saves fees and onboarding time but pools the ceiling and points every attestation at you. Most agencies should run both: shared for the quiet long tail, separate for anyone sending volume or carrying list risk.
If you're sizing this out, our pricing page shows the per-segment and carrier pass-through math, and the features page covers how the GHL sync maps per sub-account. Decide the model per client, batch the registrations, and you can have the whole book compliant inside a week instead of a quarter.