Only 37% of estimates close on the first visit, according to ServiceTitan's Follow-Ups 101 webinar from April 2026. That means nearly two out of every three quotes you wrote, drove to, and presented are sitting in your CRM while that homeowner hires someone else. One ServiceTitan coach checked a single client's account and found 1,860 open estimates from a one-month window totaling $25 million in uncaptured revenue. That's not a leads problem. That's a follow-up problem.
Why most unsold estimates never get followed up
The ServiceTitan State of Roofing Report 2026 found that only 16% of roofing contractors follow up on unsold estimates the same day. The other 84% hand over a number, walk off the job site, and move on to chasing new leads they'll pay $200 to $3,000 to acquire. Meanwhile the customer they already have a relationship with gets a call from your competitor.
Follow-up is manual, awkward, and easy to skip when your crew is slammed. Your office manager has invoices to process and your sales rep is running the next appointment.
Nobody goes back into the CRM to pull the 90-day-old $8,500 HVAC replacement quote and write a personal message. So it dies.
How much money is actually sitting in your CRM right now
Take your average job ticket, count your unsold estimates from the last 12 months, and apply a 5% recovery rate - the low end from Relentless Digital's February 2026 reactivation data. At a $2,500 average ticket with 100 dead estimates, that's $12,500 in month one.
At 300 estimates, you're looking at $37,500. One anonymous client Relentless Digital worked with generated over $300,000 from a single reactivation campaign that cost less than $500 to execute.
For context, the average cost per lead for HVAC and plumbing Google Ads runs $104, based on SearchLight Digital's analysis of $14.9 million in Google Ads spend across 816 contractors in January 2026. You already paid to get these people into your CRM, and reactivating them costs a fraction of what you'd spend to replace them.
What a segmented reactivation campaign actually looks like
A blast email to your whole dead-lead list is not a campaign. It's spam. The biggest mistake contractors make is treating a lead who went cold six weeks ago the same as one who ghosted you two years ago.
The message, timing, and offer need to match the segment. Here's how to break your unsold estimates into actionable buckets:
| Segment | Age | Approach | Expected Conversion |
|---|---|---|---|
| Warm Dormant | 30-90 days | 3-touch SMS + email in week one | 8-12% |
| Mid Dormant | 3-12 months | Value-add message + seasonal offer | 5-8% |
| Cold Dormant | 12-36 months | Reintroduction + referral ask | 3-5% |
| Deep Cold | 3-5 years | Promotional offer only | 1-3% |
Within each segment, sort by job value. A $15,000 roofing replacement deserves a personal phone call in the sequence, while a $400 tune-up can be fully automated.
If you are running a structured technician sales training program, your techs can flag upsell opportunities in the notes field of each estimate, which becomes fuel for the reactivation message.
The 3-hour automation that does the heavy lifting
We built a step-by-step recipe for this that works with ServiceTitan, Jobber, Housecall Pro, and GoHighLevel. No code required, and setup time is about three hours.
The input is simple: export your unsold estimates from your CRM as a CSV with customer name, service type, estimate amount, estimate date, and any tech notes. That file goes into the automation.
From there, AI segments the list by age, value, and service type. It generates personalized re-engagement messages that reference the specific estimate - not a generic "hey, remember us" email, but a message that says "Hi Sarah, we sent you a proposal for your furnace replacement back in October. We wanted to check in before heating season hits."
The output is a multi-touch campaign with messages queued across SMS, email, and optionally a direct mail trigger if your CRM supports it. GoHighLevel's March 2026 CRM contractor playbook found that 20-30% of stalled estimates convert after a single automated follow-up message.
Pair that with three to five touches and you're looking at the 5-12% conversion range Relentless Digital documented. A ContractorTalk forum member summed up the manual version perfectly: "Many people say, 'Oh, I almost forgot about that, yeah let's go ahead and do it.' Or: 'I was considering a few proposals, but since you called me back first, you got the job.' I close about 1 out of 3 on the call back." This automation does that for you, at scale, while your crew is on the job.
Get the Unsold Estimate Reactivation Recipe
Get StartedWhat to say in each reactivation message
The message that works is not "just checking in." That phrase earns a delete. Reference the specific job, acknowledge time has passed, and give them a reason to act now.
For warm dormant leads (30-90 days), lead with the estimate details and offer to answer questions about scope or timing. If you're in HVAC, the framing from our HVAC service agreement growth playbook applies directly - customers respond to maintenance logic and cost-of-delay framing.
For mid-dormant leads (3-12 months), attach a value-add such as a free inspection, a material price update, or a seasonal promotion. One HVAC contractor sent a simple "winter prep" email to 2,000 past customers at a cost of $150 and booked 17 service calls averaging $285 each, for a cost per sale of $8.82.
For cold leads (12+ months), acknowledge the time gap directly. "It's been a while since we talked about your roof" is more disarming than pretending no time passed. If your estimate included specific scope details, reference them.
A ContractorTalk member reopened a stalled bathroom remodel just by sending a message comparing their Schluter spec to competing bids using hot mop and PVC liner. Scope clarity alone won the job. If you're in roofing, roofing service agreement structures give you a natural reason to re-engage old estimates with a maintenance offer.
What this costs and what you get back
Software to run this automation runs $50-$150 per month depending on your CRM and whether you're using a separate outreach tool. The recipe itself takes three hours to configure, and that's your total upfront cost.
According to The AI Trades' April 2026 analysis, AI follow-up closes 20-30% more jobs, which equates to 5-8 additional jobs per month for most contractors. At a $1,500 average ticket, that's $7,500 to $12,000 in recovered monthly revenue.
The ROI math is not close. You already paid to acquire these leads, and reactivating them is the cheapest revenue you will ever generate.
Level CFO published analysis in October 2025 showing that moving from a 60% to an 85% close rate on a $5M quoting pipeline adds $1.25 million in revenue without a single new lead. You don't need more leads. You need to stop abandoning the ones you already have.
If you're running a plumbing business with multiple trucks, this kind of CRM-driven follow-up is part of what separates a scalable plumbing operation from one that keeps chasing volume to cover margin leaks. The same principle applies to managing cash flow across a contractor business - recovered revenue from existing relationships lands faster and costs less than new lead acquisition every time.
For businesses that want to go deeper on revenue recovery before adding new services, it's worth reading how increasing average job ticket compounds with a higher close rate on existing estimates. The combination is where real margin growth happens.
Contractors who have already built out flat rate pricing systems find reactivation campaigns especially effective because the pricing is already clear and defensible in follow-up messages. There's no awkward renegotiation - just a clean re-presentation of the original scope.
Frequently Asked Questions
Do this today
Log into your CRM right now and filter for estimates older than 30 days that never converted. That number is your dead revenue pile. Export it, run it through the Unsold Estimate Reactivation recipe, and have your first campaign live by end of week. At a 5% recovery rate, you should have booked revenue within 48 hours of launch.