GoHighLevel 13 Min Read

GoHighLevel Setup: The Checklist Every Agency Should Follow

By Durvesh Naik · Updated July 2026
GoHighLevel setup for client management showing one agency hub running many sub-accounts

Most agencies do not struggle with GoHighLevel because the platform is hard. They struggle because every client account was set up a little differently, so nothing is repeatable and nobody can move between accounts without relearning them. A clean GoHighLevel setup for client management fixes that. It gives every client the same proven structure, cloned in minutes, so one team can run ten or a hundred accounts from a single dashboard without the chaos.

This guide is about the operational side of GoHighLevel: how to structure sub-accounts, snapshots, pipelines, and conventions so managing many clients stays sane as you grow. If you are brand new to the platform and still learning the interface, start with our GoHighLevel tutorial for beginners first, then come back here to set your agency up to scale. If you would rather have the setup done by GoHighLevel experts who specialize in agency fulfillment, that is a separate path worth exploring.

The short version: standardize everything. One master snapshot, the same pipeline stages, the same tags, and a clear naming system across every client. Standard structure is what turns client management from a daily headache into a repeatable, delegatable process.

Key takeaways

Why a messy setup quietly costs agencies

When each client account grows organically, you end up with a different pipeline in every one, tags that mean different things, workflows nobody remembers building, and calendars set up five different ways. It works, barely, until you try to scale or delegate. Then the cracks show.

The cost is not dramatic, which is exactly why it goes unnoticed. It is a slow tax on every hour your team spends, and it caps how many clients you can hold before the whole thing feels like it is held together with tape. A deliberate setup removes that tax.

A GoHighLevel snapshot cloning a proven client setup into a new sub-account
A snapshot clones a proven setup into every new client in minutes. Placeholder, art via TopView.

The building blocks of a GoHighLevel setup for client management

Before we get to the step by step, it helps to know the four pieces that do the heavy lifting. Get these right and the rest follows.

Agency account
Your top-level view that manages every client.
→
Sub-accounts
One isolated workspace per client.
→
Snapshot
Your proven setup, cloned into each sub-account.
→
Conventions
Shared stages, tags, and names across all clients.

Sub-accounts keep clients clean and separate

A sub-account is a walled-off workspace for a single client: their contacts, pipelines, calendars, and automations, isolated from every other client. You manage all of them from the agency level. This separation is non-negotiable for client work, because it keeps one client's data, messaging, and branding from ever bleeding into another's.

Snapshots make your setup repeatable

A snapshot is the single most important concept for managing clients at scale. It is a saved template of an entire account, pipelines, workflows, calendars, funnels, and message templates, that you load into a new sub-account in minutes. Build your best setup once, save it as a snapshot, and every future client starts on that proven foundation instead of a blank account. This is the same principle that lets our GoHighLevel automation work carry from one client to the next without rebuilding.

Conventions keep the whole thing sane

Conventions are the boring part that saves you the most. If every client uses the same pipeline stage names, the same tag structure, and the same sub-account naming pattern, then any team member can open any account and know exactly where they are. Without conventions, scale turns into chaos no matter how good your snapshot is.

Setting it up, step by step

Here is the order we follow when structuring an agency to manage clients cleanly. Do it once, properly, and every client after benefits.

1. Design your master pipeline

Decide on one standard pipeline that fits most of your clients: New Lead, Contacted, Appointment Set, Proposal Sent, Won, Lost, or whatever matches the work you do. Name the stages clearly and use them everywhere. A shared pipeline is what makes cross-client reporting possible and lets anyone read a board at a glance.

2. Build your tagging and naming conventions

Write down a simple, consistent tag structure: lead source, status, campaign, and client type. Decide how sub-accounts are named so they sort and search predictably. This document becomes the rulebook every new account follows, and it is worth the hour it takes to write.

3. Set up calendars and booking

Configure your calendars, buffers, availability, round-robin routing for teams, and reminder cadences inside the master setup. When this lives in the snapshot, every client inherits a booking system that already reduces no-shows instead of one you rebuild each time.

