How to Track Leads in GoHighLevel for Contractors
GoHighLevel has Opportunities, Smart Lists, Tags, and Workflows for lead tracking, but none of it was designed for trades. Here's how to track leads in GHL the way home service contractors actually need, and where the platform falls short.
Key takeaways
- GoHighLevel powers over 1 million businesses and 20,000+ agencies, and contractors are one of its fastest growing user segments retrofitting an agency CRM for trades work
- Lead tracking in GHL lives across Opportunities pipelines, Smart Lists, Tags, Custom Fields, and Conversations, with no native concept of a job, a quote, or a dispatch
- Pipelines work fine for raw leads, but contractors end up rebuilding job stages, scheduling, and technician assignment on top of a marketing pipeline that was never sized for it
- The right tag set, custom field set, and Smart List combo is what stops leads from disappearing between forms, calls, and SMS
- Clint reads the GHL data plus your inbox, calls, and calendar, then answers questions like 'who has not been contacted in 7 days' across all sources at once
Contents
- 01What GHL means by a "lead"
- 021. Build a "Lead" pipeline before anything else
- 032. Lock down your tags
- 043. Custom fields for what tags can't carry
- 054. Smart Lists are how you find leads that GHL hides
- 065. Workflows for the actions a human won't remember
- 076. The Conversations inbox is your real lead view
- 087. Where GHL falls short for contractor lead tracking
- 098. How Clint plugs the gaps
- 10Sources
- 11Frequently Asked Questions
GoHighLevel powers over 1 million businesses and 20,000+ agencies in 2026, and contractors are now one of its fastest growing segments. [TaskVirtual GHL 2026 guide]
That growth is mostly digital marketing agencies pushing GHL to their contractor clients. The agency runs Google Ads, the leads land in GHL, and the contractor is suddenly the operator of a CRM that was never sized for trades. There is no job. There is no quote. There is no dispatch board. There is an Opportunity, a contact, a tag, and a workflow.
If you are a $1M to $10M plumber, electrician, HVAC, or restoration shop running on GHL, this guide walks through how to actually track leads inside the platform, what to set up, what to skip, and where you will need to bring in another tool (or text Clint) to fill the gaps.
What GHL means by a "lead"
GHL does not have a "Lead" object the way Salesforce or HubSpot do. Every lead in GHL is a Contact with one or more Opportunities attached to it. Opportunities live inside Pipelines, and pipelines have Stages. [GHL Opportunities setup]
So when someone fills out your "Free Estimate" form, the system creates a Contact (named, phone, email) and an Opportunity (a record of a potential deal) in whichever pipeline you wired the form to.
This matters because every lead-tracking decision you make in GHL is really a decision about three things at once: how you tag the contact, what pipeline and stage the opportunity sits in, and what custom fields you collect.
1. Build a "Lead" pipeline before anything else
The single biggest mistake I see contractors make is using one pipeline for everything: leads, quotes, scheduled jobs, and won deals. The platform technically supports it. The math gets ugly fast because pipeline conversion rate gets distorted by jobs that have nothing to do with sales.
Build at least two pipelines:
- Lead pipeline: New Lead → Contacted → Appointment Set → Estimate Sent → Won/Lost
- Job pipeline: Scheduled → In Progress → Invoiced → Paid → Reviewed
If you also run service contracts, add a third Membership pipeline. Each one becomes a measurable funnel with its own conversion rate.
GHL ships with a Pipeline dashboard widget out of the box that shows pipeline value, opportunities count, conversion rate, and stage distribution. [GHL pipeline dashboard] Splitting your pipelines is what makes those numbers meaningful instead of mush.
Text Clint: "Show me my GHL Lead pipeline conversion rate by stage for the last 30 days, and flag any stage where leads are stalling more than 5 days."
2. Lock down your tags
Tags in GHL are how you slice your contact list later. Workflows add and remove them. Smart Lists filter on them. Email and SMS campaigns target them. Tag discipline is the single highest leverage thing you can do.
A workable contractor tag set:
- Source tags:
source-google-lsa,source-meta,source-organic,source-referral,source-yelp,source-angi - Service tags:
service-water-heater,service-drain,service-install,service-emergency - Status tags:
status-active-customer,status-inactive-12mo,status-membership,status-cold-lead - Behavior tags:
behavior-no-response-72h,behavior-quoted-not-booked
We cover the philosophy behind tag design in 7 essential CRM tags every contractor should use. The principle is the same in GHL as in any CRM: tags should answer a question you will actually ask later, not be vibes.
GHL applies tags through workflows, manual edits, or bulk actions on Smart Lists. The Conversation AI Auto Follow-Up feature can also tag a contact when it detects no response after a set window. [GHL Conversation AI auto follow-up]
3. Custom fields for what tags can't carry
Tags are binary. Custom fields hold values. For contractor lead tracking you need both.
Useful custom fields to add to a contact:
service_address(different from billing address, since trades is property-centric)square_footageequipment_agelast_service_dateestimated_job_valuereferred_by_contact_id
The square footage and equipment age fields are what let you write a workflow that says "if equipment_age > 12 years, send the replacement upsell sequence." A tag can't do that.
GHL also lets you build Smart Lists that filter on custom field values. [GHL Smart Lists guide] So once these fields are populated, you can build a Smart List of "all contacts with equipment_age > 10 years and no service in the last 6 months" in 30 seconds.
4. Smart Lists are how you find leads that GHL hides
Smart Lists are dynamic. They update in real time as contacts meet or fall out of the criteria. Static lists go stale. Smart Lists do not.
Lists every contractor should have:
- Untouched leads (24h): Created in the 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. The recovery motion is in revive cold leads in GoHighLevel.
- Reactivation candidates:
status-active-customerwas true, last service > 12 months ago - Hot replies: Replied to an SMS in the last 48 hours but opportunity stage has not advanced
- Quote follow-up due: Tag
behavior-quoted-not-booked, no contact in 5 days
These lists are where leads actually surface. The standard GHL contact view is sorted by date and is useless for finding what to do next. We dig deeper into this problem in how to find alive leads in your contractor CRM.
Text Clint: "Show me GHL contacts in 'Estimate Sent' stage with no SMS reply in 7 days, sorted by deal size."
5. Workflows for the actions a human won't remember
Workflows in GHL automate the repetitive parts of lead tracking. Not the relationship part. The plumbing part.
Workflows worth building first, in order of ROI:
- Speed-to-lead auto-text. New form fill → SMS within 90 seconds with a personal opener and a calendar link. Speed-to-human still matters, but speed-to-acknowledgement is what stops the lead from calling your competitor while waiting. [Agency Level 5 GHL automation guide]
- Missed call text-back. Inbound call goes unanswered → automatic SMS within 60 seconds asking what they need. We break down the build vs buy decision in AI missed call follow-up agent for contractors.
- Estimate follow-up sequence. Tag
behavior-quoted-not-bookedtriggers a 5-touch sequence over 14 days, ending with a reactivation offer. - Appointment reminders. 24h email, 2h SMS, day-of confirmation.
- Review request. 1 hour after pipeline stage moves to "Paid" → SMS with the review link.
GHL ships templates for all five and a workflow library you can fork. [GHL workflows getting started] Build them once, then leave them alone.
6. The Conversations inbox is your real lead view
The Conversations module is where every inbound and outbound message lands: SMS, email, Facebook DM, GMB chat, web chat, and calls (with recording). It is the closest thing GHL has to a unified communication log per contact. [HighLevel unified Conversations]
For lead tracking specifically, three habits in Conversations matter:
- Filter by unread + unassigned as your morning queue. Anyone who is not your problem yet, but should be.
- Use the snooze feature instead of leaving threads "open." A snoozed thread reappears in your inbox at the time you set, which is what people actually mean when they say "follow up Monday."
- Bulk-tag from the inbox when you see patterns. Five replies asking about water heater repair on the same day means add the tag and segment them.
The Conversations inbox does not, however, tell you who you should call next across email + voicemail + calendar gaps. That is a different question. GHL knows what is in GHL. It does not know that the lead emailed you yesterday from a different address, or that there is a calendar hold on your morning that blocks the callback.
Text Clint: "Who should I call this morning? Cross-reference GHL Opportunities, my Gmail inbox, missed calls, and my calendar."
7. Where GHL falls short for contractor lead tracking
Be honest with yourself before you spend another month building inside GHL.
- No native job concept. A "job" in GHL is a custom-built artifact: an Opportunity in your Job pipeline, plus a calendar appointment, plus custom fields. Field service tools (Jobber, HCP, ServiceTitan) ship with this on day one.
- No quote object. Estimates in GHL are PDFs sent through Documents & Contracts, or attached emails. There is no line-item engine, no parts library, no margin calculation.
- No dispatch board. GHL has calendars. It does not have a multi-tech dispatch view, route optimization, or technician load balancing. [RockItGoDigital GHL contractors review]
- Mobile app weakness. Multiple contractor reviews flag that the GHL mobile app is missing features available on desktop, which breaks for techs in the field. [OWNR OPS GHL review 2026]
- Reporting is pipeline-shaped, not job-shaped. Pipeline value is not booked revenue. Conversion rate is not close rate. The numbers you actually want for a trades P&L need joining to your dispatch tool and accounting.
Most successful GHL contractor setups run GHL for lead intake and follow-up, then push won opportunities into Jobber/HCP/ServiceTitan via Zapier or Make. We covered why that gap exists in GoHighLevel dashboards home service contractors actually need.
8. How Clint plugs the gaps
Clint is built for the question that GHL cannot answer: what is happening across all my customer touchpoints right now, and what should I do next?
Clint connects to GoHighLevel, Gmail, Google Calendar, and CallRail. The owner texts a question. Clint reads the data live and answers in plain language.
- Text Clint: "Show me leads from Google LSA in the last 30 days that have not booked, with last contact date and the next step."
- Text Clint: "What is my speed-to-lead median this week vs last week, by intake source?"
- Text Clint: "Pull every contact tagged 'maintenance customer' with no service in 12 months and draft a reactivation SMS."
You don't need a dashboard. You don't need a Smart List. You don't need to remember the right filter combination. You text the question. The answer comes back. The work happens in GHL where it always did.
Sources
- GoHighLevel Pipelines and Opportunities setup (HighLevel Support)
- Smart Lists in GoHighLevel (HighLevel Support)
- GoHighLevel for Contractors Review 2026 (RockItGoDigital)
- GoHighLevel Workflows Getting Started (HighLevel Support)
- GoHighLevel Review 2026 (OWNR OPS)
- GoHighLevel Automation Guide (Agency Level 5)
- GoHighLevel 2026 Pricing and Features (TaskVirtual)
Frequently Asked Questions
6 questions home service owners actually ask about this.
01What's the difference between a Contact and an Opportunity in GoHighLevel?
A Contact is the person. An Opportunity is a record of a potential deal attached to that Contact, sitting inside a Pipeline at a specific Stage. One contact can have multiple opportunities over time (a quote in 2024, a follow-up service in 2025, a new install in 2026), each tracked separately.
02How many pipelines should a contractor have in GHL?
At least two: a Lead pipeline (intake to won/lost) and a Job pipeline (scheduled to paid). Add a Membership pipeline if you sell service contracts. Mixing them makes conversion math meaningless.
03Can GoHighLevel replace ServiceTitan or Jobber for contractors?
No. GHL has no native job, quote, dispatch, route optimization, parts inventory, or job costing. Most contractors run GHL for marketing and intake, then sync won opportunities into a field service tool. We compare the gap in 8 signs you have outgrown your contractor CRM.
04How do I track lead source attribution in GHL?
Use the Source field on the Contact and add a
source-*tag at form submission. Make sure every form, ad, and landing page sets the source explicitly through hidden fields or workflow logic. Without that, the Source field defaults to "Manual" and breaks reporting.05What is the best way to find cold leads in GHL?
Build a Smart List filtered by: opportunity stage = Estimate Sent, last activity > 14 days, no SMS reply in last 7 days. That is your cold quote queue. We cover the wider playbook in find cold quotes in your CRM.
06Does the GHL mobile app track leads as well as the desktop?
No. The mobile app has fewer features and slower load times for pipelines and Smart Lists. Owners and CSRs end up doing real lead work on desktop and using mobile only for SMS replies.
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.