A client health board for your GoHighLevel sub-accounts
One page ranks every client sub-account by how much it slipped this period, so you know who to call today without logging into each account.
Build me an internal app for my GoHighLevel agency. I run about a dozen client sub-accounts in LeadConnector, and today I have to log into each location separately to find out which ones are slipping. I want one board that answers "who do I call today" the moment it opens. The audience is me and my account managers, never the end client, so keep the tone internal and blunt throughout.
The main view is a portfolio table with one row per sub-account, pulled from Search Locations in LeadConnector. Above the table I pick a date range, defaulting to the last 30 days, and every number is compared against the period immediately before it of the same length. For each location show: new contacts created in the range using Search Contacts (Advanced); open opportunity value and won opportunity value using Search Opportunities, with stage names resolved through Get Pipelines for that location so I know which stages count as won; and appointments booked in the range using List Calendar Events. Show each metric alongside its change versus the prior period as a percentage.
I control a decline threshold, defaulting to 20 percent. Put a red flag on any client whose new contacts or won opportunity value fell by more than that threshold versus the prior period. Sort the board by worst decline first by default, so the accounts in trouble sit at the top. Let me re-sort by any column, and keep the flagged rows visually obvious no matter how the table is sorted.
Important constraint: derive every money figure from the monetary value on won opportunities. Do not use invoices, payments, or billing anywhere in this app, and never label anything as collected revenue. This board measures the results we are producing inside each client's account, not what the client has been billed.
Clicking a client row opens a detail page for that location. Show its pipelines and stages from Get Pipelines, its top open opportunities ranked by value from Search Opportunities, and the team members assigned to that account from List Users. Repeat the headline metrics and the period comparison at the top of the page. Keep appointment detail shallow, just counts booked over the range, because I do not want this drifting into a show rate report.
Each client detail page carries a running log of internal notes. I type a note in the app, it saves with a timestamp and the name of whoever wrote it, and it persists per client so the whole team reads the same history. Store these notes in the app itself. Do not write them into the client's own GoHighLevel account, since this is internal commentary that the client should never see.
Every client row and detail page also gets a "Write the client update" button that kicks off a background agent scoped to that location. The agent pulls that location's contacts with Search Contacts (Advanced), its opportunities with Search Opportunities resolved against Get Pipelines, and its appointments with List Calendar Events, for both the selected period and the prior period. It then writes a plain English health brief covering what improved, what slipped, and three recommended actions, in the same blunt internal tone. The brief is saved back into the app so it shows on that client's card with the date it was written, and it is also posted to our account management channel using the Slack Bot Send a Message operation. Let me choose the Slack channel inside the app. Show the button in a running state while the agent works, and surface the newest brief as soon as it lands.
Practical notes for the build. Every LeadConnector read is scoped by locationId, so the board fans out one set of calls per sub-account. LeadConnector allows roughly 100 requests per 10 seconds per resource, so gather each location's rollup once and cache it rather than refetching on every render, and give me a refresh control plus a visible timestamp showing when the numbers were last pulled. List endpoints are cursor paginated through meta.startAfter and meta.startAfterId, while Search Contacts (Advanced) uses page based pagination. All requests need the Version header set to 2021-07-28. Agency level reads across sub-accounts need the locations and companies read scopes. If one location errors or times out, show that row in an error state rather than silently dropping it from the board.
What does this prompt do?
- Puts every client sub-account in one table with new contacts, open and won deal value, and appointments booked for whatever date range you pick.
- Compares each number against the previous period and puts a red flag on any client whose new contacts or won deal value dropped past a threshold you control.
- Sorts worst decline first, and gives every client its own page with pipelines, top open deals, assigned team members, and a running log of internal notes you keep in the app.
- Adds a Write the client update button that hands the account to a background assistant, which drafts a blunt health brief, saves it to the client card, and posts it to your Slack channel.
What do I need to use this?
- A GoHighLevel agency account with access to the client sub-accounts you want on the board.
- Permission to read account and company level data, so the board can see every sub-account instead of just one.
- Deals tracked as opportunities inside each sub-account, since the money figures come from won deal value rather than invoices or payments.
- A Slack workspace and the channel your account managers work out of.
How can I customize it?
- Change the default date range and the drop percentage that turns a client red.
- Pick which Slack channel the client updates land in, and adjust how blunt the written brief is.
- Change the default sort or the columns on the board if you would rather lead with something other than the biggest decline.
FAQs
Does this show how much each client actually paid us?
How many client accounts can it handle?
Can my account managers use it, or is it just for me?
Do clients ever see the notes or the written briefs?
What if a client runs several pipelines?
How far back does the comparison go?
Related templates
Every logo, photo, video cut and ad export in one searchable grid, with previews, campaign tags and rights expiry dates at a glance.
Twice a day we spot the people clicking your pricing and demo pages, create a follow-up task for their owner, and post a ranked recap to Slack.
One board showing every dashboard and Look with its folder, owner and favorite count, so you can find dead content and retire it safely.
Watch every live room on one screen, remove disruptive guests, start recordings and end stuck sessions without anyone opening a terminal.
Every Monday we find leads who never bought, research a real reason to reach out, and send a short personal email instead of another check in.
See the exact hours your chat queue backs up and customers give up waiting, then plan next week's shifts before it happens again.
Stop logging into a dozen client accounts to find the bad news.
Open one board that ranks your client sub-accounts by who slipped the most, then hand the write-up to an assistant.