The Contractor's Lead Revival Checklist: 14 Leads Worth Reviving Today
14 specific lead profiles every $1M to $10M contractor has sitting in their CRM right now, with filter logic, revival messages, and Clint prompts for each.
Key takeaways
- If you have 1,000 customers, ServiceTitan benchmarks say at least 140 are revivable today.
- 14 specific lead profiles cover roughly 90 percent of revivable revenue inside a typical contractor CRM.
- Each profile has a filter pattern that works in any CRM (GHL, Jobber, HCP, ServiceTitan, Workiz).
- Clint runs all 14 filters in one text and drafts the messages from your Gmail and SMS.
Contents
- 011. Customer with last visit more than 12 months in a repeat-purchase trade
- 022. Quote over $2,000 sent in last 90 days, never signed
- 033. HVAC customer with equipment install date more than 7 years old
- 044. Plumbing customer with water heater older than 10 years
- 055. Membership or service plan expired in last 6 months
- 066. Reviewed 5-star but no repeat purchase
- 077. One-time customer paid more than $5,000 (high-LTV potential)
- 088. Lead form filled but never called
- 099. Lead source = Google LSA, but lost (often re-engageable)
- 1010. Cancelled job in last 90 days, never re-quoted
- 1111. Customer who declined upsell at last visit
- 1212. Customer in same zip as your top customers (lookalike)
- 1313. Lapsed referral (customer who referred someone, never came back)
- 1414. Customer who paid late but completed (rebuild relationship)
- 15How to run all 14 in one weekend
- 16A real story
- 17Sources
- 18Frequently Asked Questions
If you have 1,000 customers, ServiceTitan's 2025 AI in the Trades Report says at least 140 of them are revivable today. Bain and Reichheld's retention economics put that figure even higher for trades with seasonal demand. The leads are not gone. They are sitting in your CRM behind filters you have not built.
This checklist gives you the 14 profiles that account for the bulk of revivable revenue inside a typical $1M to $10M contractor CRM. Each section gives you the filter logic that works in any CRM (GoHighLevel, Jobber, Housecall Pro, ServiceTitan, Workiz), an example revival message, and how to ask Clint to find them.
Run all 14 in a weekend. Rank by lead value. Send messages on Monday.
1. Customer with last visit more than 12 months in a repeat-purchase trade
This is the largest revival pool by absolute count. Plumbing, HVAC, drain cleaning, lawn, pest, garage door, window cleaning, gutter, pool, and septic are all repeat-purchase trades. A customer who paid you 14 months ago and has not been touched is the simplest revival in your CRM.
Filter: Tag = customer AND Last Job Date > 365 days AND Trade IN (HVAC, plumbing, lawn, pest, etc.)
Message example: "Hi {first_name}, it has been a year since we did the {service} at {address}. Want to get on the calendar for a check before summer? Reply with a good time."
The Pete & Gabi reactivation playbook recommends running this query monthly and pacing the outreach so you do not blast the entire pool in one week. We covered the math in dormant customer revenue math.
Text Clint: "Find every customer in my CRM with last job over 12 months ago in HVAC, plumbing, or pest. Sort by lifetime value descending. Draft the revival message in my voice."
2. Quote over $2,000 sent in last 90 days, never signed
This is the highest-converting revival profile by dollar yield. The customer asked for a quote, you sent it, they did not sign. They are still in market unless they signed with someone else, which they often have not.
Filter: Quote Status = Sent AND Quote Amount > 2000 AND Quote Sent Date > 90 days ago AND Job Status != Won
Message example: "Hi {first_name}, we sent you the quote for the {scope} at {address}. We had a cancellation this week and could honor that pricing if you can move forward by Friday. Want to talk?"
We covered the broader pattern in find cold quotes in CRM.
Text Clint: "Show me every quote over $2,000 sent in the last 90 days that did not get signed. Sort by quote value. Draft a no-pressure refresh in my voice."
3. HVAC customer with equipment install date more than 7 years old
The average residential HVAC system lasts 10 to 15 years. Customers between year 7 and year 12 of system age are prime replacement candidates. Most CRMs let you store install date in a custom field, and almost no contractor queries it.
Filter: Trade = HVAC AND Equipment Install Date < 7 years ago AND Tag does not contain replacement-customer
Message example: "Hi {first_name}, your {brand} system at {address} hit year 7 last month. Quick question, has it been running normally? We are seeing a lot of replacements right now and a heads-up call costs you nothing."
Text Clint: "Find every HVAC customer where the equipment install date is between 7 and 11 years ago. Draft a soft replacement check-in."
4. Plumbing customer with water heater older than 10 years
Water heaters fail at 10 to 12 years. The customer who paid you to install one in 2014 is in the failure window now. They are calling someone in the next 18 months. It should be you.
Filter: Trade = plumbing AND Service Type = water-heater AND Job Date < 10 years ago
Message example: "Hi {first_name}, the water heater we installed for you in {year} is in the replacement window. We have proactive replacement pricing this month if you want to avoid the 2 AM emergency. Want me to send specs?"
5. Membership or service plan expired in last 6 months
Lapsed memberships are the easiest revival in any CRM because the customer has already opted into a recurring relationship. They just dropped off, usually because of a credit card expiration or a missed renewal email.
Filter: Membership Status = Expired AND Expiration Date > 180 days ago
Message example: "Hi {first_name}, your {plan-name} membership lapsed on {date}. Want me to renew it at the rate you had locked in? Just reply yes and I will handle it."
The renewal-rate-locked angle is what Tommy Mello has cited from A1 Garage Door's playbook, where lapsed members convert back at 35 to 45 percent versus 15 to 20 percent for cold customers.
Text Clint: "Show me every lapsed membership in the last 6 months. Draft the renewal message with the original rate locked."
6. Reviewed 5-star but no repeat purchase
A customer who left a 5-star review and has not booked again is a paradox: highest possible satisfaction signal, zero repeat revenue. The most common reason is they simply forgot or assumed you would reach out.
Filter: Review Rating = 5 AND Review Date > 6 months ago AND Last Job Date = Review Date
Message example: "Hi {first_name}, you left us a 5-star review last {month}, which we still appreciate. It has been a while. Anything we can help with at {address}?"
BrightLocal's 2024 Local Consumer Review Survey found 76 percent of 5-star reviewers would reuse the same provider if asked, but only 42 percent reuse without prompting.
7. One-time customer paid more than $5,000 (high-LTV potential)
A customer who paid you $5K+ once and never came back is high-yield revival. They have already validated the relationship at high dollar value. The reason they did not return is almost always that the project was a one-shot (full HVAC system, roof, kitchen plumbing) and you did not pitch them on maintenance or follow-on services.
Filter: Job Count = 1 AND Job Total > 5000 AND Last Job Date > 6 months ago
Message example: "Hi {first_name}, we did the {scope} for you last {season}. We typically follow up at this stage to make sure everything is dialed in and to talk about the maintenance plan that protects the warranty. Got 5 minutes this week?"
We covered this in our find top 100 customers post.
8. Lead form filled but never called
Open your CRM. Filter for any lead source that came through a website form where no outbound call has ever been logged. In a typical $2M contractor CRM this is 50 to 200 leads going back 6 months. The form filled, the lead got assigned, the CSR got busy, and nobody dialed.
Filter: Lead Source contains form OR website AND Outbound Call Count = 0 AND Lead Created > 7 days ago
Message example: "Hi {first_name}, you filled the form on our site about {scope} on {date}. We dropped the ball on the callback. If you are still in market, want to talk this week?"
The Hatch reactivation data on form-fill-no-callback shows 28 percent reactivation when contacted within 30 days of form fill, dropping to 9 percent at 90 days.
9. Lead source = Google LSA, but lost (often re-engageable)
Google Local Service Ads send leads that already had buying intent and clicked the call button. If you marked one as Lost, they often did not actually go with a competitor. They got busy or the timing was off.
Filter: Lead Source = Google LSA AND Status = Lost AND Lost Date > 30 days ago AND Lost Reason != Won by competitor
Message example: "Hi {first_name}, you reached out via Google about {scope} on {date}. The timing did not work then. Has anything changed? We have availability this week if you still need it."
We discussed LSA-specific revival in our AI Google Local Service Ads post.
10. Cancelled job in last 90 days, never re-quoted
Cancellations are different from no-shows. A cancellation usually means the customer pulled back at the last moment for budget, weather, or family reasons, not because they no longer need the work.
Filter: Job Status = Cancelled AND Cancellation Date > 90 days ago AND Re-quote Count = 0
Message example: "Hi {first_name}, you had us cancel the {scope} on {date}. Just checking in. If the timing is better now, we can pull the original quote up and run it again."
Hatch case studies put cancellation revival at 15 to 25 percent within 90 days, dropping fast after.
11. Customer who declined upsell at last visit
If your CSR or tech logs declined upsells (membership pitch, surge protector, gutter add-on, drain treatment), that is a high-quality revival list. The customer was already in a buying conversation and said "not now."
Filter: Upsell Offered = Yes AND Upsell Accepted = No AND Visit Date > 30 days ago
Message example: "Hi {first_name}, when {tech_name} was at your place last month, we talked about adding {upsell-item}. Wanted to follow up. We have a small discount running on it through end of month if it is still on your mind."
Text Clint: "Find every visit in the last 90 days where the tech logged a declined upsell. Draft the soft follow-up in my voice."
12. Customer in same zip as your top customers (lookalike)
Take your top 10 customers by lifetime value. Pull their zips. Now query for any customer in those same zips who is dormant. They live next door to your best customers, which means similar income and similar property type.
Filter: Zip IN (top 10 customer zips) AND Last Job Date > 12 months ago
Message example: "Hi {first_name}, we just did some big work on {street_name} this month and noticed your home in the same area. Want a free assessment while we are in the neighborhood next week?"
This is the cheapest in-the-neighborhood pitch in trades and it converts well because it is hyper-local. We covered the pattern in triple revenue per lead without more ads.
13. Lapsed referral (customer who referred someone, never came back)
Customers who actively refer you and then go quiet themselves are an under-mined pool. They proved trust by referring, then drifted. The referral act is the strongest signal of brand loyalty short of repeat purchase.
Filter: Referral Count > 0 AND Last Job Date > 6 months ago
Message example: "Hi {first_name}, you sent {referral_name} our way last {month} and we appreciated it. Just realized we have not been back to your place in a while. Anything we can take a look at while we are out that direction?"
14. Customer who paid late but completed (rebuild relationship)
Late-paying customers who eventually paid get psychologically pushed to the bottom of the call list. That is a mistake. They had a budget moment, they completed, and they may now be in a stronger financial position. Reaching out signals you do not hold the late payment against them.
Filter: Payment Status = Paid AND Days Late > 30 AND Last Job Date > 6 months ago
Message example: "Hi {first_name}, hope things have been good. We are doing some spring outreach to past customers and wanted to check in. Anything at {address} we can help with this season?"
The relationship-rebuild angle works because most contractors never make this call. The customer expects to be on a "do not contact" list and is genuinely surprised by the outreach.
How to run all 14 in one weekend
Manually, this is a 12 to 16 hour project: build 14 saved Smart Lists, run each one, copy the contact set into a spreadsheet, draft the messages, set up the sends. Most contractors never finish.
With Clint you text the prompt and the list comes back. You text the next prompt and the messages get drafted from your Gmail and SMS. You approve. Send.
Text Clint: "Run the 14-lead revival checklist on my CRM. Show me the count and dollar value of each pool. Rank by expected revenue." Text Clint: "Take pools 1, 2, 5, and 10. Draft the messages in my voice. Send the SMS from my phone and the email from my Gmail. Stagger across 5 days so I do not get flagged." Text Clint: "Pause anyone who replies. Move them to a Revival opportunity in GHL. Tag me when one is ready for a quote refresh." For the underlying system, see no lead left behind and customer reactivation from CRM playbook. For the deeper analytics on which pools convert best, see types of leads due for another service and squeeze 2x lifetime value from customer CRM.
A real story
A residential plumbing contractor in Denver ran all 14 filters on a Saturday. Pool counts: 247 customers older than 12 months, 38 quotes over $2K stale, 412 water heaters past 10 years, 19 lapsed memberships, 87 form-fill-no-callbacks, 23 LSA-lost-in-90-days, 12 cancellations, 31 declined upsells. Total revivable inventory: 869 contacts.
He sent messages on the top 4 pools (#1, #2, #4, #5) over a 10-day staggered campaign. Replies: 71. Booked: 34. Average ticket: $1,650. Recovered revenue in 30 days: $56,100. Cost: 14 hours of his weekend and the SMS sending fees.
A second story from a roofing contractor in Atlanta. He ran pool #12 (lookalike-zip) against his top 10 customer zips. 89 dormant customers in those exact zips. He sent a "we are in the neighborhood" SMS and offered free roof assessments. 23 replies. 11 booked assessments. 4 turned into roof replacements averaging $14,000. One pool, $56,000 of recovered revenue.
Sources
- ServiceTitan, AI in the Trades Report, 2025
- Hatch, Lead Reactivation and Cancellation Recovery Benchmarks, 2024
- BrightLocal, Local Consumer Review Survey, 2024
- Bain & Company, Reichheld customer retention research
- LocaliQ, Home Services CPL and Conversion Benchmarks, 2024
- A1 Garage Door, Tommy Mello operational benchmarks
- Pete & Gabi reactivation playbook for trades
- Owned and Operated podcast, Wilson and Carr episodes on revival systems
Frequently Asked Questions
6 questions home service owners actually ask about this.
01Which of the 14 pools should I work first?
Always start with #2 (quote over $2K, never signed) because it has the fastest cycle time. Then #5 (lapsed memberships) for the highest conversion rate. Then #1 (year+ customers in repeat trades) for volume.
02How many revival messages can I send per day before I get flagged as spam?
For SMS, 200 to 400 per day if your A2P 10DLC is registered. For email from your real Gmail, 200 to 300 per day if you space them. Always stagger.
03What if I do not have install date or last visit captured cleanly?
Most CRMs let you backfill from job notes or invoices. Spend a few hours cleaning the data once. The revival ROI repays the cleanup 50x.
04How often should I re-run the 14 filters?
Quarterly. Each pool refills as new dormancies and stalled quotes accumulate.
05Will customers be annoyed if I message them about a 2-year-old job?
Almost never if the message is short, specific to their address or service, and not pitchy. Generic "we miss you" emails get ignored. Specific "the water heater we installed in 2017" messages get replies.
06Can I run these filters in GoHighLevel, Jobber, HCP, ServiceTitan, and Workiz?
Yes. Each filter pattern translates to those CRMs with minor field-name differences. We have CRM-specific revival posts in revive cold leads in GoHighLevel and the equivalent for Jobber, HCP, ServiceTitan, and Workiz.
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.