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:

SegmentAgeApproachExpected Conversion
Warm Dormant30-90 days3-touch SMS + email in week one8-12%
Mid Dormant3-12 monthsValue-add message + seasonal offer5-8%
Cold Dormant12-36 monthsReintroduction + referral ask3-5%
Deep Cold3-5 yearsPromotional offer only1-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 Started

What 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

How old is too old to reactivate a dead estimate?

Relentless Digital's February 2026 data shows reactivation campaigns working on contacts that went cold three to five years ago. For estimates older than 90 days, pair your outreach with a refreshed offer or seasonal promotion rather than sending the original quote as-is. The older the lead, the more you need a new reason to act.

What conversion rate should I expect from a reactivation campaign?

For segmented unsold estimate rehash sequences, 5-12% of dead leads typically convert into booked jobs, according to Relentless Digital's February 2026 data. Cold-aged lists more broadly produce a 3-8% reply rate across the full sequence. Service businesses with strong brand recognition and local market presence tend to land at the higher end.

Do I need to segment, or can I blast the whole list at once?

Segment. A lead who went cold six weeks ago needs a different message and timing than someone who ghosted you 18 months ago. Treating the whole list the same way suppresses your conversion rate and burns your sending reputation.

Recent dormant leads (30-90 days) should get a three-touch sequence in the first week. Mid-dormant leads (3-12 months) need the same sequence but expect a lower reply rate and a longer decision window.

Does this work for commercial jobs or just residential?

It works for both, but the sequencing shifts. Commercial decision-makers have longer cycles and more competing priorities, so the follow-up window extends and the cadence slows down. Go phone-first rather than SMS-first for commercial, and use a more formal message tone. The segmentation logic - age, value, service type - stays exactly the same.

What software do I need to run this?

The automation works with ServiceTitan, Jobber, Housecall Pro, and GoHighLevel. If you're already on one of those platforms, you have everything you need. Add a dedicated outreach tool or a simple email platform if your CRM's built-in messaging is limited. Total software cost runs $50-$150 per month.

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.