GHL Implementation Horse Business Marketing Case Studies Blog Contact Work With Me
← Back to Blog GoHighLevel
April 2026  ·  6 min read

How to Structure GHL Sub-Accounts for Agency Clients (The Right Way)


Most agencies set up GHL sub-accounts the same way: a new client comes in, someone clicks "Create Sub-Account," fills in the business name, and starts building. No naming convention. No folder structure. No template discipline. Six months in, you've got 40 sub-accounts that all look slightly different, nobody on your team can find anything, and onboarding a new client takes twice as long as it should because you're reinventing the wheel every time.

I've audited a lot of GHL agency accounts. The ones that run smoothly look very different from the ones that don't — and the difference almost always starts at the sub-account level.

The Problem With "Just Wing It"

When sub-accounts are created ad hoc, you end up with a few consistent problems.

First, no one can tell at a glance what's in an account. Is this the live account or the staging copy? Is this a client who's active or one who churned six months ago? Is this sub-account for location A or location B for that multi-location client?

Second, your snapshot strategy falls apart. If every account is built differently, you can't cleanly apply a snapshot to a new client without spending time stripping out the stuff that doesn't apply. The value of snapshots depends entirely on having a consistent base to apply them to.

Third, team access becomes a nightmare. When sub-accounts aren't structured with clear conventions, you're constantly managing who has access to what — usually reactively, when someone shouldn't have seen something they saw.

Keep Sub-Account Names Simple — But Add Status When It Matters

For most agencies, keeping sub-account names simple works fine — just the business name. "Morrison Legal." "Clearpath HVAC." "Sunrise Dental." Clean, easy to find, no overthinking it.

Where it breaks down is with inactive clients. When someone churns, their sub-account just sits there with a plain business name that looks exactly like an active client. Six months later, someone on your team logs into it by mistake, makes a change, or wastes 20 minutes trying to figure out why nothing is set up the way they expected.

The fix is simple: when a client goes inactive, rename the account to add the status and year. "Sunrise Dental — Inactive 2024." That's it. One small change that immediately tells everyone on your team what they're looking at without clicking into anything.

Don't delete inactive accounts. You may need them for reference, for offboarding, or if the client comes back. Renamed and left in place is the right call.

If you're managing a large number of accounts and want more visibility at a glance, some agencies also create a staging sub-account alongside each live account — named "Business Name — Staging" — so testing and building always happens separately from the live environment. More on that in the next section.

Staging Accounts Are Non-Negotiable

Every active client should have two sub-accounts: one live, one staging. Full stop.

I know that sounds like overhead. It isn't. The alternative is building directly in a live account — and eventually you will break something while a client is actively using it. That's not a matter of if. I've seen agencies get that 9pm call from a client whose lead follow-up sequence stopped firing because someone was "just making a quick change" in production. After you've made that mistake once, you build staging accounts for everyone.

The staging account is your sandbox. New automations get built there. Snapshots get tested there. Changes to live workflows get prototyped there. When it's working correctly in staging, you migrate it to live. This process adds maybe 20 minutes to most updates — and it eliminates the class of problems that come from breaking things in front of actual leads.

The naming convention I use keeps staging accounts clearly labeled, so they never get confused with the live account even in a long list.

Snapshot Strategy Tied to Sub-Account Structure

Snapshots are one of GHL's most powerful features for agencies. They let you replicate a working setup — workflows, pipelines, custom fields, calendars, funnels, the whole thing — into a new sub-account in minutes. But most agencies underuse them because their sub-account structure isn't consistent enough to support a clean snapshot strategy.

Here's how I think about it: snapshots work best when there's a baseline structure that every account shares, and industry-specific or service-specific layers that get added on top.

My standard setup is three snapshot types:

Base snapshot: Applied to every new sub-account regardless of client type. Contains the universal things — my standard custom fields, the baseline pipeline stages, core notification workflows, calendar default settings, the intake form template. This is the stuff that every client needs and that would take 2 hours to set up manually each time.

Vertical snapshots: One per industry category I work in — healthcare, legal, home services, coaching, whatever makes sense for your book of business. Each vertical snapshot layers on top of the base and adds the industry-specific stuff: the pipeline stages that match that industry's sales process, the FAQs for Conversation AI training, the common workflow triggers specific to that type of business.