4. Build your core automations

Add the workflows every client needs: speed to lead, missed call text back, appointment reminders, review requests, and reactivation. Keep them clean and well named. These are the automations that carry across clients, and our guide on GoHighLevel automation covers how to build each one properly.

5. Save it all as a master snapshot

Once your pipeline, conventions, calendars, and automations are working in a test account, save the whole thing as a snapshot. This is your product now. Every new client is a clone of this, so the quality of this one setup determines the quality of every account you ever run.

6. Set permissions and prepare handoff

Decide what each client can see and do in their own sub-account, and what stays at the agency level. A clean permission structure means you can give clients access without them breaking the setup, and it makes handing an account to a teammate a five-minute job instead of a training session.

Connecting the tools clients already use

Client management gets harder when a client insists on keeping a tool they already rely on. The answer is not to force them off it, it is to sync it cleanly into GoHighLevel so your team still works from one system. We do this constantly. In one project we built a two-way sync between GoHighLevel and Housecall Pro so a service business kept its field software while every lead and job still flowed through the CRM. You can read the GoHighLevel and Housecall Pro sync case study for how that worked.

The same idea applies to any tool a client cannot give up: a real estate CRM, an EMR, a booking platform. A clean integration keeps your setup standard while respecting what the client already runs.

What good looks like: real client management results

A deliberate setup is not just tidier, it produces better outcomes. Here are real projects from our case study library.

+9
Additional deals closed for a real estate company once its CRM and Follow-Up Boss ran as one connected system instead of separate tools.
33%
Quarter-over-quarter sales increase after a reactivation setup turned a client's database into a reusable, automated asset.
One system
A service business kept Housecall Pro while every lead synced into GoHighLevel, so the team worked from one clean source of truth.

Read the real estate lead nurturing case study, the database reactivation case study, and browse the rest on our case studies page.

Common setup mistakes that make client management harder

Building each client from scratch

If you are not cloning from a snapshot, you are paying the setup cost again for every client, and quality drifts. Build the master once and clone it.

Skipping conventions

A great snapshot with no naming or tagging rules still turns into chaos as clients pile up. Conventions are what keep a growing account list navigable.

Over-customizing per client

Some customization is fine, but if every account drifts far from the standard, you lose everything that made the standard useful. Keep clients as close to the master as their needs allow.

Ignoring permissions until something breaks

Deciding client access after you have already handed over logins is how setups get broken. Structure permissions in the snapshot so every client inherits the right access from day one.

Do it yourself or bring in a specialist

The setup is configuration, not code, so a hands-on agency owner can absolutely build a solid master snapshot. Where a specialist earns their keep is engineering that snapshot to scale cleanly across many clients, wiring custom integrations, and avoiding the rework that comes from a structure that seemed fine at five clients and falls apart at fifty. If you want to understand that role, our explainer on what a GHL expert is breaks it down, and our white-label fulfillment team builds these setups under your brand.

You can also see the range of builds we handle on our capabilities page. However you get there, the goal is the same: one clean structure that every client inherits, so managing them stays simple as you grow.

A2P 10DLC registration: the SMS step that breaks every launch

SMS is where more GoHighLevel launches quietly fall over than anywhere else. US carriers require A2P 10DLC (Application-to-Person, 10-digit long code) registration before business text messages route reliably. Skip it and the client's texts land in spam or never arrive at all, usually discovered the week after launch when a campaign goes silent.

