Agency Ops6 min read

GoHighLevel Sub-Account Structure: Getting It Right Before Client Ten

Farhad Hossain, founder of GHL Spark
Farhad Hossain · Founder & Certified GoHighLevel Expert

In short

One sub-account per client is the right answer, and it's the easy part. The costly decisions sit underneath: how you name things, your custom-value conventions, what lives at agency level, and how you handle a client with three locations. Here's what to settle before client ten locks you in.

An agency owner called me in a quiet panic at client twenty-five. Nothing was broken, exactly. But every account was named differently, the field names clashed from one build to the next, and he could no longer find a single thing without hunting through a list of near-identical names he'd invented one tired afternoon at a time. He'd made a hundred small setup calls on the fly, each fine on its own, that together grew into a mess no single fix could undo. The work was good. The scaffolding under it was chaos. And unpicking it, live, across twenty-five paying clients, was a job he'd have given anything to avoid. That's the trap this article is here to keep you out of. The fix for a mess that size is never a quick toggle. It's a long, nervous week of work, done live on accounts that paying clients need running well right now.

So let me lay out the decisions you want settled early, before client ten quietly locks them in: the naming, the custom values, what lives where, and the multi-site client that breaks a lazy setup. One account per client? Easy. These are the parts that actually bite you later.

One sub-account per client, and why that's the easy bit

Start with the obvious answer, because it's right. One client gets one account. It keeps their data separate, their billing clean, their branding their own. It's the standard every serious firm follows.

So that first call takes ten seconds. Good. But it's the only easy part, and plenty of firms hit a wall at client twenty because they stopped thinking the second they made it. This piece is about everything underneath that call. You make those choices once, without noticing, then repeat them thirty times, and only later find you've set a rule you can't easily change. The account split is the part you see. The naming, the values and the asset lines, the stuff that actually bites, is the part you don't.

How should you name everything?

One naming rule, chosen once, used everywhere. It sounds trivial. Yet it's the one thing owners most wish they'd nailed down on day one, before the mess had a chance to start.

Pick a format and commit to it. Client name plus town, say. Whatever suits you. Then use it for every account, every pipeline, every calendar. At three clients it feels like fuss. At thirty it's the whole gap between finding the account you want in two seconds flat and scrolling up and down a long wall of half-remembered names like "Dave's thing," "ABC final," and "Smith (new)" while a client waits on the phone. The format barely matters. The sameness is everything. Decide it now, write it down, and never break it, because the first messy name is the crack the whole mess grows from.

What are custom values, and why plan them now?

Custom values are the reused fields a snapshot drops into every template: the business name, the booking link, the address, the phone. Get them right and a snapshot fills a whole account in minutes. Get them messy and you've built a slow problem.

Here's the trap. Each snapshot calls its fields by name. If one says "Business Name," another "company_name," and a third "biz," then every template wants a different field, and nothing drops in cleanly across accounts. So name them once, up front. Make every snapshot use the exact same set. This is dull to plan and brutal to retrofit, because changing one field name across thirty live accounts means touching all thirty. Plan the list before you build your second snapshot, not your twentieth.

What lives at agency level versus sub-account level?

Draw this line clearly. Get it wrong and you either rebuild forever or leak data. The rule itself is simple, though. Write it down once and you never again stop to wonder where a thing belongs, or why the same workflow somehow exists in six places.

Shared assets live at the top level. Your snapshots, your standard workflows, your template library. You build those once and give them to everyone. Client things live in the account: their contacts, their pipeline, their chats, their branding. Build one shared workflow inside a single client's account and you'll rebuild it for the next client, and the next, and the one after that, forever. Pure waste. Put one client's data where another can reach it and you've a privacy problem. The top level is the factory. The account is the finished house. Keep the factory and the houses separate, and both stay clean. The SaaS-mode setup leans heavily on this line being right.

How do you handle a multi-site client?

This is the one that breaks a lazy setup, so decide it before it arrives, not in a panic when it does. A single client with three sites doesn't fit "one account per client" without a choice.