Service-tier snapshots: If you offer different service packages, this layer covers what's included in each tier. A client on a full implementation package gets different automations than a client on a maintenance retainer.

When a new client comes in, I apply base → vertical → service tier in that order. The account is 70–80% built before I've done any custom work. The remaining 20% is where the client's specific voice, offers, and process details get added.

For this system to work, every sub-account has to start from the same baseline. That's why the naming convention and staging account structure matter — they're not bureaucracy for its own sake. They're what makes the snapshot strategy reliable.

Team Permissions and User Roles

GHL's user role system has more nuance than most agencies use. At the sub-account level, you can control what team members can see and do with a fair amount of precision — but it requires thinking about it upfront rather than leaving everyone as an Admin because it's easier.

Here's how I typically structure roles within a sub-account:

Agency Admin (your team): Full access. Used only by the implementation team. Client-facing team members do not get this role.

Account Admin (client's operations lead or business owner): Access to everything except agency-level billing settings and sub-account creation. This person should be able to see all contacts, all workflows, all reports, and make changes if they need to — but they shouldn't be able to mess with the agency structure.

Standard User (client's sales reps or front-line staff): Access to Conversations, Contacts, and Calendar. They can work leads, manage their own calendar, and respond to messages. They cannot see or touch workflows, funnels, or settings. This is the role that gets assigned to most of the client's team.

Reporting-Only (client stakeholder who wants visibility but doesn't operate the system): Some clients have a partner or executive who wants to see dashboard data without being in the system. GHL doesn't have a true read-only role, so I typically create a Standard User account with explicit instructions about what they have access to and assign them only to the dashboard views they need.

The mistake I see most often: giving every client contact Admin access because it's the path of least resistance, and then later having to untangle a mess because someone on the client's team deleted a workflow or changed a pipeline stage without understanding what they were doing. Define the roles during onboarding. Brief the client on why you set it up that way. It takes 10 minutes and it prevents a whole category of support tickets.

Inheriting a Messy GHL Account From Another Agency

This one deserves its own section because it's a situation more agencies are landing in as the platform matures. A client comes to you after a bad experience with a previous agency. Their GHL account exists. It's a disaster. Your job is to clean it up and take it over — without blowing up the parts that are actually working.

Here's the order of operations I follow:

1. Audit before you touch anything. Before changing a single thing, do a full audit. Document every workflow (active and inactive), every pipeline and its stages, every funnel and form, every custom field, every integration, every user and their role. Screenshot or export what you can. You need a map of the existing territory before you start clearing brush, because some things that look unused are actually doing something important.

2. Identify what's live and working. Not everything in a messy account is broken. Some things are running fine and have active leads or customers attached to them. Tag these clearly. These are the things you touch last, and only after you've built replacements.

3. Deactivate, don't delete. When you find broken or redundant workflows, deactivate them first. Leave them sitting there in inactive status for at least 30 days before deleting. This gives you a buffer to discover that something you thought was abandoned was actually connected to something else.

4. Implement your naming convention going forward. You can't retroactively rename everything on day one without creating confusion. Instead, apply your naming convention to everything new you create, and rename existing items as you audit and touch them. Over time, the account starts to look like yours.

5. Create a staging account and make it your workspace. Even if the client's live account is the mess you're cleaning up, create a staging counterpart and do all your new builds there. This limits your blast radius while you're working in an environment you don't fully understand yet.

Inheriting a messy account is genuinely hard work. It's also a legitimate service offering — clients who've had bad GHL experiences are often willing to pay specifically for cleanup and restructuring. If you do this work well, you also earn significant trust, because you came in after someone else failed and you made it right.

The Payoff

When your sub-account structure is clean, everything downstream gets easier. Onboarding is faster. Your team spends less time orienting themselves. Snapshots apply cleanly. Access management is simple. And when something breaks — and something always eventually breaks — you know exactly where to look.

Structure is not glamorous. But in GHL, it's the difference between an agency that scales and one that drowns in its own client accounts.

Ready to get your GHL account structured properly?

I work with agencies to clean up existing GHL setups and build systems that hold up as you grow.

Tell Me About Your Project →