Here is the registration process in the order that avoids the most common rejections.

  1. Gather the business information before you start. You need the client's EIN (Employer Identification Number), legal business name, website URL, and a physical address. Sole proprietors without an EIN need their SSN instead. Carriers reject applications with mismatched names, so the information must match exactly what is on the IRS filing.
  2. Create the Brand in GoHighLevel. Inside the sub-account, go to Settings then Phone Numbers then A2P Registration. Fill in the business name, address, EIN, and business type. This registers the business as the entity behind the texts, not you as the agency.
  3. Create the Campaign. A Campaign tells carriers what kinds of messages the business will send: appointment reminders, customer care, marketing, or two-factor auth. Choose the correct use case. A marketing campaign that tries to pass as customer service gets flagged fast.
  4. Add sample messages. Carriers require two or three real sample messages showing the actual content the campaign will send. Write these in the client's voice and include opt-out language ("Reply STOP to unsubscribe") in at least one sample. Generic or vague samples are a common rejection point.
  5. Attach the opt-in method. You need to document where contacts give consent: a form on the website, a checkout confirmation, a physical sign-up sheet. If the client collects leads through a GHL funnel, include a screenshot of the form with the consent language visible.
  6. Submit and wait for carrier approval. Approval typically takes one to three business days, but some campaigns take longer depending on the use case. High-risk categories like loans, gambling, and cannabis face stricter review. Do not launch any SMS automation until the campaign status shows Approved.
  7. Test with a real number before going live. Once approved, send a test message from the sub-account to your own phone. Confirm it arrives, check that the opt-out footer is present, and make sure the from-name reads correctly before any contact on the list receives it.

Doing this registration before any automations go live means the client's first real message actually reaches a phone. Trying to do it retroactively, after a campaign has already fired to unregistered numbers, creates deliverability history that takes weeks to recover.

Custom domain setup and CNAME configuration

A white-labeled GoHighLevel sub-account needs its own sending domain and, if the client has funnels or a hosted website inside GHL, a custom domain pointing to those pages. Getting this wrong means outgoing emails land in spam and funnel links show GoHighLevel's domain instead of the client's brand.

Email sending domain

  1. Choose the sending domain. Use a subdomain of the client's main domain for email sending, for example em.clientdomain.com or mail.clientdomain.com. Never use the root domain (clientdomain.com) for sending, because a deliverability problem on the sending domain would also affect the client's main website and inbox.
  2. Add the CNAME records. GoHighLevel gives you two CNAME records to add to the client's DNS: one for email authentication and one for tracking. Log in to the client's DNS provider (Cloudflare, GoDaddy, Namecheap, or wherever their domain is managed), add both records, and wait for propagation, which typically takes a few minutes to an hour on Cloudflare and up to 48 hours on slower providers.
  3. Add the DKIM and SPF records. DKIM (DomainKeys Identified Mail) and SPF (Sender Policy Framework) are TXT records that tell receiving servers the email is legitimate. GoHighLevel provides the exact record values in the Sending Domains settings panel. Copy them exactly. A typo in a DKIM key causes silent failures.
  4. Verify in GoHighLevel. Back in the sub-account, go to Settings then Domains, and click Verify. A green checkmark on all records means the domain is authenticated. A red warning means one record did not propagate or was entered incorrectly. Fix it at the DNS provider and re-verify.

Custom domain for funnels and hosted pages

  1. Create a CNAME pointing to GoHighLevel's hosting. In the client's DNS, add a CNAME record with the subdomain you want (for example, go.clientdomain.com) pointing to cname.gohighlevel.com. This tells the DNS to serve GHL's hosting when someone visits that subdomain.
  2. Add the domain inside GHL. In the sub-account, go to Sites then Funnels, open any funnel, and go to the Settings tab. Enter the custom domain and click Save. GHL automatically provisions the SSL certificate via Let's Encrypt once the CNAME resolves.
  3. Wait for SSL provisioning. SSL can take up to 10 minutes after the CNAME propagates. If the domain shows "SSL pending" after 30 minutes, the CNAME has not fully resolved yet. Check propagation at a tool like whatsmydns.net before assuming a GHL issue.
  4. Test every funnel page. Load the custom domain in an incognito window and confirm the page loads over HTTPS, the URL shows the client's domain, and any form submissions route correctly to the CRM.

Sub-account onboarding SOP

