Follow-Up Cadence for Aged Roofing Leads: A Field-Tested System
On this page
Most roofing companies are sitting on more money in their CRM than they will book from this month's new leads. The estimates you wrote eight months ago and never heard back on, the canvass cards your green rep collected last spring, the storm intakes that went cold when the carrier dragged its feet — those records are not dead. They are aged. There is a difference, and the difference is worth a season of jobs.
The problem is that almost nobody works them with any discipline. A rep texts an old prospect once on a slow Tuesday, gets no reply, and the record sits for another six months. There is no schedule, no sequence, no decision rule for when to stop. The lead doesn't go cold because the homeowner doesn't need a roof anymore. It goes cold because your follow-up is a vibe instead of a system.
This is about fixing that. We will define what an aged roofing lead actually is, why the standard "call until they buy or block you" advice fails in roofing specifically, and then lay out a concrete multi-touch cadence — by day, by channel, by script — that you can hand to a sales manager on Monday. We will cover how to segment your old list so you are not spending the same effort on a 4-year-old roof and a 22-year-old roof, how to tag everything in your CRM so the cadence runs itself, how to handle the storm-and-claims conversation without stepping over the legal line, and how to measure whether any of it is working. Real numbers, real scripts, and the edge cases that trip up even good shops.
What "aged" actually means, and why it changes everything
An aged lead is any prospect record where the original trigger — the storm, the inquiry, the inspection, the estimate — happened far enough in the past that your normal speed-to-lead playbook no longer applies. In roofing, that usually means 45 days or more since last meaningful contact, though for storm intakes the clock can start sooner.
The instinct is to treat aged leads like fresh leads that you simply got to late. That instinct is wrong, and it is the single biggest reason re-engagement campaigns flop. A fresh lead is in a buying window you triggered: they filled out a form, they flagged you down, the hail just fell. An aged lead is in a completely different psychological state. One of four things is true about them, and your cadence has to account for all four:
- They already bought — from you on a different job, or from a competitor who followed up better. This is the most common silent outcome, and it is why your first re-touch should never assume the deal is still on the table.
- They meant to, and life happened. The estimate got buried under a kitchen remodel, a job change, a kid's wedding. These are your gold. They had real intent; it just expired without anyone re-lighting it.
- They were never qualified. The roof was 6 years old and they were price-shopping for insurance reasons or a nosy neighbor told them to "get it checked." No amount of cadence converts an unqualified record into a job.
- The roof situation changed. This is the one most roofers completely miss. A roof that was "fine, maybe five years left" when you quoted it 18 months ago has now taken two more hail seasons and a windstorm. The record is aged, but the roof is newly due. That is not the same prospect anymore — it is a better one.
If you build one generic cadence and blast it at all four groups, you waste touches on group 1 and 3, annoy group 2 with the wrong message, and completely fail to capitalize on group 4. The whole game is sorting your aged list into those buckets before the first touch, and writing the cadence around the bucket.
The roofing-specific wrinkle: the asset keeps changing
In most B2C sales, an aged lead is a static person whose interest decays over time. Roofing is different because the thing you are selling against — the roof — is a physical asset that is actively degrading and getting hit by weather while the lead sits in your CRM. A car lead from 18 months ago is the same car shopper. A roof lead from 18 months ago is attached to a roof that is 18 months older, has absorbed another year and a half of UV and thermal cycling, and may have eaten a storm or two.
That means your aged list isn't only decaying — parts of it are ripening. The job of a good re-engagement cadence is to find the ripe records and lead with the reason the roof is more due now than it was when you first met. We will come back to how to surface those records mechanically, because doing it by memory does not scale past a few hundred contacts.
Before you write a single touch: clean and segment the list
You cannot run a cadence against a swamp. Spend a day on the list before you spend a dime on touches. Here is the order of operations.
Step 1: Pull everything and de-duplicate
Export every record that has gone quiet: old estimates not marked won or lost, canvass cards, web inquiries, storm intakes, past customers past their warranty window. De-dupe by address first, then by phone, then by name — in roofing the same household shows up three times because the husband called, the wife filled a form, and a canvasser knocked. Collapse those into one record per roof.
Step 2: Suppress the people you must not contact
Before any outreach, scrub against your do-not-call obligations. Any number you are going to call or text needs to clear the National Do Not Call Registry rules and the telemarketing rules the FTC enforces, and texting carries its own consent requirements. If a record never opted in and never did business with you, an aged "re-engagement" text is legally a cold text, not a follow-up — treat it accordingly. Past customers and people who requested an estimate are on much safer footing than scraped or purchased contacts. When in doubt, lead with mail and door, which don't carry the same consent exposure.
Step 3: Segment by roof-due likelihood, not by lead age
This is the step almost everyone skips, and it is the one that makes the cadence pay. Sort the cleaned list into priority tiers based on how likely the roof is due now, not on how old the lead is:
| Tier | Definition | What it means for cadence |
|---|---|---|
| A — Hot/ripe | Roof age estimate now in the 18+ year range, or has taken a verified hail/wind event since you last spoke | Full multi-channel cadence, lead with the new reason it's due |
| B — Warm | You wrote an estimate, they had real intent, roof age in the 12–18 range | Cadence focused on re-lighting the original intent |
| C — Watch | Roof age under ~12 years, no new storm, weak original intent | One light touch or annual postcard; do not spend rep time |
| D — Suppress | Already bought, wrong number, explicit no, under 8-year roof | Remove from active cadence |
The difference between an A and a C is not how long ago the lead came in — it is the condition and exposure of the roof today. A two-year-old lead on a 21-year-old roof in a market that just took golf-ball hail is an A. A six-month-old lead on a 7-year-old roof is a C, no matter how recently they inquired.
Sorting by roof-due likelihood is exactly where most shops hit a wall, because they don't have current age or storm data on those old addresses. They have a name, a phone, and a note that says "called, no answer." Figuring out which of 2,000 aged records sit on roofs that are actually due now is the data problem underneath the cadence problem, and it's worth solving before you scale outreach.
Step 4: Enrich the records with the data your scripts will need
A tier is only as good as the data behind it, and a script is only personal if the record carries something to personalize with. Before you launch, fill in three fields on every Tier A and B record so your reps don't have to dig:
- Roof-age range. Stated as a range (for example, 16–20 years), never a fake exact date. Your rep should be able to glance at the record and say "your roof was in the mid-teens when we looked" without guessing.
- Most recent area storm date and type. Hail or wind, and the date. This is the difference between "checking in" and "the storm on the 14th is exactly the kind that wears out a roof your age."
- Original interaction. What happened the first time — an estimate (and the dollar amount if you have it), a canvass card, a web form. The script references it: "we looked at your roof last spring."
The single biggest reason re-engagement touches sound robotic is that the rep has nothing specific to say. Enrich first; the specificity is what makes an aged-lead touch land.
How aged is "too aged" to bother?
There's no hard expiration date on a roofing lead, because the asset is what determines value, not the calendar. A three-year-old estimate on a roof that's now clearly at end of life is more valuable than a two-week-old inquiry on a near-new roof. That said, two practical limits apply. First, contact data decays — phone numbers disconnect, people move, roughly a tenth or more of a list can go bad each year — so the older the list, the more you should weight mail and door over calls and texts. Second, a homeowner who got an estimate from you three years ago and replaced the roof in the meantime is now a warranty and referral relationship, not a re-roof prospect; suppress them from the re-roof cadence and move them to a customer-care track. Age the cadence to the asset and the data quality, not to an arbitrary cutoff.
The core cadence framework
Now the part you came for. The framework that follows is built for Tier A and Tier B aged leads — the ones worth real rep effort. It runs across a 30-day primary window with a long-tail nurture for anyone who doesn't convert but doesn't say no.
A few principles first, because they govern every touch:
- Multi-channel beats multi-touch on one channel. Six calls to a number that never picks up is six wasted touches. Three calls, two texts, one mailer, and a door-knock across the same window will out-convert any single-channel hammering. People answer different channels.
- Lead with the roof, not with you. "Just following up on your estimate" is the weakest opener in roofing. Nobody wakes up wanting to talk to a salesperson about a six-month-old quote. They will engage about their roof — its age, a storm that hit their street, what their neighbors are doing.
- Give every touch a reason to exist. A touch with no new information ("just checking in!") trains the prospect to ignore you. Every touch should carry something: a storm date, a neighborhood note, a roof-age observation, a seasonal deadline, a photo.
- Earn the right to stop. Define your exit rule before you start so reps don't either give up after one no-answer or harass someone into a complaint. The rule below is: stop on an explicit no, a confirmed already-replaced roof, or completion of the full sequence with zero engagement.
The 30-day primary cadence (Tier A / B)
This assumes a residential re-roof prospect. Adjust the door-knock touches out if the address is outside your drive radius.
| Day | Channel | Purpose | Notes |
|---|---|---|---|
| 1 | Call | Re-open the conversation | If no answer, leave a 15-sec voicemail (script below). Do NOT lead a voicemail with "following up." |
| 1 | Text (if opted in) | Land softly in writing | Sent ~2 hrs after the call so your name shows twice. |
| 3 | Mail / door-hanger | Tangible, no-pressure | A roof-age or neighborhood-activity piece, not a coupon. |
| 5 | Call | Second live attempt | Different time of day than Day 1. |
| 8 | Door-knock (if in radius) | Highest-conversion channel | Only for Tier A. "I was working a roof two streets over…" |
| 12 | Text or email | Value, not ask | Send a photo or a seasonal note. |
| 16 | Call | Third live attempt | Last hard call attempt for most reps. |
| 22 | Re-impression | Different format than Day 3 (postcard vs. letter). | |
| 30 | Call + breakup text | The graceful close | The "I'll stop reaching out" message that often gets the reply. |
That's nine touches across five channels in 30 days. It feels like a lot until you realize most shops do one. The breakup touch on Day 30 is the most underrated in the sequence — a well-written "I don't want to keep bothering you, should I close out your file?" pulls reply rates that none of the eager touches do, because it removes the pressure and triggers loss aversion.
Timing the touches so they actually land
The day numbers above are the skeleton; the time of day is the muscle. A few field-tested timing rules:
- Vary the time of day across the three calls. If Day 1 was a 10 a.m. call, make Day 5 a 5:30 p.m. call and Day 16 a Saturday-morning call. A homeowner who never picks up on weekday mornings may answer every Saturday. Calling the same number at the same time three days running is the most common reason a contactable lead reads as "unreachable."
- Send texts mid-morning or early evening, not at 8 a.m. or 9 p.m. Beyond being annoying, off-hours texts brush up against telemarketing time-of-day rules. Keep texts and calls inside reasonable local hours and you stay both effective and compliant.
- Time the mailer to land before, not after, the call. A mailer that hits the box the day before a call means your name is already familiar when the phone rings. Coordinating mail drop dates with call days is fiddly but it measurably lifts contact rate.
- Space, don't bunch. Nine touches in 30 days works; nine touches in 9 days reads as harassment. The gaps are deliberate — they give the prospect room to come to you and keep any single channel from feeling like a pile-on.
Who works which touch
Decide up front whether one rep owns a record end-to-end or whether the cadence is split by channel. For most shops, ownership beats specialization on aged leads: the same rep who left the Day 1 voicemail should make the Day 5 and 16 calls and knock the Day 8 door, because continuity ("it's Mike again") is part of what re-warms the lead. Use a shared inbox or a junior rep for the automated texts and mailer triggers, but keep the live human touches with one named person per record.
After Day 30: the long-tail nurture
A prospect who didn't convert and didn't say no doesn't get deleted — they drop into a low-frequency nurture that keeps you top-of-mind until their roof situation changes:
- Quarterly mailer — a postcard tied to the season (pre-winter check, post-storm sweep of the area, spring inspection).
- Storm-triggered touch — the moment a verified hail or wind event hits that address's area, the record jumps back into a fresh short cadence. This is the single highest-ROI re-engagement trigger in roofing, and we'll cover it in its own section.
- Annual roof-age re-check — once a year, re-score the roof's age. When a Tier C record crosses into the 15+ range, promote it to Tier B and re-cadence.
The nurture is where the "life happened" group (bucket 2 from earlier) eventually converts. They weren't ready in month one. They're ready in month nine when the ceiling stains after a storm — and you're the roofer who's been politely, usefully in their mailbox the whole time.
Scripts that work on aged leads
Generic "checking in" scripts die on aged leads because the prospect has no live reason to engage. Every script below is built on the same spine: acknowledge the gap honestly, lead with the roof, give them an easy out, and make the next step tiny. Tiny next steps (a 10-minute look, a photo, a text-back yes/no) convert far better than "can we schedule your full inspection."
Day 1 voicemail (15 seconds, do not exceed)
"Hi Linda, it's Mike with Summit Roofing. We looked at your roof last spring — I'm not calling to sell you anything today, I just had a quick update about your roof's age and a couple storms that came through your area since then. No rush. My number's 555-0142. Talk soon."
Why it works: names the specific prior contact, explicitly disarms the sales fear, and dangles a concrete reason (roof age + storms) without delivering it — so there's a reason to call back.
Day 1 follow-up text
"Hi Linda — Mike from Summit Roofing here, following my voicemail. No pressure at all. Your roof was in the 15-year range when we looked, and your neighborhood's had a couple weather events since. Happy to send you what I'm seeing if useful — want me to?"
The yes/no ask at the end is doing real work. "Want me to?" is almost frictionless to answer compared to "can we schedule a time."
Day 5 second call (live, if they pick up)
"Linda, it's Mike at Summit — caught you at a bad time? Thirty seconds: when we looked at your roof last spring it was already in that 15-to-18-year window, which is right where shingles start giving out, and there've been a couple storms through your zip since. I'm not asking you to commit to anything. I'd just hate for you to find out the hard way during the next big rain. Would a quick 10-minute look this week be worth it, or should I just send you photos?"
The "or should I just send you photos" gives them a soft option so the call doesn't feel like a trap.
Day 8 door-knock opener (Tier A only)
"Hey, I'm Mike with Summit — we actually looked at your roof a while back. I was finishing a job a couple streets over and figured I'd swing by. I'm not here to pitch you. Two things changed since we talked: your roof's another year-plus older, and your area took some weather. Mind if I grab a couple shots from the driveway and show you what I mean? No ladder, two minutes."
Door is your highest-converting channel for a reason — you're standing there with the roof literally above you. Keep it to the driveway and the photos; the proof does the selling.
Day 30 breakup text
"Linda, I don't want to be the roofer who won't stop texting. I'll close out your file unless you tell me otherwise. If the roof ever starts acting up — stains, granules in the gutter, a leak after a storm — text me and I'll come look, no charge. Take care. — Mike"
This pulls replies because it ends the pressure and leaves a genuinely useful offer on the table. A meaningful share of "dead" leads reply to the breakup with "actually, can you come look next week."
A note on what NOT to say
Never open an aged-lead touch with "I'm following up on your estimate" or "are you still interested in getting your roof done." Both put the prospect back in the buyer-defensive crouch and give them a one-word exit ("no, we're good"). Lead with the asset — the roof's age, the weather, the neighbors — and let the estimate come up naturally once they're engaged.
Handling the common objections on aged leads
Aged-lead conversations throw a predictable set of objections. Have an answer ready for each, and notice that every good answer pivots back to the roof:
- "We already got it done." Don't argue — confirm and close cleanly: "That's great, glad you took care of it. Mind if I ask who did it, just so I update my records? And if you ever need a hand with anything, you've got my number." Then suppress the record and ask for the referral. A homeowner who replaced their roof knows three neighbors who haven't.
- "We decided not to / can't afford it right now." Acknowledge and reframe to risk, not price: "Totally understand. The reason I keep an eye on roofs your age is that the cost of waiting is usually a leak that does interior damage — that's the expensive version. I'm not asking you to do anything today; I'd just rather you have eyes on it than get surprised." Then offer the tiny next step: photos.
- "Just send me a price." A price with no fresh look is a number they'll shop. Offer documentation instead: "Happy to — let me get a couple current photos first so the number's accurate to your actual roof and not a guess. Ten minutes, no ladder needed."
- "How'd you get my number?" Be straight: "You reached out to us last spring for an estimate" or "we looked at your roof when we were working your street." Honesty here defuses the whole call; evasiveness ends it.
- "I'm busy." Take it at face value and shrink the ask to nothing: "No problem at all — want me to just text you a couple photos so you've got them whenever?" The busy objection is usually real and usually beaten by making the next step require zero of their time.
The storm-triggered re-engagement (highest ROI, easiest to mess up)
When a real hail or wind event hits an area where you have aged leads, every one of those records just got a legitimate, timely, honest reason to hear from you. This is the most valuable re-engagement trigger in roofing because it converts the "someday" prospect into a "this week" prospect overnight — and because the touch is genuinely useful, not manufactured.
The mechanics: when a storm passes, pull every aged record in the affected area, jump them out of the slow nurture, and drop them into a fresh short cadence led by the storm. But the messaging here is where roofers get themselves in legal trouble, so read the next part carefully.
Stay on the right side of the line
A storm touch is about documenting your prospect's roof — not about their insurance claim. The distinction matters legally, and in some states crossing it is unlicensed public adjusting. Here is the safe operating frame, and it is not optional:
You MAY: inspect the roof, photograph and document damage, and — if you find storm damage and they want repairs — prepare an accurate, line-item repair estimate for your own scope of work. You may state plain facts about the roof's age and the storms that hit the area.
You MAY NOT: offer to "handle" or "file" or "negotiate" the claim, tell the homeowner what their policy covers, promise the claim will be approved, promise a specific payout, say anything about waiving or absorbing or covering their deductible, or advertise a "free roof." Doing any of these for a fee can constitute unlicensed public adjusting, and even calling yourself a "claims specialist" has gotten roofers in trouble in court.
The homeowner files their own claim. The insurer decides coverage. Your job ends at thorough documentation and an honest estimate you hand to the homeowner. That's it. Build that boundary into your storm scripts so a green rep can't talk you into a regulatory complaint.
Storm re-engagement text (compliant)
"Hi Linda — Mike with Summit. The storm that came through your area on the 14th is exactly the kind that wears out a roof in your roof's age range. I'd like to come document yours and take photos so you have it on record. No charge, no obligation — you'd have the facts either way. Want me to swing by this week?"
Notice what it does and doesn't say. It offers documentation and facts. It says nothing about the claim, the carrier, coverage, payout, or the deductible. It's useful, it's honest, and it's clean.
The documentation packet you hand over
When you do inspect a storm-hit roof, the deliverable to the homeowner is a clean documentation packet — the thing that makes you look like a pro and gives them something real:
- Dated, geo-tagged photos of every slope and every damaged area, with a few close-ups that show scale (a chalk circle and a coin or tape measure next to impact marks).
- The roof's measured or estimated age range, stated honestly as a range, not a fabricated install date.
- The relevant storm date(s) for that address's area, from a real weather source.
- A line-item repair estimate for your scope, aligned to standard estimating practice.
- A plain statement that the homeowner files with their own insurer and the insurer determines coverage.
That packet is documentation, not adjusting. It's also a phenomenal sales asset precisely because it's honest — a homeowner who gets a thorough, no-BS packet from you and a vague "yeah it's probably fine" from the next guy is going to remember which one acted like a professional.
Using RoofPredict to find the ripe records in an aged list
Everything above hinges on one hard problem: out of a couple thousand aged records, which roofs are actually due now? You can't re-cadence all of them with equal effort, and sorting by lead age sorts by the wrong variable. You need to sort by the roof.
This is the gap RoofPredict is built for. Feed it your aged list — the addresses sitting in your CRM — and it scores each roof on two things that matter for re-engagement: a roof-age range estimated from aerial imagery, and storm exposure modeled per roof, rather than only "a storm passed through this zip." The difference on that second point is the whole value: a hail map tells you where it hailed; modeling the storm against each individual roof tells you which roofs in that area likely took the impact that wore them out. Paired with age, that's exactly the Tier A / Tier B / Tier C sort the cadence depends on.
In practice, it turns the segmentation step from a guessing exercise into a sortable list. The 2,000 aged records become a ranked sheet: the 18-to-22-year roofs that just took two modeled hail events float to the top as your Tier A, the 7-year roofs with no exposure drop to the bottom as Tier C or suppress. Your reps spend their calls and your money's worth of mail on the roofs most likely to be due, instead of hammering the whole list flat.
A few honest limits, because the data isn't magic. Roof age comes back as a range, not an exact install date — a re-roof you can't see from the air will read older than it is, and that's why you confirm on the inspection, not in the CRM. The storm model gives you odds, not proof that a specific shingle is cracked — it tells you which roofs are most likely worn, and the inspection is still what confirms damage. It's a prioritization tool that points your existing follow-up at the right doors; it is not a lead service and it doesn't close the job for you. What it does is make a 2,000-record re-engagement campaign actually runnable by a normal-sized sales team, because they're working a ranked list instead of a flat one.
The other place it earns its keep is the storm trigger from the last section. When an event hits, the per-roof model flags which of your aged records in that area most likely took it — so your storm cadence goes to the roofs that were probably worn out by it, not blasted at everyone within the radius regardless of roof age or actual exposure.
Wiring the cadence into your CRM so it runs itself
A cadence that lives in a rep's head dies the first busy week. The whole thing has to be encoded in your CRM — whether that's JobNimbus, AccuLynx, a HubSpot pipeline, or something simpler — so that touches fire on schedule, nothing falls through, and you can see what's working. Here's the minimum viable setup.
Tag every record with the three things the cadence reads
- Tier (A / B / C / D) — drives which cadence runs.
- Cadence stage (the day-number they're on) — drives the next touch.
- Last meaningful contact date — the clock that defines "aged" and triggers re-entry.
Everything else (roof-age range, last storm date, original estimate amount) is a property on the record that scripts pull from. If your CRM supports custom fields, create roof_age_range, last_storm_date, and original_estimate so a rep can personalize a touch in two seconds instead of digging through notes.
Build the cadence as an automated sequence with manual checkpoints
Automate the touches that don't need a human — the texts, the email, the mailer trigger. Keep the calls and door-knocks as tasks assigned to a rep, not automations, because a robocall is both worse-converting and a compliance hazard. The right pattern is: the CRM auto-sends the Day 1 text and Day 3 mailer, and it creates a task that pops on the rep's list for the Day 1, 5, and 16 calls. The human does the human touches; the system does the rest and never forgets.
Set the exit and re-entry rules explicitly
- Exit to nurture when the 30-day sequence completes with no conversion and no hard no.
- Exit to suppressed on an explicit no, a confirmed already-replaced roof, or a do-not-contact request — and honor it permanently.
- Re-enter to active cadence on a storm trigger in the area, or on an annual roof-age re-score that bumps the tier.
Write these as actual rules in the system. "We'll use our judgment" is how leads rot.
A worked example
Say you import 2,000 aged records. After de-dupe and suppression you have 1,700 contactable. Roof-age and storm scoring sorts them: 280 Tier A, 520 Tier B, 700 Tier C, 200 Tier D suppressed. You run the full 30-day cadence on the 800 A/B records, a single annual postcard on the C records, and nothing on D.
Use conservative round numbers you can sanity-check against your own close rate. If the 800 A/B records convert to booked inspections at, say, 8% over the campaign, that's 64 inspections. At your shop's inspection-to-sale rate — say a third — that's roughly 21 jobs out of a list that was producing zero last month. Run your own real rates through it; the point isn't the exact figure, it's that a disciplined cadence against a sorted list produces a countable number of jobs from records you already paid to acquire and were letting rot.
Measuring whether the cadence is working
You cannot improve what you don't instrument. Track these, and review them weekly with whoever owns the cadence:
| Metric | What it tells you | Healthy direction |
|---|---|---|
| Contact rate (% of records reached live) | Whether your channel mix and timing are right | Up; if low, your numbers are stale or your times are wrong |
| Reply rate per touch type | Which touches actually work | Find your best touch and do more of it |
| Re-qualification rate (% confirmed still due) | How good your A/B segmentation was | If low, your roof-age sort is off |
| Inspection-booked rate | The number that matters most | This is the cadence's real output |
| Cost per booked inspection | Whether re-engagement beats buying new leads | Almost always cheaper than fresh leads |
| Suppression accuracy (complaints, opt-outs) | Whether you're pushing too hard | Watch closely; a complaint costs more than a job |
The metric that surprises most owners is cost per booked inspection on re-engagement versus net-new leads. Re-worked aged leads are nearly always cheaper than buying fresh ones, because you already paid the acquisition cost the first time. If your aged-lead cadence isn't beating your paid-lead cost per booked job by a wide margin, something in the segmentation or the scripts is broken — fix it before you spend another dollar on new leads.
What pros get wrong (the edge cases)
Giving up after one or two touches
The data on follow-up persistence is brutal and consistent across sales: most prospects who eventually convert do so after multiple touches, yet most reps stop after one or two. In roofing this is compounded because the buying window can be triggered by a storm months after your last touch. The rep who quit after two calls never gets the job; the cadence that kept a quarterly postcard going gets the call after the next hailstorm.
Hammering one channel
Six voicemails to the same number is not persistence, it's a complaint waiting to happen. Persistence means varied persistence — call, text, mail, door, email — so you're catching the prospect on the channel they actually use, and so no single channel feels like harassment.
Treating a 4-year roof and a 20-year roof the same
We've said it three ways now because it's the central error. The age and condition of the roof should drive how much effort a record gets. Spending equal rep time on a near-new roof and a roof at end of life is how you burn payroll and still miss jobs.
Forgetting the deductible/claim line under pressure
When a storm hits and the phones are ringing, a hungry rep will say something to close — "don't worry, insurance will cover it" or "we'll take care of the deductible." Both are exactly the statements that turn a roofer into an unlicensed public adjuster or worse. Train the line before the storm: you document, you estimate your scope, you hand it to the homeowner, the homeowner files, the carrier decides. No promises about coverage, payout, approval, or the deductible. Ever.
Letting the list go stale instead of re-scoring it
An aged list you scored last year is itself aging. Roofs cross age thresholds, storms hit, Tier C becomes Tier A. Re-score at least annually and after every significant area storm, and promote the records that ripened. The list isn't a one-time project; it's an asset you maintain.
Not honoring no
When someone says stop, or replaced the roof, or opts out — honor it permanently and suppress hard. One complaint or one violation of do-not-contact rules costs you far more than the one job you might have squeezed. Discipline on the exit side is what lets you be persistent on the entry side without becoming the roofer everyone in the neighborhood warns each other about.
A 7-day rollout plan
If you want to actually do this instead of just nodding along, here's the week:
- Day 1 — Export and de-dupe. Pull every aged record into one sheet, collapse duplicates by address.
- Day 2 — Suppress. Scrub do-not-call/do-not-contact and remove already-bought records.
- Day 3 — Score and tier. Sort by roof-due likelihood (age range + storm exposure), assign A/B/C/D. This is the step that benefits most from real roof-age and per-roof storm data.
- Day 4 — Build the CRM scaffolding. Create the tier/stage/last-contact fields and the custom properties; build the automated sequence and the rep tasks.
- Day 5 — Write your scripts. Adapt the scripts here to your company name and voice; bake the compliance line into the storm scripts.
- Day 6 — Train the reps. Walk through the cadence, the channels, the exit rules, and the do-not-say list. Role-play the breakup touch and the storm touch specifically.
- Day 7 — Launch on the Tier A's only. Start with your hottest 200–300 records so you can watch the metrics, fix the scripts, and prove the model before you scale to the full list.
The whole thing is a week of setup against a pile of records you already paid to acquire. Done right, an aged-lead cadence is the cheapest pipeline a roofing company has — not because the leads are free, but because you already bought them once and never finished the job. Sort them by the roof, work them on a schedule, lead with the asset instead of the ask, and keep your storm conversations on the documentation side of the line. The jobs are already in your CRM. You just have to go finish following up.
FAQ
How many times should I follow up with an old roofing lead before giving up?
For a worthwhile (Tier A/B) aged lead, plan on roughly nine touches across five channels over 30 days, then drop non-responders into a low-frequency quarterly nurture rather than deleting them. The mistake most shops make is stopping after one or two touches. The opposite mistake is hammering one channel. Stop only on an explicit no, a confirmed already-replaced roof, or completion of the full sequence with zero engagement — and honor any stop request permanently.
What's the difference between an aged lead and a dead lead in roofing?
A dead lead is unqualified or has explicitly said no, or the roof was already replaced. An aged lead is a qualified or once-qualified prospect who simply went quiet — the roof is still due and the homeowner still has the problem, the conversation just stalled. The key roofing wrinkle is that the asset keeps changing: a roof that wasn't due 18 months ago may be due now after more age and weather, which means parts of your aged list are actually ripening, not dying.
How do I figure out which old roofing leads are worth re-contacting?
Sort by roof-due likelihood, not by how old the lead is. A two-year-old lead on a 21-year-old roof that just took hail is a higher priority than a one-month-old lead on a 7-year-old roof. Score each address on its roof-age range and storm exposure, then tier the list (hot/warm/watch/suppress) and put your rep time and mail budget on the top tiers. This is exactly the segmentation that tools like RoofPredict are built to make sortable, by scoring roof age and modeling storms per roof across your existing address list.
What should the first touch on a cold roofing lead say?
Lead with the roof, not the estimate. "Just following up on your quote" invites a one-word no. Instead, reference the specific prior contact, disarm the sales fear ("I'm not calling to sell you anything today"), and dangle a concrete reason — the roof's age range and any storms that hit the area since you last spoke. Make the next step tiny: a 10-minute look or a photo you can text over, not a full scheduled inspection.
Is texting old roofing leads legal?
It depends on consent. Texting and calling carry do-not-call and consent obligations under FTC telemarketing rules. Past customers and people who requested an estimate are on much safer footing than scraped or purchased contacts; an unsolicited text to someone who never opted in is legally a cold text, not a follow-up. Scrub your list against do-not-call and do-not-contact obligations before any outreach, and when consent is unclear, lead with mail and door-knocks, which don't carry the same exposure. Honor opt-outs permanently.
When a storm hits, how should I re-engage my old leads without getting in legal trouble?
Lead with documentation, never the claim. You may inspect, photograph and document damage, and prepare an honest line-item repair estimate for your own scope of work. You may not offer to handle, file, or negotiate the claim, tell the homeowner what's covered, promise approval or a payout, or say anything about their deductible — those can amount to unlicensed public adjusting in many states. The homeowner files with their own insurer and the insurer decides coverage. Build that boundary into your storm scripts so a rep can't cross it under pressure.
Should I say insurance will cover the roof to close a storm lead?
No. Telling a homeowner their insurance will cover it, promising approval, or offering to waive or absorb their deductible are exactly the statements that expose you to unlicensed-public-adjusting and fraud risk. Stick to facts: the roof's age, the storm date, the damage you documented, and your repair estimate. Hand it to the homeowner and let them file and let the carrier decide coverage.
How do I set up an aged-lead cadence in my CRM?
Tag every record with three things the cadence reads: tier (A/B/C/D), cadence stage (which day they're on), and last meaningful contact date. Automate the low-touch channels (texts, the mailer trigger, email) and keep calls and door-knocks as tasks assigned to a rep — don't robocall. Write explicit exit rules (to nurture, to suppressed) and re-entry rules (storm trigger, annual roof-age re-score). This works in JobNimbus, AccuLynx, HubSpot, or similar; the principle is the same regardless of platform.
How is re-engaging old leads different from buying new roofing leads?
You already paid the acquisition cost on aged leads the first time, so cost per booked inspection on a well-run re-engagement cadence is almost always far cheaper than fresh paid leads. If your aged-lead cadence isn't beating your paid-lead cost per booked job by a wide margin, something in your segmentation or scripts is broken. Aged leads are also warmer than truly cold prospects because there was a prior interaction to reference.
How often should I re-score my aged roofing list?
At least once a year, and after every significant area storm. Roofs cross age thresholds and absorb weather while they sit in your CRM, so a record you scored as low-priority last year can ripen into a top-priority one. Re-score, promote the records that crossed a threshold, and re-cadence them. The list is an asset you maintain, not a one-time project.
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
- National Do Not Call Registry — donotcall.gov
- FTC Telemarketing Sales Rule — ftc.gov
- FTC Business Guidance: Telemarketing — ftc.gov
- NOAA Storm Prediction Center — spc.noaa.gov
- NOAA National Centers for Environmental Information — Storm Events Database — ncdc.noaa.gov
- National Weather Service — weather.gov
- Insurance Institute for Business & Home Safety (IBHS) — ibhs.org
- National Roofing Contractors Association (NRCA) — nrca.net
- International Residential Code (ICC) — iccsafe.org
- Texas Department of Insurance — Public Insurance Adjusters — tdi.texas.gov
- U.S. Bureau of Labor Statistics — Roofers — bls.gov
- OSHA — Fall Protection in Construction — osha.gov
- U.S. Census Bureau — American Housing Survey — census.gov
- RoofPredict — roofpredict.com
Related Articles
How to Rank Neighborhoods by Roof Replacement Potential
A practical scoring system roofing companies use to rank neighborhoods by how likely the roofs are to need replacing soon, so canvassing, mail, and CRM work hit the highest-probability streets first.
Building a Pre-Listing Roof Inspection Service for Realtors: A Roofer's Playbook
A practical playbook for roofers who want listing agents to call them first: what to inspect, what the report needs to say, how to price it, and how to turn a free or low-cost inspection into a repeatable book of jobs.
Roofing Customer List Segmentation Strategy: Turn a Flat List Into Booked Jobs
How to cut a flat pile of names into segments your crew can actually work, so you stop mailing new roofs and start booking the homeowners who need you now.