Roofing Lead Reactivation: How to Revive Unsold Estimates
Every unsold roofing estimate in your CRM is a homeowner you already paid to find, drove out to, climbed up to inspect and priced. Many of them sit untouched. Roofing lead reactivation is the fix: you re-contact those unsold estimates and dormant leads by text, email and voicemail on a short, fixed sequence, and you aim for a booked inspection or a re-quote instead of a sale on the spot. Tailwinds Ops, another automation company that sells to roofers, describes it the same way: a fixed sequence across those channels that needs no new ad spend, because the cost of reaching those homeowners is already behind you.
No one publishes a neutral benchmark for how well this works, so this guide gives you the method, a capped sample sequence, and a way to measure your own results. It makes no promises about response rates or booked jobs.
What roofing lead reactivation is (and isn't)
It is not buying a new list or running new ads. It is working the pile you already have: estimates that went quiet after an inspection, storm-season leads you never closed, and homeowners who said "let me think about it" eight months ago.
It also isn't the generic CRM cleanup. If you want the general method for any business, read how to reactivate dead leads in your CRM, step by step. This guide adds the roofing parts the generic version skips:
- Long decision cycles, because a roof is a big purchase and homeowners take time.
- Several bids. Homeowners commonly collect more than one, so "they went with someone else" is a real possibility.
- Insurance claims, where the homeowner may be waiting on an adjuster, not ignoring you.
- Seasons. A lead that went cold in January may be ready after the spring thaw, and a lead from last storm season may be worth a check-in.
Before you text anyone: the consent check
Not every old lead can be texted just because they once asked for an estimate. Several compliance explainers say an old inquiry or a past job does not by itself cover automated marketing texts. According to Agency Logics, the "established business relationship" idea does not stretch to bulk automated texts. That is a vendor's reading, so treat it as a reason to check, not as the final word.
Explainers such as Tratta describe that relationship as a purchase within the past 18 months or an inquiry within the past 3 months. By that description, an estimate request from last spring may already be outside the window. The wording and the rules vary, so confirm with a qualified professional.
What you can do yourself, without giving legal advice to anyone:
- Look at how each lead gave you their number: a web form with a consent line, a phone call, a door knock, or a lead vendor.
- Split the list into leads with documented texting consent and leads without.
- For the second group, plan a call task or an email instead of a text, until a qualified professional tells you what applies.
One line to keep in mind: consent and marketing rules for texts and calls exist (TCPA, state laws and platform rules), so check with a qualified professional before you send. Nothing here is legal advice, and no workflow is compliant just because it is automated.
Step 1: Pull and sort the list
Export every estimate that did not close. Add these columns if your CRM doesn't have them:
- Estimate date and amount
- Job type (full replacement, repair, storm damage)
- Lead source (retail, insurance claim, lead vendor, referral)
- How they gave consent to be contacted
- Last contact date and what was said
Sort by age first. If you aren't sure where "slow" ends and "dead" begins, what counts as a dead lead and how long is too long covers the cutoffs. Estimates that are still recent belong in your normal quote chase, and quote follow-up that wins jobs covers that.
Step 2: Remove who should never get a message
Before anything goes out, cut:
- Anyone who ever replied STOP or said not interested.
- Past customers with an open complaint or a warranty issue.
- Anyone already booked or in progress under a different record.
- Leads with no documented consent, if you are texting (move them to the call or email list).
Step 3: Triage why they went quiet
One message does not fit everyone. A homeowner who is waiting on an insurance adjuster needs a different note than one who got a cheaper bid. Sort the list into these buckets, and write one sample message for each:
| Why they went quiet | What the message does |
|---|---|
| Price | Offers to walk back through the scope and options |
| Got another bid | Offers a second look at the other quote, no pressure |
| Waiting on insurance | Asks where the claim stands and offers to help with the paperwork side |
| Financing | Asks if timing or payment is the holdup |
| Timing or season | Checks in ahead of the season |
| No longer needs it | Gives a clean way to say so |
Most of the time you will not know which bucket a lead belongs to. In that case, use a neutral first message and let their reply sort them.
Step 4: Run a capped sequence
Here is a sample cadence. It is an example to adapt, not a number backed by data. Four touches over a few weeks, then stop.
- Trigger: The estimate has been marked unsold for 60 days (sample number). Consent check passed.
- Touch 1, text (day 1): Sample message: "Hi Dana, it's Mike from Ridgeline Roofing. I'm going through last year's estimates and wanted to check in on yours. Still thinking about the roof, or did plans change? Happy to answer questions either way."
- Touch 2, email (day 4): A short note with the original scope and one question: is the holdup price, timing or something else?
- Touch 3, call task or voicemail (day 9): The estimator gets a task to call. If the call isn't answered, leave a short voicemail asking for a call back.
- Touch 4, text (day 18): Sample message: "Last note from me, Dana. If the roof is still on your list, I can re-check the numbers or set up a quick inspection. If not, no worries, and just reply STOP if you'd rather not hear from us."
- Stop rule: Any reply of STOP or not interested ends the sequence and marks the contact do-not-contact in the CRM. Any other reply pauses the sequence and goes to a person.
- Handoff: A real reply goes to the owner or estimator, not back into automation.
(Mike, Dana and Ridgeline Roofing are made up for this example.)
What you see: a short list each morning of replies waiting for you, with the original estimate attached. You decide what goes back out.
Step 5: Track your own numbers
Since there is no reliable roofing benchmark, you are the benchmark. Keep a simple table like this sample and fill it in per batch:
| Batch | List size | Messages sent | Replies | STOP replies | Inspections booked |
|---|---|---|---|---|---|
| Sample batch A | 100 | 100 | ? | ? | ? |
(Sample layout only. The numbers are yours to fill in.)
After two or three batches you will know what your list does. That is worth more than any figure from a software vendor's blog.
Checklist before you launch
- List exported and sorted by estimate age and job type
- Consent checked and the list split by how each lead came in
- Do-not-contact, complaint and booked leads removed
- Why-they-went-quiet buckets written, one sample message each
- Sequence capped at 4 touches, with a close-out message
- Stop rule on any STOP or not interested reply
- A person sees every real reply
- Tracking table ready
- A qualified professional has looked at your consent approach
DIY or hand it off
If you have a CRM and an hour a week, you can run this by hand. Export the list, send the first touch yourself, and log the replies. It is slow, but you'll learn which messages work for your market.
The part that tends to break is consistency. Estimators are on roofs, and touch 3 and touch 4 don't get sent. That is the part worth handing off.
How Riot Digital can help
Riot Digital builds "AI employees" for service businesses. Lead reactivation on your existing list is part of the Operator tier, which starts at $6,000 install with a custom retainer, as published on the pricing page. The AI employee drafts the messages and you approve them by default, so nothing goes out until you've seen it. Every tier has a 30-day tune-in, you own all accounts and data, and you can cancel anytime after 90 days. The work starts by looking at your current workflow, and Riot Digital explains each workflow step by step before you pay. No client results are published, so none are claimed here.
Next step
If you want to see how this would work around your CRM and your estimates, the free strategy call is where we look at your current workflow and pick the one or two automations worth doing first. Book a Free Strategy Call
Common questions
What is roofing lead reactivation?
It means re-contacting unsold estimates and dormant leads already in your CRM, by text, email and voicemail on a short fixed sequence. The goal is a booked inspection or a re-quote, with no new ad spend.
How many times should I follow up on an old roofing estimate?
There is no reliable published number. A capped sample is four touches over a few weeks, ending with a polite close-out message. Track your own replies and booked inspections to find what fits your list.
Can I text people who asked for a quote a year ago?
Not automatically. An old inquiry may not cover automated marketing texts, and the rules depend on how the lead gave consent and on your state. Check with a qualified professional before you send.
What should I do when someone replies STOP?
End the sequence right away and mark the contact do-not-contact in your CRM. Any other reply should pause the sequence and go to a person.
Can I do this myself, or do I need an agency?
If you have a CRM and an hour a week, you can run it by hand. The part that usually slips is consistency on the later touches, which is the part worth handing off.
Riot Digital installs AI employees for small businesses: your inbox, calendar, and follow-ups, handled 24/7 with your approval. Founder-operated from Prior Lake, Minnesota.
Book a call See how it works