← All posts
GoHighLevelDashboardsApril 26, 2026Clint Research Team

How to Build a Dashboard in GoHighLevel for Home Service Contractors

GoHighLevel ships a Custom Dashboard builder with widgets for contacts, calls, opportunities, and revenue. Here's how to build one that actually answers contractor questions, and what GHL still can't show you.

8 min read

Key takeaways

  • GoHighLevel's Custom Dashboards live inside each sub-account and let you add widgets for contacts, opportunities, appointments, calls, and revenue with Numeric, Donut, Line, Bar, or Table chart types
  • Custom Metrics let you combine numbers from different sources and run calculations like conversion rate, ROI, or cost per acquisition
  • Contractors most often need: speed-to-lead by CSR, cost per booked job by source, quote-to-close by tech, and weekly revenue by source, none of which GHL ships out of the box
  • GHL has no native job, quote, dispatch, or technician concept, so any contractor dashboard requires custom fields, workflows, and often a third-party data source to be meaningful
  • Clint answers the dashboard question without the dashboard, by reading GHL plus your inbox, calls, and calendar live
Contents
  1. 01What GHL gives you out of the box
  2. 02Step 1: Create a sub-account dashboard
  3. 03Step 2: Add the speed-to-lead widget first
  4. 04Step 3: Build a "leaks" widget
  5. 05Step 4: Cost per booked job by source
  6. 06Step 5: Quote-to-close by technician (the hard one)
  7. 07Step 6: Conversations and reply-rate widgets
  8. 08Step 7: Configure email delivery of the dashboard
  9. 09Step 8: Where the dashboard breaks
  10. 10Step 9: Use Clint as your "any question" dashboard
  11. 11Sources
  12. 12Frequently Asked Questions

GoHighLevel's Custom Dashboards module ships with widgets for contacts, opportunities, appointments, calls, and revenue, and chart types for Numeric, Donut, Line, Bar, Horizontal Bar, and Table. [HighLevel custom dashboards]

That sounds like enough. It is not, if you are a $1M to $10M home service contractor. The widgets are sized for a marketing agency: leads in, appointments booked, conversion to closed-won. There is no native widget for revenue per technician per day. There is no widget for cost per booked job by source. There is no widget for membership renewal risk. The data shape GHL exposes is contact-shaped, not job-shaped.

This is a how-to for building a contractor-useful dashboard inside GHL, with realistic expectations about what you can and cannot get to. We will also cover the questions GHL was simply not built to answer, and how Clint handles those.

What GHL gives you out of the box

Before you build anything custom, you already have:

  • Pipeline dashboard widget. Pipeline value, opportunities count, conversion rate, funnel chart, stage distribution. [Pipeline dashboard widget]
  • Contacts widget. New contacts created over a date range, sliced by source.
  • Appointments widget. Booked, completed, cancelled, no-show counts by calendar.
  • Conversations widget. Inbound and outbound message counts by channel.
  • Calls widget. Inbound, outbound, missed, average duration.
  • Email and SMS campaign widgets. Sent, delivered, opened, clicked, bounced.

For a marketing agency client, that's enough. For a contractor running a $5M plumbing shop, it answers maybe a quarter of what you need.

Step 1: Create a sub-account dashboard

Custom Dashboards live inside each sub-account, not at the agency level. Navigate to Dashboard → click the blue "+" button → New Dashboard. Name it something specific to the question it answers, like "Owner Morning View" or "CSR Performance Weekly." [Customizing dashboard widgets]

Generic names get ignored. Specific names get checked.

You can build separate dashboards for the owner, ops manager, and lead CSR. Each one shows different widgets at different time horizons. The owner cares about cost per booked job and revenue trend. The ops manager cares about appointment fill rate. The CSR cares about today's untouched leads.

Step 2: Add the speed-to-lead widget first

