Which Old Roofing Leads Are Worth Re-Contacting (And Which to Let Die)
On this page
Every roofing company is sitting on money it already paid for. It is in the CRM. It is the 600 estimates you wrote two years ago and never heard back on, the storm canvass from a hailstorm three summers gone, the referral that ghosted, the homeowner who said "call me in the spring" and then never picked up. You spent gas, payroll, and ad budget to get those names the first time. Most of them are still sitting there, untouched, because nobody on your team wants to spend a Tuesday afternoon dialing people who already said no once.
Here is the uncomfortable part: a big chunk of that list is genuinely dead, and another big chunk is more ready to buy right now than the brand-new lead that just came in off a Facebook form. The whole game is telling the two apart before you spend a single phone call. That is what we are going to work through — a real, repeatable way to score an old roofing list, decide who gets a callback, who gets a postcard, and who gets archived, so your follow-up time goes where the jobs actually are.
I am going to assume you have a list. Could be 200 names, could be 8,000. The size barely matters. What matters is that almost nobody works the list with any logic at all. They either ignore it entirely or they "blast" it — same email to everyone, same script on every call — and then conclude that old leads do not work. Old leads work fine. Undifferentiated old leads do not.
Why Old Roofing Leads Go Cold (And Why That's Good News)
Before you can decide who is worth re-contacting, you need an honest map of why a lead went quiet in the first place. The reason matters more than the age. A six-month-old lead that ghosted because they were embarrassed about money is a completely different animal than a six-month-old lead that already hired your competitor. Same age, opposite value.
From thousands of dead estimates I have seen contractors sort through, the reasons cluster into a handful of buckets:
- Timing was wrong, not the need. They knew the roof was getting old but it was not raining in the living room yet. They were not ready to spend. The roof did not get younger while they waited.
- Price shock, no decision. You quoted, they went silent. They did not necessarily hire anyone — a surprising share of "lost" estimates never bought from anyone. They got scared off the number and stalled out.
- They bought from someone else. Genuinely lost. Roof is now new. These are the ones you want to find and remove, because re-contacting them is pure waste.
- Life got in the way. Divorce, job loss, new baby, a death in the family, a kitchen remodel that ate the budget. The roof project got pushed and then forgotten.
- They were never real. Tire-kickers, renters who could not authorize work, people comparison-shopping for an insurance number with no intent to proceed, a wrong number on a canvass sheet.
- You dropped them. This is the most common and the most painful. They were interested, your follow-up was sloppy, and by the time anyone called back the moment had passed. National sales data has shown for years that the majority of leads any business collects never get a meaningful follow-up at all.
The good news hiding in that list: only two of those buckets — "bought from someone else" and "never real" — are truly dead. Everything else is a timing problem, and timing problems resolve themselves. The roof ages. The storm hits. The life event passes. The budget recovers. Your job is not to revive a corpse. It is to find the people whose timing has finally come around and reach them in the window where they will actually move.
The age trap, and why "old" doesn't mean "dead"
Contractors throw away their best re-contact opportunities because they conflate two different kinds of "old." An old lead (you talked to them a while ago) is not the same as an old roof (the thing they own is wearing out). The lead aging works against you — memory fades, they may have forgotten your name. But the roof aging works for you. Every month that passes, the roof you quoted moves closer to failure. The homeowner who was a maybe at 16 years of roof age is a much warmer prospect at 19.
So the single most powerful filter on an old list is not "how long ago did we talk" — it is "how old is that roof now, and what has the weather done to it since." Hold that thought; we will build the whole scoring system around it.
Three sources of old leads, and they are not the same
When contractors say "old list," they usually mean one pile, but it is really three, and each scores differently:
- Lost estimates. People you quoted who never signed. The richest source, because they raised their hand, let you on the property, and took a written number. Most of the scoring model is built for these.
- Old canvass and inquiry names. Door-knock sheets, web-form fills, storm-season lists. Thinner records, often no roof-age note, frequently no real engagement. These lean hardest on data enrichment because your own notes give you almost nothing to score.
- Past customers. People you already roofed. Counterintuitively valuable — not for a re-roof (their roof is new), but for everything around it: gutters, repairs after a storm, a referral, the second property, the rental they own across town. Do not score a past customer on roof age the way you score a lost estimate; score them on relationship and referral potential, and keep them on a relationship drip rather than a "due for replacement" call.
Keep these three streams tagged separately in your CRM. A past customer who gets a "your roof is old, time to replace" call when you put their roof on three years ago will rightly think you have no idea who they are — and that is a referral you just lost.
The Core Idea: Score the List Before You Work It
Do not call anyone yet. If you sit down with a 1,500-row spreadsheet and start dialing from the top, you will quit by row 40, and you will have called in random order — meaning your best prospect might be at row 1,200 and you will never reach them. The work is to score and rank first, then call in priority order. That way even if you only get through the top 10% before you run out of time, you have worked the 10% most likely to buy.
Think of it like triage. An ER does not treat patients in the order they walked in. They sort by who is dying and who can wait. Your old list needs the same logic: who is ready to buy now, who is ready soon, who needs a nudge to come back, and who is a flatline.
The rest of this is the scoring rubric, the workflow to apply it, the scripts for each tier, and the math on what it is worth. I will give you a version you can run by hand in a spreadsheet and a version you can run with data you may not have on your own.
The Re-Contact Scoring Model
Score every old lead on five factors. Keep it simple enough that a sales manager can run it in an afternoon. I will give each factor a point band; you can tune the weights to your market, but start here.
Factor 1 — Roof age now (0 to 30 points)
This is the biggest single factor, because a roof that is aging out is a need that does not go away. You are scoring the roof's current age, not its age when you first quoted.
| Estimated current roof age | Points |
|---|---|
| 20+ years (asphalt shingle) | 30 |
| 16–19 years | 24 |
| 12–15 years | 14 |
| 8–11 years | 6 |
| Under 8 years / recently replaced | 0 |
A standard architectural asphalt shingle roof in most of the country is functionally due for replacement somewhere in the 18-to-25-year range, sooner in harsh-sun or hail-prone markets and later in mild ones. (Three-tab is shorter-lived; premium and non-asphalt systems run longer.) The point is that once a roof crosses into its late teens, the homeowner's question shifts from "if" to "when," and "when" is a conversation you can win.
The hard part is knowing the current age. If your original notes say "roof looked ~15 years old in 2021," then in 2026 it is pushing 20 — re-score it. If you have no age note at all, this is exactly the gap that aerial roof-age data fills, which we will cover in its own section.
Factor 2 — Storm exposure since last contact (0 to 25 points)
Did weather hit that specific address after you last talked? Not "did a storm hit the metro" — did hail or damaging wind actually pass over that roof. A roof that was a soft maybe two years ago becomes an urgent conversation if it took a real hail event last spring.
| Storm history at the address since last contact | Points |
|---|---|
| Significant hail (1"+) or damaging wind event | 25 |
| Moderate hail (0.75"–1") or repeated wind | 15 |
| Minor / marginal event | 7 |
| No notable storm activity | 0 |
A caution that matters here, and that we will return to: storm exposure is a reason to inspect and document, not a promise of anything. You are scoring "is there a plausible storm-damage conversation to be had," not "is there an approved claim waiting." Keep that line clean and you keep yourself out of trouble.
Factor 3 — Original engagement level (0 to 20 points)
How real were they the first time? Pull this from your old notes. A homeowner who had you out, got a full estimate, and asked follow-up questions is a far better bet than a name scribbled on a door-knock sheet.
| Original interaction | Points |
|---|---|
| Full inspection + written estimate delivered | 20 |
| Came out, talked, no formal estimate | 13 |
| Phone/online inquiry only | 8 |
| Cold canvass name, never engaged | 3 |
The logic: someone who let you on their roof and took a written number has already cleared the trust hurdle. You are not starting from zero. You are picking up a relationship that stalled.
Factor 4 — Reason it stalled (−15 to +15 points)
This is where you apply the "why did it go cold" buckets from earlier. Some reasons add points; some subtract them hard.
| Recorded reason for no-sale | Points |
|---|---|
| "Call me later / not yet / next year" (timing) | +15 |
| Price / budget stall, no decision made | +8 |
| Went quiet, reason unknown | +3 |
| Life event (move pending, financial hardship) | 0 |
| Confirmed bought from a competitor | −15 |
| Renter / could not authorize / wrong contact | −15 |
The two −15 rows are your kill switches. A confirmed competitor sale or a non-decision-maker drops the lead so far that it should never surface in your call queue, no matter how old the roof is — because that roof is new now, or that person can never say yes.
Factor 5 — Contactability and recency (0 to 10 points)
Can you even reach them, and is the relationship cold-cold or just cool?
| Contact situation | Points |
|---|---|
| Good phone + email, last contact under 18 months | 10 |
| Reachable, last contact 18–36 months | 6 |
| Reachable, 3+ years | 4 |
| Stale or missing contact info | 0 |
Now add it up. Maximum is roughly 100 points. Sort the whole list descending. Here is how to read the bands:
| Total score | Tier | Action |
|---|---|---|
| 70–100 | A — Call this week | Personal call from your best closer, full custom approach |
| 45–69 | B — Work the queue | Scheduled call + mail, within 30 days |
| 25–44 | C — Nurture | Mail / drip only; no live-call time yet |
| Under 25, or any −15 flag | D — Archive | Remove from active follow-up; stop spending on them |
This single sort changes everything. Instead of "work the old list" (which never happens), your sales manager hands a rep 40 A-tier names with a reason next to each one. That is a half-day of calls that can genuinely produce signed jobs.
A worked example
Let us run three real-shaped records through it.
Record A — the Hendersons. Estimated roof age now: 21 years (28-ish on the band → 30 points, call it 30). A 1.25" hail event crossed their block 14 months ago (25). You delivered a full written estimate in 2022 (20). Reason it stalled: "call us next year, we want to do it but not this season" (+15). Good cell and email, last spoke 14 months ago (10). Total: 100. This is an A-tier lead you would be foolish not to call. The roof is old, it took a storm, they liked you, and they literally told you to call back. This is a layup that has been sitting in your CRM rotting.
Record B — Mr. Alvarez. Roof age now ~13 years (14). No notable storms since (0). Phone inquiry only, never came out (8). Stalled on price, no decision (+8). Reachable, last contact ~2 years ago (6). Total: 36. C-tier. Do not burn a live call here yet. Put him on a postcard and email drip. The roof is not old enough to be urgent and he never really engaged. Revisit in 18 months when the roof crosses 15.
Record C — the Parkers. Roof age unknown, but a neighbor told your canvasser they re-roofed last year. Confirmed they hired someone else (−15). Archive immediately. Re-contacting them is pure waste, and worse, it annoys a household that might otherwise refer you. Get them out of the active queue.
Three records, three completely different correct actions. That is the entire value of scoring before dialing.
What Pros Get Wrong When Reviving Old Leads
I have watched a lot of contractors try to "reactivate the database" and torch the opportunity. The mistakes are consistent and avoidable.
Mistake 1: Blasting the whole list with one message. The single "We're running a spring special, call us!" email to 1,500 people gets a 0.2% response and trains everyone to ignore you. Worse, it hits the D-tier names too, so the renter and the guy who bought from your competitor both get a message that makes you look desperate. Segment first. The A-tier person needs a personal call referencing their actual roof. The C-tier person needs a soft, helpful touch. Those are not the same message.
Mistake 2: Apologizing for following up. Reps open with "Hi, sorry to bother you, I know it's been a while, I was just wondering if maybe you were still possibly thinking about the roof..." That is the sound of a no. You are not bothering them. Their roof is two years older and possibly storm-hit since you last talked. You have a reason to call. Lead with the reason, not the apology.
Mistake 3: Re-quoting the old number. Material and labor costs have moved. If you quoted a roof in 2021 and you re-contact in 2026 quoting the same figure, you either lose money or have to walk the price up later, which kills trust. Re-contact to re-open the conversation and re-inspect, not to honor a stale price. The honest line is "costs have changed since we last talked, and frankly your roof is older now too — let me get back out and give you a current, accurate number."
Mistake 4: Treating the old list as a one-time event. "We worked the database in January" is not a strategy. The list is a renewable asset. Roofs keep aging, storms keep hitting, life events keep resolving. A name that scored C-tier this year will score A-tier in two years on its own. The contractors who win run the scoring on a cadence — quarterly is plenty — so newly-ripened leads surface automatically.
Mistake 5: No system to record why this time was a no. If you re-contact a lead and they say no again, your CRM needs to capture the new reason, because that reason re-scores them. "Still not ready, roof's leaking a little though" is a +15 timing note that says call back in 90 days, not 24 months. If your rep just marks it "no" and moves on, you lose the intelligence and re-contact at the wrong time again.
Mistake 6: Letting the rep cherry-pick the easy names. Hand a rep an unsorted list and they will skim it, call the three people they personally remember, and call it a day. That is the opposite of working the highest-value names. The scoring exists precisely to take that decision away from the rep — the queue is sorted, they call from the top, and the A-tier 21-year storm-hit roof gets dialed before the rep's buddy from church who is barely a B. If your CRM lets reps reorder their own queue, lock it.
Mistake 7: No clean handoff between marketing and sales. Often the person who can run the data scoring (a sales manager or an outside tool) is not the person making the calls. If the scored list lands in a spreadsheet nobody opens, none of this happens. Build the handoff: scored list goes into the CRM as a tagged, dated call campaign with the one-line reason on each record, and the rep works it like any other queue. The scoring is worthless if it does not change which name the rep dials next.
Mistake 8: Ignoring contact-rate reality. You will not reach most people on the first try. That is normal. A serious re-contact effort is a sequence — call, voicemail, text, email, call again — over a couple of weeks, not a single dial. If you score 40 A-tier names and make 40 single calls, you will connect with maybe a dozen and conclude "old leads don't work." Run the sequence and the connect rate climbs substantially. Respect the rules on this, though: honor do-not-call registrations and any prior opt-outs, keep call hours reasonable, and have written consent on file before you text anyone, because the texting rules are strict and the penalties are real.
Building the Re-Contact Workflow
Scoring tells you who. The workflow is how. Here is a clean ten-step process a sales manager can stand up in a week.
- Export the whole list to one place. Every old estimate, every dead lead, every past customer. One spreadsheet or one CRM view. Deduplicate by address — the same household may exist three times from three different campaigns.
- Pull the original notes onto each row. Reason for no-sale, date of last contact, whether an estimate was delivered, original roof-age guess. If your old records are thin, you will lean harder on the data-enrichment step below.
- Re-estimate current roof age. Take the original age note and add the years elapsed. Where you have no note, flag the row for enrichment.
- Check storm exposure since last contact. For each address, did a real hail or wind event pass over it after the date you last talked? Public storm data exists for this; per-roof modeling does it more precisely.
- Score all five factors and total them. Sort descending. Assign A/B/C/D tiers.
- Kill the D-tier. Move confirmed competitor sales, renters, and bad-contact rows to an archive. They never see a live call. Be ruthless — every D-tier name you leave in the queue steals time from an A.
- Route A-tier to your best closer for live calls this week. Each name comes with a one-line reason: "21-yr roof, hail 14 mo ago, said call back." The rep is not cold-calling; they are following up with context.
- Route B-tier to a call-plus-mail sequence over 30 days. Lower priority, still live calls, but supported by a postcard so the name is warm when you dial.
- Route C-tier to mail and email drip only. No live-call time yet. These are future A-tier leads marinating. A postcard every quarter keeps your name on the roof when the timing finally turns.
- Re-score the whole list quarterly. Roofs aged, storms hit, no-reasons got recorded. Newly-ripe leads float to the top automatically. This is the step that turns a one-time database cleanup into a permanent pipeline.
How long should the A-tier sequence be?
A connect is rarely one call. Here is a sequence that respects the prospect and still gets through:
| Day | Touch | Notes |
|---|---|---|
| 1 | Call + voicemail | Reference the roof and the reason. Leave a real message. |
| 2 | Text (only if consented) | Short, specific: "Following up on your roof at 14 Oak — got a quick question." |
| 4 | Plain text, from a person, with the specific reason. | |
| 7 | Call + voicemail | Different time of day than day 1. |
| 11 | Call | Last live attempt. |
| 12 | Postcard / drop | Falls back to nurture if still no answer. |
If you get nothing after that, demote to C-tier nurture rather than archiving — the roof keeps aging, and they may surface on their own.
The Data Gap — And Where RoofPredict Fits
Everything above assumes you can answer two questions for every address: how old is the roof now, and what has the weather done to it since you last talked. For a lot of old lists, you cannot, because the original notes were thin or nonexistent. A canvass sheet from a storm three years ago might be 400 addresses with no roof-age guess at all. You can hand-score the records that have notes, but the rest are a black hole — and that black hole might be where half your A-tier leads are hiding.
This is the specific problem RoofPredict exists to solve. You give it your old list — the addresses you already paid to collect — and it enriches each one with two things you usually cannot get on your own: a roof-age range read from aerial imagery, and the storm history modeled on that specific roof, rather than the whole metro it sits in. Then the whole list comes back ranked, so the addresses most likely to be due float to the top.
A couple of honest points about what that does and does not mean, because overselling this stuff is how you lose a roofer's trust:
- Roof age comes back as a range, not a birthday. You will see something like "18–22 years," not "installed March 2006." A range is exactly what you need to score the age factor — it tells you which side of the replacement line a roof sits on — but anyone who promises an exact install date off a photo is selling you something that does not exist.
- Storm modeling is odds, not proof. The difference between RoofPredict and a hail map is the difference between "it hailed somewhere in this ZIP" and "here is how hard the storm likely hit this roof, given its pitch, exposure, and the storm's actual track." That is far more useful for ranking. But it is a model of likelihood, not a damage report. Nobody knows there is damage until somebody gets up there and looks. The model tells you which ladders are worth setting up.
- It does not replace your judgment or your notes. Where you already know the reason a lead stalled, that note still drives the score. RoofPredict fills the roof-age and storm factors — the two hardest to get yourself — and leaves the human factors to you.
In the scoring model, this maps cleanly: RoofPredict supplies Factor 1 (current roof age) and Factor 2 (storm exposure) for every address, including the ones your old notes left blank. You bring Factors 3, 4, and 5 from your own records. Put together, a canvass sheet that was a useless pile of names becomes a ranked call list where the top 50 are 20-year roofs that took a storm — the exact A-tier you would never have found by hand. That is the whole idea: the names are yours, the work is yours, the data just tells you which ones to work first.
What it is not: it is not a lead service. It does not sell you the homeowner, and it does not sell the same homeowner to four of your competitors. It sharpens the outbound you were already going to do against a list you already own.
Scripts and Approaches by Tier
The right thing to say depends entirely on the tier and the reason. Here are field-tested openers. Adapt to your voice — wooden scripts read as telemarketing.
A-tier, timing stall ("call me later" lead)
"Hi Mrs. Henderson, it's Dave with Summit Roofing — we came out a couple years back and looked at your roof. You'd mentioned the timing wasn't right then, so I wanted to circle back. Two things have changed: your roof's a couple years older now, and we've actually had some real hail come through your area since we talked. I'd like to come back out, take another look, and give you a current, honest read on where it stands. No pressure — worst case, you find out you've got more life left than you think. Does a weekday or weekend work better?"
Why it works: it gives a reason for the call (older roof + storm), it does not apologize, it offers a low-stakes next step (an inspection, not a sale), and it leaves them an out that builds trust.
A-tier, storm exposure since last contact
"Hi Mr. Lee, Dave with Summit. We talked a while back about your roof. The reason I'm calling — there was a significant hail event over your neighborhood last spring, and I'm getting back out to the homes we've worked with to document any roofs that took a hit. I'd like to get up there, take photos, and put together a thorough record of the roof's condition. If there's storm damage worth documenting, you'll have a complete file to give your insurance company. If it's fine, you'll know that too. Either way you come out ahead. When's good?"
Notice what this does not say. It does not promise an approved claim, it does not say the word "free," it does not mention their deductible, and it does not say you will "handle" or "fight" the insurance company. We will dig into exactly why in the next section.
B-tier, price/budget stall
"Hi, it's Dave at Summit. We quoted your roof a while back and I know the number gave you pause — totally fair. I'm reaching back out because a few things are different now: there are more financing options than there used to be, and honestly your roof has aged since we last talked, so I'd rather get you a fresh, accurate look than have you working off an old number. Can I get back out and re-walk it with you?"
C-tier nurture (mail/email, no live call)
Keep it helpful and low-key. A postcard or short email with a genuinely useful angle: "Your roof is getting to the age where it's smart to know exactly where it stands. Here's what to look for from the ground [3 quick signs]. When you want a real inspection, we're a call away." You are not selling. You are staying top-of-mind so that when their timing turns, your name is the one on the roof.
What to say when they say no again
The goal of a re-contact is not always a yes today. Often it is an updated reason that re-scores them correctly. So when they decline, dig gently: "No problem at all — is it more a timing thing, or did you end up getting it taken care of?" Their answer is gold. "Timing" keeps them in your pipeline at the right tier. "Got it done last year" tells you to archive and stop wasting touches. Record the new reason every time.
Storm Leads: The Compliance Line You Must Not Cross
A lot of the most valuable old leads are storm leads — names you collected canvassing after a hail or wind event, or homeowners whose roofs have taken a storm since you last talked. Re-contacting them is completely legitimate and often very productive. But this is the area where roofers get themselves into legal trouble, so be precise.
What you can do, and should: inspect the roof, document the condition thoroughly with photos and notes, identify storm-related damage as a matter of fact, and write an accurate, detailed repair estimate aligned to standard estimating practice. You can hand that complete documentation package to the homeowner. You can state plainly and truthfully what your scope of work is and what your estimate covers. That documentation is genuinely valuable — a homeowner with a thorough, professional condition report and a clear estimate is in a far stronger position than one with nothing.
What you cannot do — and where contractors cross into unlicensed public adjusting, which is illegal in most states — is anything that amounts to handling the claim for the homeowner. Specifically, do not say or imply, in your scripts, your mail, or your ads, that you will:
- "Get the claim approved" or guarantee any approval, payout, or settlement amount. You do not control what the insurer decides. The homeowner files; the insurer decides coverage.
- "Handle," "manage," "negotiate," or "fight" the claim or the adjuster on the homeowner's behalf. That is adjusting, and you are not licensed to do it.
- Interpret the policy or coverage. "That's covered" is a coverage opinion you are not allowed to give. The carrier interprets the policy.
- Promise anything about the deductible. Do not say it is waived, absorbed, covered, or gone. In many states, eating a customer's deductible is insurance fraud, full stop.
- Advertise a "free roof." It is a magnet for trouble and it implies the deductible thing above.
- Call yourself a "claims specialist" or "insurance specialist." Courts have held that even self-labeling that way can constitute unlicensed public adjusting. A roofer is a roofer.
The clean mental model: you document and estimate your work on your scope — that is contracting, and you are good at it. The homeowner files the claim and the insurer decides coverage — that is the claims process, and it stays strictly between those two parties. Stay on the document-and-estimate side of that line and your storm re-contacts are both productive and safe. Wander across it and you risk your license and worse. When in doubt on specific wording, get it in front of counsel for your state — the rules vary and they have teeth.
This is also why the storm-exposure factor in the scoring model is framed as "a reason to inspect and document," never "an approved claim waiting." The data tells you which roofs likely took a real hit and are worth getting a ladder on. What you find up there, and what the insurer ultimately does with it, are separate matters you do not promise.
The Math: What an Old List Is Actually Worth
Let us put numbers on why this matters, using conservative, made-up-on-the-spot figures you can swap for your own — these are illustrative, not claims about your results.
Say you have 1,500 old leads. You score them and the distribution shakes out like this:
| Tier | Share | Count | Action |
|---|---|---|---|
| A | 8% | 120 | Live calls this week |
| B | 18% | 270 | Call + mail, 30 days |
| C | 44% | 660 | Nurture drip |
| D | 30% | 450 | Archive |
Now work just the 120 A-tier names with a real sequence. Suppose you connect with half of them over two weeks (60 conversations), book inspections with a third of those (20 inspections), and close a quarter of the inspections (5 jobs). Five signed re-roofs off a list that was sitting dead in your CRM. At a typical residential re-roof value, that is a meaningful number against a cost of basically a week of one rep's phone time. The leads were already paid for. The only new cost was the discipline to score and sequence.
Now notice what the scoring saved you: you did not spend that week dialing the 450 D-tier names, where your connect-to-job rate would have been near zero and you would have annoyed a pile of people who already bought elsewhere. The value is as much in who you didn't call as who you did.
And the C-tier 660? Those are not dead. They are early. Run the quarterly re-score and a chunk of them cross into A-tier on their own as roofs age and storms hit — at which point they cost you nothing extra to surface. That is the renewable-asset idea made concrete.
Cost-of-doing-nothing
The alternative to all this is the default: the list sits untouched, the A-tier names age until a competitor's canvasser knocks first, and the institutional memory of why each lead stalled decays until the records are worthless. Every quarter you do not run the scoring, the ripe leads in your own database quietly get picked off by someone else. You already paid to acquire those names. Letting them rot is paying twice — once to get them, once in the jobs you forfeit.
A Simple Quarterly Cadence
To make this stick, put it on a calendar. Here is a lightweight cadence that keeps the old list producing without taking over anyone's job.
- Once a quarter (half a day): Re-run the scoring. Update roof ages (add three months to everything), pull new storm events, fold in any new no-reasons recorded since last quarter. Re-sort. Hand the new A-tier list to your closer.
- Weekly (ongoing): Work the current A-tier through the touch sequence. Record every new reason precisely. Demote no-answers to nurture, archive the confirmed-deads.
- Monthly (automated): C-tier nurture mail/email goes out. Set it and forget it.
- Annually: Audit the archive. Even D-tier can change — a renter becomes a buyer somewhere else, a competitor's roof from five years ago is now... five years old. Most stay dead. A few resurrect.
The whole thing runs on a few hours a quarter once it is set up. Compare that to the cost and uncertainty of buying fresh leads, and working your own old list is the highest-return outbound a roofing company can do — because the acquisition cost is already sunk and the only variable is whether you have the discipline to work it smart.
Putting It Together
The question "which old roofing leads are worth re-contacting" has a clean answer: the ones whose roof is now old enough to be due, that took a storm since you last talked, that engaged with you the first time, and that stalled on timing rather than a competitor's signature. Score for those four things plus contactability, sort the list, and work it top-down. Kill the confirmed-deads without mercy. Re-score quarterly so newly-ripe leads surface on their own.
The two factors that are hardest to get — current roof age and per-roof storm exposure — are exactly the gap a roof-age range from aerial imagery plus storm modeling on each roof is built to fill. That is what RoofPredict does to a list you already own: it enriches your old leads with the roof-age and storm signals you usually cannot see, and ranks them so the doors most likely to be due rise to the top. You still bring the relationship history and the human judgment. The data just makes sure your follow-up time lands on the roofs that are actually ready.
If you want to see it on names you already have, hand over a slice of your old list — ideally one where you already know how a few of them turned out — and check whether the roofs it flags as due match what you know on the ground. The honest test of any targeting tool is whether it ranks the roofs you already trust your gut on near the top. Run that test, then decide.
Your next several jobs are probably already in your CRM. The work is not finding new names. It is finding the right ones in the names you already have — and calling them in the right order.
FAQ
How old is too old for a roofing lead to be worth re-contacting?
There is no age cutoff on the lead itself — a five-year-old lead can be more valuable than a five-month-old one. What ages out is the relationship, not the opportunity. Score the current roof age, recent storm exposure, original engagement, and the reason it stalled. A lead that stalled on timing with a now-20-year-old roof is worth calling no matter how long ago you talked. A lead that confirmed they bought from a competitor is dead at any age.
What's the single most important factor in deciding which old leads to call back?
Current roof age, because a need that comes from a wearing-out roof does not disappear — it intensifies every year. The lead aging works against you (memory fades) but the roof aging works for you (it moves closer to failure). A homeowner who was a soft maybe at 16 years of roof age is a much warmer prospect at 19 or 20. Pair roof age with whether a storm hit that specific address since you last talked, and you have the two factors that drive most of the score.
Should I re-quote my old estimate price when I re-contact a lead?
No. Material and labor costs move, and the roof itself is older now, so an old number is either a money-loser for you or a trust-killer when you have to walk it up later. Re-contact to re-open the conversation and schedule a fresh inspection, not to honor a stale price. Be honest about it: costs have changed and the roof has aged, so you want to get back out and give a current, accurate number.
How do I know the current age of a roof if my old notes don't say?
Where you have an original age note, add the years elapsed since you wrote it. Where you have nothing, you need a current read. Aerial roof-age estimates from imagery give you a range — something like 18 to 22 years — which is exactly what you need to score whether a roof sits on the replacement side of the line. Anyone promising an exact install date off a photo is overselling; a tight range is both achievable and sufficient for ranking.
Can I legally call back homeowners about storm damage on their roof?
Yes, with care. You can inspect, document the condition with photos, identify storm damage as a matter of fact, and write an accurate repair estimate to hand to the homeowner. What you cannot do is handle, negotiate, or 'fight' the claim, interpret their policy, promise an approval or payout, say anything about their deductible, or advertise a free roof — those cross into unlicensed public adjusting, which is illegal in most states. Document and estimate your scope; the homeowner files and the insurer decides coverage.
How many times should I try to reach an old lead before giving up?
One call is not a re-contact effort. Run a sequence over a couple of weeks — call plus voicemail, a text only if you have consent on file, an email, then a second and third call at different times of day, and a postcard fallback. Most people will not answer the first attempt, so a single-dial campaign badly understates how many old leads are reachable. If the full sequence gets nothing, demote to nurture rather than archiving, since the roof keeps aging.
What's the difference between a hail map and per-roof storm modeling for scoring leads?
A hail map tells you it hailed somewhere in a ZIP code. Per-roof storm modeling estimates how hard a storm likely hit a specific roof, factoring in the storm's actual track and the roof's exposure. For deciding which old leads to call, the per-roof version is far more useful because it ranks individual addresses by likely impact rather than treating a whole metro the same. Keep in mind it is a model of likelihood, not a damage report — it tells you which roofs are worth getting a ladder on, not that damage exists.
Is working my old list better than buying new leads?
For most roofing companies, yes, because the acquisition cost on your old list is already sunk. You paid to collect those names once; the only new cost is the discipline to score and sequence them. Old leads are also exclusively yours, unlike purchased leads where the same homeowner is often sold to several competitors at once. The catch is that an unscored old list does not work — undifferentiated blasting fails, which is why people wrongly conclude old leads are worthless.
How often should I re-score my old roofing lead list?
Quarterly is plenty. Each quarter, age every roof by three months, pull in any new storm events, and fold in new no-reasons recorded since last time, then re-sort. This turns a one-time database cleanup into a permanent pipeline, because leads that scored as nurture-only this quarter will rise into call-worthy tiers on their own as roofs age and storms hit. The whole re-score takes a few hours once the system is set up.
Does RoofPredict sell me the leads or just help me work my own?
It is not a lead service and does not sell you homeowners. You bring your own old list — names you already paid to collect — and it enriches each address with a roof-age range and storm history modeled on that specific roof, then ranks the list so the roofs most likely to be due rise to the top. It sharpens the outbound you were already going to do, and the data fills the two hardest factors to get yourself: current roof age and per-roof storm exposure.
The Roofline by RoofPredict
Stay Ahead of Roofing Market Changes
Join The Roofline by RoofPredict for weekly roofing intelligence: material price signals, storm demand, insurance and regulatory updates, sales tactics, and local contractor opportunities.
Sources
- Asphalt Roofing Systems and Service Life — nrca.net
- Asphalt Roofing Manufacturers Association — Shingle Performance — asphaltroofing.org
- IBHS — Hail and Roof Damage Research — ibhs.org
- NOAA National Severe Storms Laboratory — Hail Basics — nssl.noaa.gov
- NOAA Storm Prediction Center — Storm Reports — spc.noaa.gov
- National Weather Service — Severe Weather Definitions — weather.gov
- FTC — Telemarketing Sales Rule and Do Not Call — ftc.gov
- FCC — Stop Unwanted Calls and Texts (TCPA) — fcc.gov
- National Association of Insurance Commissioners — Public Adjusters — naic.org
- Texas Department of Insurance — Public Insurance Adjusters — tdi.texas.gov
- International Residential Code — Roof Covering (Chapter 9) — codes.iccsafe.org
- OSHA — Fall Protection for Roofing Work — osha.gov
- U.S. Census Bureau — American Housing Survey — census.gov
- RoofPredict — roofpredict.com
Related Articles
How to Close a Roofing Inspection at the Kitchen Table
The kitchen table is where a roof inspection turns into a signed agreement. Here is the exact sequence, the documents, the words, and the compliance lines that decide whether you walk out with a job.
How to Stop Relying on Storms for Roofing Revenue (Build a Year-Round Pipeline)
Storms pay well and then vanish for two years. Here is how working roofers build a pipeline that produces jobs whether or not it hails.
How to Stop Losing Roofing Jobs on Price (Without Becoming the Cheapest Bid)
Most roofing jobs aren't lost on price. They're lost on framing, timing, and who you bid to in the first place. Here's the operational fix.