How to Revive Cold Leads in GoHighLevel
A walk-through of GoHighLevel Smart Lists, Workflows, Pipelines, and Bulk SMS to revive cold leads, plus where GHL falls short and how Clint fills the gap.
Key takeaways
- GoHighLevel powers more than 1 million businesses, and a large share are home service contractors retrofitting it for field ops.
- Smart Lists, Workflows, Pipelines, and Bulk SMS are the four GHL surfaces that actually move cold leads back into revenue.
- GHL cannot read Gmail outside its inbox, log missed calls from non-GHL phone numbers, or detect calendar gaps.
- Clint plugs into GoHighLevel, Gmail, Google Calendar, and CallRail to revive leads GHL alone never sees.
Contents
- 01Start with Smart Lists, not Workflows
- 02Tag the segments before you build cadences
- 03Build the revival cadence in Workflows
- 04Run the conversation in the Conversations inbox
- 05Move replies into Pipelines, not back into Workflows
- 06Use Bulk SMS and Bulk Email for one-shot blasts
- 07Templates: keep them short, named for the angle
- 08Where GoHighLevel falls short for revival
- 09How Clint fills the gaps
- 10A real story
- 11Sources
- 12Frequently Asked Questions
GoHighLevel powers more than 1 million businesses and over 1.4 billion contacts under management as of 2025, according to its own platform numbers. A large slice of that user base is home service contractors who bought GHL through an agency and now run it as their CRM, dialer, calendar, and marketing automation in one. The platform was not built for trades, so contractors retrofit it. That retrofit is where cold leads pile up.
You have leads sitting at "No Show," "Quote Sent," and "Booked" stages from 6, 9, even 18 months ago. They are still warm. They just stopped getting touched. This post walks you through every GoHighLevel surface that can put those leads back into rotation, and the three things GHL cannot do alone.
Start with Smart Lists, not Workflows
Every revival project starts in Contacts > Smart Lists. Workflows are downstream. If you cannot list the contacts, you cannot move them.
Open the contacts table and click More Filters. The filter combinations that surface revivable leads are:
Last Activityis more than 90 days ago ANDTagscontainsquote-sentPipeline StageequalsNo ShowANDDate Addedis older than 60 daysLead Valueis greater than $2,000 ANDLast Communicationis more than 6 months agoTagscontainscustomerANDLast Job Dateis more than 12 months ago
Save each filter as a Smart List. Name it like a worklist, not a database query. "Quotes over $2k untouched 90 days" beats "filter_v3_final."
GHL Smart Lists update live, so the count on the side panel is your daily revival inventory. If that number is stuck at 800, you have an 800-lead problem. If it ticks down weekly, your system is working.
Text Clint: "Show me every contact in my GHL with a quote tag, value over $2,000, and no activity in 90 days. Sort by quote value descending."
Tag the segments before you build cadences
GHL Tags are the fastest way to slice cold leads, and they are how Workflows trigger. Before you build a single revival Workflow, sit down and add tags to the contacts in your Smart Lists.
Useful contractor tags for revival:
cold-quote-90dno-show-recoverywinback-1yrlapsed-membershipreferral-source-stale
Bulk-tag from the Smart List view. Select all, click Add Tag, type the tag, save. This is a 5-minute job that activates every Workflow downstream.
Most contractors skip tagging and try to filter inside the Workflow. That works until you have 12 Workflows competing for the same contact, and then it does not.
Build the revival cadence in Workflows
Workflows live under Automation > Workflows > Create Workflow. Use the Start from Scratch option, not a recipe, because the recipes are built for SaaS funnels, not trades.
The cadence that works for cold contractor leads is 5 touches over 14 days, mixing SMS and email:
| Day | Channel | Purpose |
|---|---|---|
| 0 | SMS | Soft re-open, reference the original quote or service |
| 2 | Specific value pitch with a calendar link | |
| 5 | SMS | Question, not a pitch |
| 9 | Social proof, a recent customer outcome | |
| 14 | SMS | Final, polite close |
The trigger should be Contact Tag Added with the tag you just bulk-applied. That way you control the entry, not the trigger logic.
Inside each step, set Wait Conditions so a reply pauses the cadence. Otherwise you will keep texting people who already responded, which is the fastest way to get marked as spam.
The 5-touch shape is consistent with what Hatch publishes from its lead reactivation case studies, where contractors recover 7 to 12 percent of dormant leads using sequenced multi-channel cadences. See our breakdown in our 5-touch follow-up cadence post for the message templates.
Text Clint: "Build me a 5-touch revival cadence for my 312 cold quotes over $2k. Send the SMS from my number, send the emails from my Gmail, and pause the second anyone replies."
Run the conversation in the Conversations inbox
The Conversations tab is where every reply lands across SMS, email, Facebook, Instagram, and GMB. For revival, you only care about the unified thread per contact.
Two settings matter:
- Turn on Show Read/Unread. You need to see which threads have been opened by the contact.
- Filter by Unread + Channel: SMS. Cold-lead replies almost always come in via SMS first because that is the channel they last touched.
The trap here is that GHL Conversations only shows threads inside GHL. If a customer emails you at your real Gmail address, that thread is invisible. If they text the cell number on your truck, also invisible unless that cell number is provisioned as a GHL twilio number.
Move replies into Pipelines, not back into Workflows
When a cold lead replies, you do not put them back into another Workflow. You move them to an Opportunity in a Pipeline.
Pipelines live under Opportunities. Create a dedicated pipeline called "Revival" with stages:
- Reply Received
- Quote Refreshed
- Booked
- Won
- Lost (with reason)
Drag the opportunity through stages as you work it. Use the Lost Reason field on every Lost. This is the data you will mine in 90 days to figure out which revival angles work.
The big mistake here is dumping revival opportunities into the same pipeline as new web leads. The reporting becomes useless because conversion rates from a 9-month-cold lead behave nothing like conversion rates from a fresh form fill.
Text Clint: "Take every reply from my revival cadence and create a Revival pipeline opportunity in GoHighLevel. Tag me when one is ready for a quote refresh."
Use Bulk SMS and Bulk Email for one-shot blasts
For bigger sweeps (lapsed memberships, seasonal pitches, holiday-specific), the Bulk Actions menu inside a Smart List is faster than building a Workflow.
Select the Smart List, click the bulk-action dropdown, and choose Send SMS or Send Email. The Email Builder gives you a drag-and-drop with merge fields like {{contact.first_name}} and {{contact.last_quote_amount}}.
Caveats from the GHL community on Reddit r/gohighlevel that come up repeatedly:
- Bulk SMS sending limits depend on your A2P 10DLC registration. Without it you will throttle hard around 200 messages a day.
- Bulk Email through GHL routes through Mailgun by default. Open rates for cold trade audiences run 12 to 18 percent based on contractor reports. Sending from your real Google Workspace inbox usually doubles that.
- The Email Builder does not support inline images well on Outlook clients. Use the plain-text Editor for revival emails. Plain text outperforms HTML 2 to 1 in cold revival per multiple A1 Garage Door operations posts.
Templates: keep them short, named for the angle
Marketing > Templates stores reusable SMS and email bodies. Build a template per revival angle, not per cadence step:
quote-refresh-hvacquote-refresh-plumbingwinback-membershipseasonal-spring-tuneupno-show-recovery
Each SMS template should be under 160 characters to avoid splitting into segments, which doubles your sending cost. Each email template should be under 100 words. Cold revival emails over 100 words get archived without reading, per Hatch's 2024 reactivation benchmarks.
Where GoHighLevel falls short for revival
GHL is strong at sequencing inside its own walls. It is weak the moment a lead behavior happens outside its walls. The honest gaps every contractor running revival hits:
1. Email outside GHL is invisible. If your customer replies to a real Gmail thread you started 8 months ago about their water heater, GHL has no idea. The customer is "stale" in the CRM while sitting in your Gmail inbox waiting for a quote refresh. Tommy Mello has talked about this on Owned and Operated as the single biggest revenue leak in retrofitted CRMs.
2. Missed calls from non-GHL phone systems never get logged. If you forward calls through Google Voice, CallRail, or RingCentral, GHL does not see the missed call. Invoca's research shows missed calls from existing customers convert at 25 to 40 percent when called back within an hour, but you cannot trigger that callback if GHL does not know the call happened. We cover the math in our missed-call follow-up agent post.
3. No calendar gap detection. GHL Calendars knows what is booked. It does not know what is not booked. A Tuesday afternoon with no jobs scheduled in May is a revival opportunity, but GHL cannot surface it. You have to look at the empty calendar and decide manually.
4. No cross-source dedupe. A lead that came through your website (in GHL) and also called CallRail (not in GHL) and also emailed your real Gmail (not in GHL) shows up as 3 separate leads, or as 1 lead with 70 percent of the activity invisible.
These gaps are why contractors with $1M to $10M revenue need a layer above GHL, not a different CRM. We covered the broader patterns in our contractor dashboard metrics post and the GoHighLevel dashboards post.
How Clint fills the gaps
Clint reads from your GoHighLevel, your real Gmail (not just the GHL inbox), your Google Calendar, and your CallRail or RingCentral logs. You text it. It surfaces the leads GHL alone cannot see.
A typical Clint revival session looks like:
"Show me every customer who emailed me from my real Gmail in the last 90 days where I did not reply or quote them."
Clint pulls 17 contacts that GHL has no idea exist as revivable. You text:
"Draft the follow-up message in my voice for each one and send via my Gmail. Schedule the SMS reminder 3 days later if no reply."
Clint drafts each message, shows them to you, sends on approval. No Workflow build. No Zap. No Mailchimp. Just the leads, drafted and sent.
Text Clint: "Audit every cold lead across GHL and my Gmail and tell me which 20 are most likely to convert this week." Text Clint: "Show me every missed call from CallRail this week that never got a callback. Draft the SMS in my voice and send." For a full GHL revenue-leak walkthrough, see our GoHighLevel lead audit post. For the broader system, see no lead left behind and the customer reactivation playbook.
A real story
A residential plumber in Austin told us he had 1,400 cold leads in GHL going back 18 months. He ran a Smart List for "quote sent over $1,500, no activity 6+ months." 287 contacts. He built a 3-touch revival Workflow. Of the 287, 31 replied within 14 days, 18 booked, average ticket $2,800. That is roughly $50,000 of recovered revenue from one weekend of GHL setup.
A second story from a roofing contractor: he was missing the calls from his old non-GHL business line because GHL only logged the new dedicated GHL number. After plugging Clint into his CallRail, he found 47 missed calls in 60 days that had never been called back. 11 turned into completed jobs. He told us he had been "blind in one eye" for a year.
Sources
- GoHighLevel Help Center, Workflows and Smart Lists documentation, help.gohighlevel.com
- Hatch, Lead Reactivation Benchmarks, 2024
- Invoca, Inbound Call Conversion Research, 2024
- ServiceTitan, AI in the Trades Report, 2025
- LocaliQ, Home Services Cost Per Lead Benchmarks, 2024
- Reddit r/gohighlevel community threads on A2P 10DLC and Bulk SMS limits
- Owned and Operated podcast, episodes with Tommy Mello and John Wilson on retrofitted CRMs
Frequently Asked Questions
6 questions home service owners actually ask about this.
01How long does it take to build the revival Smart Lists and Workflows in GoHighLevel?
A focused contractor can build 3 Smart Lists, 1 Workflow, and 5 templates in about 4 hours if the data is reasonably tagged. Add 2 to 3 hours if you have to bulk-tag thousands of historical contacts first.
02Will Bulk SMS get my GoHighLevel account flagged?
Only if you do not have A2P 10DLC registered, which is required by US carriers since 2023. Once you are registered, the throughput depends on your trust score, but most contractors land between 2,000 and 4,500 messages per day.
03Can I send revival emails from my real Gmail inbox through GoHighLevel?
You can connect Gmail to GHL as a sending domain, but the threads still live inside GHL Conversations. They do not appear in your real Gmail Sent folder. This is the #1 thing contractors get wrong.
04Does GoHighLevel detect duplicate leads across SMS, email, and form fills?
GHL dedupes on phone or email match within its own data. It does not dedupe against external sources like CallRail logs or external Gmail threads.
05How do I prove the revival cadence is working?
Use a dedicated Pipeline called "Revival" with Lost Reason fields. After 30 days you will have enough data to see which message angles produce replies and which produce ignores.
06What if my contractors do not want to learn GoHighLevel filters?
This is the most common reason contractors switch to a text-based agent like Clint. The owner texts, the agent does the GHL work in the background.
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.