Speed-to-lead is the highest-leverage metric in home services. Every minute of delay is a percentage point of conversion lost. The home services industry converts calls at 46 percent on average per Invoca's 2025 report analyzing 60 million calls, but speed-to-human is the single biggest lever on that rate. [Invoca 2025 home services report]

GHL doesn't ship a speed-to-lead widget. You build it from a Custom Metric.

In Reports → Custom Metrics → Create, define a metric like:

  • Name: Median Time to First Outbound
  • Source: Conversations
  • Calculation: Median of (timestamp of first outbound message - timestamp of contact creation), grouped by user
  • Filters: Created in last 7 days, source = "Web Form" or "Inbound Call"

Add that metric to the dashboard as a Numeric widget. Add a second instance grouped by hour-of-day. Now you have two widgets: a single number for the team average and a bar chart that shows when speed slows down. [GHL custom metrics]

Text Clint: "What was our median speed-to-human response on web leads last week, broken down by CSR and hour of day? Flag anyone averaging over 5 minutes."

Step 3: Build a "leaks" widget

The other dashboard piece every contractor needs is a leak count. How many leads or quotes are stalled, untouched, or going cold right now?

Build these as Numeric widgets backed by Smart List counts:

  • Untouched leads (24h): Contacts created in last 24 hours, no outbound SMS, no outbound email, no call attempt
  • Stalled estimates (7d): Opportunity stage = "Estimate Sent" and last activity > 7 days ago
  • Cold quotes (14d): Opportunity stage = "Estimate Sent" and last activity > 14 days
  • No-shows last week: Appointments with status "No Show" in the last 7 days
  • Inactive members (90d): Tag status-membership, no appointment in 90 days

Each widget is a single integer. When the integer goes up, your team has a problem. We dig into the cold quote piece in find cold quotes in your CRM.

Step 4: Cost per booked job by source

This is the dashboard widget every contractor wants and almost no one builds, because GHL doesn't have it.

You need three numbers joined: ad spend by source, leads by source, and booked revenue by source. GHL knows the leads. Your ad platforms know the spend. Your field service tool knows the booked revenue.

Inside GHL you can get partway with the Meta Ads widget and Google Analytics widget, both of which can be added to a custom dashboard. [Meta Ads widgets in HighLevel]

The honest answer for the booked revenue piece is one of three options:

  1. Manually update a Google Sheet weekly and embed it as an iframe widget
  2. Use a Custom Field on each opportunity for booked revenue and update it via workflow on stage change
  3. Pipe the data out of your field service tool into GHL custom fields via Zapier or Make

Option 2 works if your sales process already gates revenue at the won stage. Option 3 is the only one that scales when you have hundreds of jobs per month.

We covered why this gap is so painful in GoHighLevel dashboards home service contractors actually need.

Text Clint: "Show me cost per booked job by lead source last month, combining GHL contacts, Meta and Google ad spend, and won deals."

Step 5: Quote-to-close by technician (the hard one)

If you send quotes from GHL Documents & Contracts, the data lives in opportunity stage transitions. If you send them from your field service tool, the data lives there.

Inside GHL the workable approach is:

  • Add a custom field assigned_tech on each opportunity
  • Use workflow logic to populate it when the opportunity is created
  • Build a Custom Metric that calculates "Won opportunities / Total opportunities where stage was once Estimate Sent" grouped by assigned_tech
  • Display as a Bar widget

This works only if every quote actually goes through GHL's Documents & Contracts module and the opportunity stage progression is enforced. If your sales process is a tech texting "did you sign the estimate yet" through a personal phone, this dashboard widget will lie to you.

Most contractors get more honest data on this from a tool that owns the quoting flow end to end. We compare the alternatives in 8 signs you have outgrown your contractor CRM.

Step 6: Conversations and reply-rate widgets

Add these to a "CSR Performance" dashboard:

  • Inbound messages this week: Numeric widget, Conversations source
  • Average response time per CSR: Custom Metric, grouped by user
  • SMS reply rate by campaign: Numeric widget, Email/SMS Campaign source
  • First-call resolution rate: Custom Metric (calls with no follow-up needed in 24h / total calls)