There are two clean answers. One sub-account with location tags, which suits a business with shared branding and one reporting view across all sites. Or one sub-account per location, which suits a true franchise where each site runs on its own with its own numbers. Both work. What fails is deciding it fresh each time a multi-site client signs, because then you end up with one client on tags, another on separate accounts, a third on some muddle of the two, and no clean way to pull a single report across any of them. Do that and you've three rules for one problem, and no way to report across them. Pick your default now, write down when you'd break it, and apply it the same way every time.

Why settle all this before client ten?

Because restructuring later is slow, risky, live-fire work, and it only gets worse with scale. At client ten the mess is annoying. At client thirty it's a project you can't find time for, done between serving the clients the mess is slowing you down for.

Everything above is cheap to decide now and dear to fix later. That's the exact shape of a decision worth making early. Get it wrong and the fix is thirty live accounts and a week of your life, untangled one by one. In GoHighLevel, a clean setup is invisible when it's right and everywhere when it's wrong. Set the naming, the values, the asset lines and the multi-site rule before client ten, and your firm scales without you ever having to stop and untangle it.

The groundwork sits alongside the wider setup for new agencies, and the two are worth reading together.

That structured foundation is what our done-for-you GoHighLevel snapshots are built on, with the conventions already set so your accounts stay tidy from client one.

Who sets it up

GoHighLevel is the platform, and you subscribe to HighLevel directly. GHL Spark isn't HighLevel, and we don't resell the plan. We just build it. The account is yours from day one, and it stays that way.

The build is what we do: the naming convention, the custom-value set, the agency-level asset library and the multi-location rule, all decided and documented before you scale. We set the scaffolding so your tenth client, and your thirtieth, slot in clean instead of adding to a mess.

Where to go next

Book a free consultation. Tell us how many clients you run and how you name things now, and we'll show you what to fix before it becomes a restructuring project.

Frequently asked questions

Should each GoHighLevel client get its own sub-account?
Yes, almost always. One client, one account keeps data, billing and branding clean, and it's the standard for a reason. The one exception is a client with several sites, which needs a real choice. But as a default, one account per client is right and rarely regretted.
How should you name GoHighLevel sub-accounts?
With one rule, set once and never broken. Pick a format, like client name plus town, and use it everywhere: every account, every pipeline, every calendar. It feels fussy at three clients. It saves you at thirty, when you're hunting for one account in a wall of messy names.
What are custom values and why plan them early?
They're the reused fields, like business name, booking link or address, that a snapshot drops into every template. Name them once, up front. Every snapshot then uses the same set. Change them later across thirty accounts and you'll wish you'd planned it.
What should live at agency level versus sub-account level?
Shared assets, your snapshots, templates and standard workflows, live at agency level, so you build once and deploy everywhere. Client data, their contacts, their pipeline, their branding, lives in the account. Blur that line and you either rebuild forever or leak one client's data into another's.
How do you handle a client with multiple locations?
Decide early: one account with location tags, or one per site. Tags suit a business with shared branding and one set of numbers. Separate accounts suit true franchises that run on their own. There's no single right answer. There is a wrong one, though: deciding it fresh each time.
Can you restructure GoHighLevel sub-accounts later?
You can, but it hurts. Renaming, moving assets and re-tagging data across a pile of live accounts is slow, risky work you squeeze in between serving clients. Far cheaper to set the structure before client ten than to untangle it at client thirty.

About the author

Farhad Hossain, founder of GHL Spark

Farhad Hossain

Founder & Certified GoHighLevel Expert

Farhad is the founder of GHL Spark, where he builds and white-labels GoHighLevel SaaS platforms for agencies and SaaS operators. He writes about the parts of GoHighLevel that actually break in production — A2P registration, onboarding, support load and automation.

More from Farhad Hossain

Want this handled for you?

We set up, configure and white-label your GoHighLevel SaaS — so you can sell it instead of building it.

Fixed quote · No lock-in · Launch-ready in ~7 days