Once your master snapshot exists, onboarding a new client should be a checklist, not a project. The steps below are the full sequence we run so nothing gets missed and a new client is live the same day.

  1. Create the sub-account. In your agency view, click Add Sub-Account. Use your naming convention (for example: ClientName_Niche_City) so it sorts and searches predictably across your account list. Set the timezone and currency to match the client before saving.
  2. Load the master snapshot. Go to the new sub-account's Settings and apply your agency snapshot. This brings in pipelines, workflows, calendars, templates, and tags in one step. Verify the snapshot loaded completely by checking the Pipelines and Automation tabs before touching anything else.
  3. Swap in client branding. Update the account name, logo, brand colors, and the business address in Settings. This ensures any client-facing page or document that pulls from account settings shows the correct brand, not placeholder text from the snapshot.
  4. Configure the sending domain. Add and verify the client's DKIM, SPF, and CNAME records as described above. Do not skip this step and plan to "do it later." Every email the automation sends before the domain is verified has a higher chance of landing in spam.
  5. Purchase and configure the phone number. In Settings then Phone Numbers, buy a local number in the client's area code. Set the forwarding to the client's real number so missed calls route correctly. Enable missed call text back at this step.
  6. Start the A2P 10DLC registration. File the Brand and Campaign registration immediately. The review period runs in parallel with the rest of setup, so starting it on day one means it is usually approved by the time the account is ready to go live.
  7. Import and map contacts. Import the client's existing contact list as a CSV. Map the columns to GHL fields and apply the correct source tag during import. Running a de-duplicate step before import saves cleanup work later.
  8. Connect third-party tools. Set up any integrations the client needs: Google Business Profile for review requests, a scheduling tool if they are not using GHL calendars natively, or a webhook to a field service app. Test each connection with a real data event before the account goes live.
  9. Set sub-account permissions. Decide which features the client can see and edit in their own login. Lock down anything that could break the automation: workflow editors, phone number settings, and A2P registration status should stay at the agency level unless the client specifically needs access.
  10. Run a full test before launch. Submit a real test lead, confirm the first text and email fire correctly, book a test appointment and verify the reminder sequence triggers, and check that the lead moves through the pipeline stages as expected. Fix every broken step before the client knows the account exists.

Written down like this, onboarding becomes something you can delegate to a team member with confidence, because the steps never change from client to client. That is the whole point of a standard setup: it makes the work repeatable and handoff-ready.

Reporting across every client from one place

The payoff of shared conventions shows up loudest in reporting. When every client uses the same pipeline stages and the same tags, you can compare accounts, spot which clients need attention, and prove results without wrestling with mismatched data. A client whose leads are piling up in Contacted with nothing moving to Appointment Set is easy to spot when the stages mean the same thing everywhere.

This is also where custom dashboards earn their place. We have built reporting layers that pull the numbers that matter into one view, so an agency owner can scan the health of every client account in a minute rather than opening each one. Consistent structure underneath is what makes that kind of at-a-glance reporting possible in the first place.

Structuring for different kinds of clients

Not every client fits one mold, so it helps to plan a small number of variations on your master snapshot rather than one rigid template or a free-for-all.

Service and local businesses

These need speed to lead, missed call text back, reminders, and reviews front and center. Your master snapshot probably already fits them closely, with only messaging and branding to swap.

High-ticket and appointment-led clients

Here the pipeline is longer and the nurture matters more. A variant snapshot with extra stages, longer follow-up sequences, and tighter booking rules keeps these accounts consistent without bending the standard out of shape.

Clients with their own stack

Some clients arrive married to a CRM, an EMR, or field software. For these you keep your standard sub-account structure and add a clean integration layer, so your team still works one way even though the client keeps their tool. That is exactly the pattern behind our integration case studies.

Scaling from five clients to fifty

The difference between an agency that stalls at a handful of clients and one that scales cleanly is almost always the setup. At five clients you can hold every account in your head. At fifty you cannot, and any structure that relied on memory falls apart. The agencies that scale decided early to standardize, so growth just meant cloning the same proven setup again.