The reply rate widget is the one that exposes whether your SMS templates are working. Replies are the leading indicator of bookings. Sends without replies is a vanity number. We covered the SMS marketing landscape in Hatch vs Podium vs AI contractor texting.

Step 7: Configure email delivery of the dashboard

Custom Dashboards in HighLevel support automated report delivery. Set up an email schedule to push a snapshot to the owner every Monday at 7 a.m. local. [GHL dashboard custom metrics and reports]

The reason this matters is that nobody logs in to dashboards. Owners check email and texts. The dashboard you don't email yourself is the dashboard nobody reads. We dig into the wider problem in contractor dashboard metrics owners ignore.

Step 8: Where the dashboard breaks

Be honest with yourself. There is a list of contractor questions a GHL custom dashboard simply cannot answer cleanly:

  • Revenue per tech per day. Pipeline value is not booked revenue. GHL does not know who was dispatched.
  • Route efficiency or drive time per job. No GPS, no route optimization, no time-on-site data. [RockItGoDigital GHL contractors review]
  • Job-cost margin by service line. No parts inventory, no labor cost engine, no job-cost view.
  • Membership renewal risk. Requires last-service date + last-review-score + payment history, two of which live outside GHL.
  • Why bookings dipped this week. Multi-source root-cause analysis is not a widget. It's a conversation.

This is the gap Clint is built for. We cover the wider list of questions in questions no dashboard will answer.

Step 9: Use Clint as your "any question" dashboard

The honest workflow most contractors land on:

  1. Use GHL custom dashboards for the 5 to 7 widgets you check daily
  2. Email yourself the snapshot every Monday
  3. Text Clint for everything else

Clint reads GHL, Gmail, Google Calendar, and CallRail. It joins the data you already have and answers in plain language.

Text Clint: "Why did our booked jobs drop 22 percent this week? Compare lead volume by source, speed-to-human, and CSR availability vs last week."

That answer requires three different dashboards in GHL plus a phone log review. Clint does it in one text.

Sources

Frequently Asked Questions

6 questions home service owners actually ask about this.

  • 01Can I build a dashboard in GoHighLevel without a developer?

    Yes. The Custom Dashboard builder is drag and drop. You add widgets, choose a chart type, select a metric, and apply filters. Custom Metrics require some setup but are still UI-driven, not code.

  • 02How many custom dashboards can I have in GHL?

    You can build multiple dashboards per sub-account. There is no published cap on the number, but practical cap is "however many your team will actually open." Most contractor sub-accounts use 3 to 5 dashboards: Owner, Operations, CSR, Marketing, Reactivation.

  • 03Can I share a GHL dashboard externally?

    Yes, via scheduled email reports. You cannot give a non-GHL user direct access to the live dashboard, but you can email a PDF or image snapshot on a schedule.

  • 04How do I add ad spend data to a GHL dashboard?

    GHL has native widgets for Meta Ads, Google Ads, and Google Analytics that pull spend, impressions, and conversion data once those accounts are connected. For platforms not natively supported (Yelp, Angi, Nextdoor), you need a Zapier-fed custom field or a separate BI tool.

  • 05Why doesn't GHL track revenue per technician?

    Because GHL has no concept of a technician or a dispatched job. It has Users (the people who can log in) and contacts. Revenue per tech requires either a custom field schema you maintain or a sync from a field service tool like Jobber or Housecall Pro.

  • 06What's the difference between a Custom Dashboard and a Custom Report in GHL?

    Dashboards are live, interactive, and viewed inside the platform. Reports are scheduled, static snapshots designed for export and email delivery. Many widgets can live in both. [GHL custom reports]

See Clint in action

Clint is the pre-built AI for home service shops. Connect your CRM, email, and phone system in minutes and the agents run on your real data.