Running GoHighLevel in SaaS mode means every new client gets a working account automatically, so your workflows, tracking and reporting have to be right before anyone signs up. This guide covers how to set up workflows for SaaS accounts, how to track UTM parameters so you know which campaigns bring paying clients, and how to build a GoHighLevel dashboard that shows what matters.
1. How workflows work in SaaS mode
In SaaS mode, the SaaS Configurator connects each pricing plan to a snapshot. When someone signs up and pays for a plan, GoHighLevel automatically:
- creates a new sub-account under your agency,
- loads that plan's snapshot (workflows, pipelines, calendars, forms, funnels, templates, custom fields and values),
- applies the plan's feature permissions,
- creates the client's user and sends their login details.
So the workflows your SaaS clients get are whatever is in the plan's snapshot. That snapshot is your product; treat it like software. The basics of building one are in the GoHighLevel snapshots guide.
2. How to set up workflows in GoHighLevel for SaaS accounts
- Build in a master sub-account, never in a live client account. This is the account you snapshot.
- Use custom values for anything client-specific: business name, phone, booking link, review link, address. Workflows and templates then work for every client as soon as they fill in their custom values.
- Make triggers safe on day one. A new account has no real contacts yet, but a workflow triggered by "contact created" or a broad tag will fire the moment the client imports a list. Leave risky workflows in draft or behind a setup-complete tag, and turn them on during onboarding.
- Name everything clearly, with a prefix by purpose (for example "01 Lead | Speed to lead", "02 Appt | Reminders"), so clients and your support team can find things.
- Keep plans different on purpose: a starter snapshot with core automations, and higher plans adding AI, reviews or advanced reporting. Match each plan's permissions to what its snapshot includes.
- Test like a new customer: sign up with a test card, check the sub-account is created, the snapshot loads and nothing fires unexpectedly.
- Plan for updates. Changes to the master account don't reach existing clients automatically. Push snapshot updates deliberately, after testing, and tell clients what changed.
Your own onboarding workflows
Separate from the client's snapshot, run onboarding in your agency's own sub-account: when a new SaaS customer signs up, send a welcome sequence, a link to book an onboarding call, setup reminders until key steps are done (A2P registration, domain connected, phone number), and check-ins in the first 30 days. Most SaaS churn happens when clients never finish setup.
Don't forget messaging costs. If you rebill SMS, email or AI usage, set limits and alerts so one client's campaign doesn't surprise you with a bill, and make sure each client completes A2P 10DLC registration before texting.
3. How to track UTM parameters in GoHighLevel
UTM parameters (utm_source, utm_medium, utm_campaign, utm_content, utm_term) are tags on your ad and email links that say where a visitor came from. GoHighLevel uses them in two ways.
Built-in attribution
When someone lands on a GoHighLevel funnel, website or form and converts, GoHighLevel records the session details on the contact as their attribution source: the landing URL, the UTM parameters, the referrer and the time. It keeps a first attribution (how they first found you) and a latest one (what brought them back), which you can see on the contact and in attribution reports.
Make UTMs permanent with custom fields
Built-in attribution is useful, but to filter, segment and route by source, store UTMs in your own fields:
- Create custom fields such as
first_utm_source,first_utm_campaign,latest_utm_sourceandlatest_utm_campaign. - Add hidden fields to your forms and surveys that capture the UTM values from the page URL.
- Protect first-touch: only write the "first" fields when they're empty, and always update the "latest" fields. A small workflow with an if/else step does this.
- Also capture click IDs if you run ads (
gclidfor Google,fbclidfor Meta) for offline conversion reporting.
Forms embedded on other websites
If your form is embedded on a WordPress or custom site, the UTMs are on the parent page, not the form. Use a small script that passes the page's query string into the form's embed URL, or capture UTMs on the site and send them with the submission. Test by visiting with a dummy UTM link and checking the contact record.
Use the data
- Route leads differently by source (a Google search lead is usually more urgent than a newsletter click).
- Add the source to opportunity names or notes so sales calls start informed.
- Report won revenue by campaign, not just leads by campaign.
4. Building a useful GoHighLevel dashboard
GoHighLevel dashboards are built from widgets (opportunities, appointments, conversions, attribution and more). Instead of one dashboard with everything, build one per audience:
| Dashboard | Show |
|---|---|
| Owner | New leads, booked appointments, show rate, won revenue, revenue by source |
| Sales team | Open opportunities by stage, tasks due, leads not contacted in 24 hours |
| Marketing | Leads and cost by campaign, conversion rate by landing page, first vs latest source |
| Agency (SaaS) | Per-client activity, setup completion, message usage |
The numbers are only as good as the pipeline: if stages aren't updated and won values aren't filled in, the dashboard will mislead you. Automate stage changes from bookings, payments and replies wherever you can. For the benchmarks worth aiming at, see GoHighLevel automation results from 13 builds.
5. Common mistakes
- Building SaaS snapshots in a client account full of real data.
- Hard-coding a business name or phone number into templates instead of custom values.
- Workflows that fire the moment a new client imports contacts.
- Overwriting first-touch UTMs every time a contact fills in another form.
- Losing UTMs on embedded forms because they're on the parent page.
- Dashboards built on pipelines nobody keeps up to date.
Need your SaaS snapshots or tracking built?
I'm Arslan Mumtaz, a software engineer who builds GoHighLevel snapshots, SaaS onboarding, attribution tracking and dashboards as a white-label developer for agencies. See pricing, or start with a $97 audit.