Three habits make that possible. First, treat your master snapshot as a living product and improve it over time, rolling useful changes into new clients. Second, keep client-level customization to a minimum so accounts stay close to the standard. Third, document your conventions so onboarding and handoff never depend on one person. Do those three things and adding your fiftieth client feels the same as adding your fifth.

Keeping client data clean and access under control

As your client list grows, so does your responsibility for their data. The good news is that a standard setup makes this easier, not harder. Because every client sits in an isolated sub-account, there is no risk of one client seeing another's contacts or messages. Because permissions live in your snapshot, every new account inherits sensible access rules from the start rather than being locked down after the fact.

A few habits keep this tidy over time. Give team members only the access they need, review who can see what when someone joins or leaves, and keep a clear record of which sending domains and phone numbers belong to which client so deliverability never gets tangled. None of this is complicated, but it is the kind of thing that gets messy fast without a standard, and clean by default with one. A client who trusts that their data is handled properly is a client who stays, and in agency work retention is where the real profit lives.

Frequently asked questions

What is the best GoHighLevel setup for client management?

The best setup gives every client their own sub-account cloned from a proven snapshot, with consistent pipeline stages, tags, calendars, and naming conventions across all of them. That way one team can run many clients from a single agency dashboard without relearning each account.

What is a GoHighLevel sub-account?

A sub-account is a separate, isolated workspace for one client inside your agency account. Each client gets their own contacts, pipelines, calendars, and automations, while you manage all of them from one agency-level view. Sub-accounts are how agencies keep client data clean and separate.

What is a GoHighLevel snapshot?

A snapshot is a saved template of a whole account setup: pipelines, workflows, calendars, funnels, and templates. You build it once, then load it into every new client sub-account in minutes, so each client starts on a proven configuration instead of a blank slate.

How should an agency structure GoHighLevel for multiple clients?

Standardize first. Use one master snapshot, identical pipeline stage names, a shared tagging convention, and a clear sub-account naming pattern. Standard structure across clients is what lets a team switch between accounts without confusion and makes reporting consistent.

Do I need a developer to set up GoHighLevel for client management?

Not for the basics. The setup is configuration, not code. A developer or specialist helps most when you need custom integrations, complex automations, or a snapshot engineered to scale across many clients cleanly, which saves rework later.

How long does a GoHighLevel client management setup take?

A single client sub-account cloned from an existing snapshot can be ready in an hour. Building the master snapshot itself, the one every client is cloned from, is the real work and usually takes a few weeks to get right, but you only do it once.

Can I move existing clients into a new GoHighLevel setup?

Yes. Contacts, pipelines, and calendars can be migrated into a clean sub-account structure. Automations are usually rebuilt to match your new standard rather than copied one for one, which is a good chance to fix anything messy from the old setup.

Should beginners follow this GoHighLevel setup guide?

This guide focuses on setting up GoHighLevel to manage clients and sub-accounts. If you are brand new to the platform and just learning the interface, start with our GoHighLevel tutorial for beginners first, then use this to structure your agency.

The mindset shift that makes it click

If there is one idea to take from this, it is to stop thinking of each client as a separate build and start thinking of your agency as running one product across many accounts. The snapshot is the product. Every client is an install of it. Your job is to keep improving that one product and to deploy it cleanly, not to reinvent the setup every time someone signs. That single shift is what turns GoHighLevel from a tool you operate by hand into a system that scales with you.

Build one clean setup, run every client from it

Managing clients in GoHighLevel stops being stressful the moment your accounts stop being snowflakes. One master snapshot, shared conventions, clean sub-accounts, and a clear handoff, and suddenly a new client is an hour of work instead of a week, and any teammate can run any account.

If you want that master setup built right the first time, our team at Authority Entrepreneurs has structured GoHighLevel for agencies since 2018. Book a call and we will map the snapshot and conventions that fit how your agency actually works.

Durvesh Naik

Founder & CEO, Authority Entrepreneurs. HighLevel Certified Admin. His team of 57 in-house specialists has built and run GoHighLevel, automation, and AI systems for 800+ agencies and businesses since 2018. linkedin.com/in/durveshnaik/