How to Find Repeat Roof Replacement Opportunities in Your Customer Base
On this page
Every roofing company is sitting on a list of people who already trusted them with the most expensive exterior project on their house. Those names are in a spreadsheet, a QuickBooks export, a CRM, or a shoebox of invoices. And most of them are doing nothing.
That is the strange math of this trade. A contractor will spend $80 to $250 per shared lead, fight three competitors for it, and drive across the county for an appointment with a stranger who has no reason to like them. Meanwhile a few thousand past customers, referral sources, and quoted-but-lost prospects sit untouched until they happen to call back on their own. The second roof you sell to someone you already won is the cheapest one you will ever sell, because the trust is already paid for.
The problem is that "repeat roof replacement" sounds like an oxymoron. Asphalt shingles last 15 to 30 years depending on product and climate, so the homeowner you reroofed in 2012 is not your customer again until roughly 2030. If you only think about the literal same house, the well is dry for a decade. But the real repeat opportunity is broader than that, and it is hiding in three overlapping pools you already control: roofs that are simply aging out of their service life, roofs that a storm just wore down years early, and the people connected to your past customers who have never bought from you at all. Below is the operational playbook to find all three, rank them so you work the best ones first, and turn a stale database into a booked inspection calendar, while staying on the right side of the rules that govern anything touching insurance.
What "repeat opportunity" actually means in roofing
Before you build a list, get precise about what you are hunting. There are five distinct opportunity types living in a typical contractor's records, and they need different messages, different timing, and different proof.
1. The same roof, aging out. You installed a 25-year architectural shingle in 2006. It is now near or past its expected service life. Even a quality install in a moderate climate is a candidate for inspection. This is the most literal repeat, and it is real, but it is the slowest-moving pool.
2. The same address, new owner. Houses change hands every 8 to 13 years on average. The roof you installed in 2014 may now belong to someone who has never heard your name but is living under your workmanship. The warranty file, the photos, and the install date are gold here, and the new owner is far more receptive than a cold door.
3. The quoted-but-lost prospect. Every estimate you wrote that did not close is a person who needed a roof and chose someone else, chose to wait, or chose to patch. A meaningful share of "we decided to hold off" prospects still have the original problem. Two or three years later, that deferred roof is worse, and so is their tolerance for it.
4. The repair-now, replace-later customer. You did a $1,400 repair on a 22-year-old roof in 2022 to stop a leak. That was never a permanent fix and both of you knew it. These are some of the warmest leads in your entire database because you have already diagnosed the underlying condition in writing.
5. The storm-touched roof. A customer whose roof you installed or repaired sits inside the footprint of a recent hail or high-wind event. The roof did not reach the end of its calendar life, it got aged early by impact and uplift. This pool can go from zero to your single biggest revenue source in 48 hours after a serious storm, and it requires the most discipline to handle correctly.
The mistake is treating all five as one blast email. They are five segments with five reasons to act now. The rest of this walks through finding each, then ranking and working them.
Start by auditing the data you already own
You cannot mine a database you have not inventoried. Spend a half day pulling everything into one place before you buy a single new tool. Here is the raw material to gather, in rough order of value.
- Completed jobs with install dates. The single most important field. A job record without an install year is nearly useless for aging analysis, so prioritize sources that have dates.
- Product and warranty data. What shingle line, what wind rating, what warranty term. A 50-year laminate behaves differently from a builder-grade 3-tab, and the warranty term tells the homeowner's expectation.
- Repair and inspection history. Any record where you noted condition. "Granule loss moderate," "two slipped shingles north slope," "sealant failing at pipe boots" are diagnostic breadcrumbs.
- Lost and aged quotes. Estimates that never converted, with the date and the scope you proposed.
- Referral sources. Real estate agents, property managers, insurance agents, plumbers, and past customers who sent you work. These are multipliers, not single doors.
- Addresses, normalized. You need clean, geocodable addresses to layer anything spatial (storm footprints, ownership changes) on top.
Put it in one table. Even a single Google Sheet beats five disconnected systems. The columns that earn their keep:
| Field | Why it matters | Where to find it |
|---|---|---|
| Address (normalized) | Enables geocoding, storm overlay, ownership lookup | Invoices, CRM, county records |
| Install / service date | Drives aging score | Job records, QuickBooks, permits |
| Roof type & product | Refines real-world life expectancy | Material orders, warranty registration |
| Job type (full / repair / quote-only) | Defines the segment | Your records |
| Outcome (won / lost / repair) | Defines the segment | Your records |
| Last contact date | Avoids over-messaging | CRM, email logs |
| Owner name (current) | Detects ownership turnover | County assessor, skip trace |
If you find that 40 percent of your old records have no usable date or no clean address, that is not a failure, it is the finding. It tells you the first project is data hygiene, and it tells you which records can be scored now versus which need enrichment.
Clean the addresses before you do anything spatial
Everything spatial in the later methods, storm overlays, ownership cross-checks, route building, depends on addresses that a computer can actually match. Roofing records are notoriously dirty because they were typed in a truck or copied off a check. Before you score anything, run the address column through a normalization pass:
- Standardize the format. "123 N. Main St Apt 4" and "123 North Main Street #4" are the same door but will not match. Pick one standard (USPS-style abbreviations are a safe default) and conform everything to it.
- Fix obvious typos and ZIP errors. A wrong ZIP throws a record into the wrong county and out of your storm overlay entirely.
- Split unit and street. Multi-family and condo records need the unit separated so the base address geocodes.
- Geocode and keep the coordinates. Once you have a latitude and longitude per record, every spatial step downstream is a simple point-in-polygon check instead of a manual lookup.
- Flag the unmatchable. Some records will not geocode no matter what. Park them in a "manual review" bucket rather than letting them silently drop.
A free pass with a spreadsheet and a public geocoder will resolve the large majority. The 5 to 10 percent that resist are usually rural routes, brand-new subdivisions, or genuinely bad data, and they are worth a human eye because rural and new-build roofs are often high-value records.
Decide what to keep, what to fix, what to retire
Not every record deserves equal effort. Triage your raw pull into three buckets so you spend enrichment money where it pays:
- Score-ready. Clean address, install or service date, known product. These go straight into the scoring model. Work them first because they cost nothing more to activate.
- Fixable. Good address but missing date or product, or good date but messy address. These get a targeted enrichment pass: permit lookup for dates, imagery for age range, normalization for the address.
- Retire or archive. No address, no date, no name, and no way to recover them. Do not let dead records inflate your counts or your hopes. Archive them and move on.
This triage is also your first honest read on database size. An owner who believes they have "5,000 customers" often has 1,400 score-ready records, 2,000 fixable ones, and the rest noise. Knowing the real number sets realistic revenue expectations for the campaign.
A quick worked example of the audit payoff
Say you pull 1,800 completed jobs going back 18 years. You discover 1,100 have install dates and clean addresses. Of those, 240 were installed 16 to 22 years ago on mid-grade shingles in a climate where that product realistically runs 20 to 25 years. That 240 is not a guess about who needs a roof, it is a defensible inspection list you can start calling Monday. You did not buy a single lead to build it.
Method 1: Score the roofs that are simply aging out
The oldest, most boring, and most reliable signal is age. A roof has a service-life band, not an expiration date, and your job is to flag the ones entering or past that band.
Do not pretend you can name the exact failure date. You cannot, and homeowners can smell false precision. What you can do is build an honest age-band score per address.
Build a real-world life expectancy table
Manufacturer warranties are marketing terms, not field life. Use them as inputs, then adjust for your actual climate and what you see on tear-offs. A defensible starting frame, which you should tune to your region:
| Product class | Marketed term | Realistic service band (moderate climate) | Pull the band earlier if... |
|---|---|---|---|
| 3-tab asphalt | 20-25 yr | 14-20 yr | High UV, poor ventilation, south/west exposure |
| Architectural / laminate | 30 yr | 18-25 yr | Steep pitch heat load, prior hail, dark color |
| Premium / designer laminate | 40-50 yr | 22-30 yr | Coastal wind, ice damming |
| Wood shake | 30 yr | 15-25 yr | Drought-fire zones, low maintenance |
| Standing-seam metal | 40-70 yr | 35-50 yr | Coastal salt, fastener-down systems |
The band is wider than most homeowners expect, and that is the point. Your message is never "your roof is dead." It is "roofs like yours, installed when yours was, in this climate, commonly start showing end-of-life signs around now, and an inspection tells us where yours actually sits in that range."
Turn age into a simple, sortable score
You do not need data science. A weighted 0-100 score in a spreadsheet column ranks the list well enough to work top-down. One workable scheme:
- Age fraction (0-50 points). Current age divided by the low end of the realistic service band, capped at 50. A 19-year roof with a 14-20 band scores near the top.
- Product penalty/bonus (-10 to +10). Builder-grade gets a penalty (fails sooner), premium gets a small bonus.
- Exposure modifier (0-15). South/west facing, steep, dark color, poor ventilation all add points.
- Known-condition flag (0-15). Any prior repair note about granule loss, boot failure, or flashing adds points.
- Storm overlay (0-10). Add points if the address falls inside a recent hail or wind footprint (covered in Method 3).
Sort descending. The top of the list is your warm-call queue for the slow season. This is the pool you work when no storm is driving urgency, which keeps your crews booked through the quiet months.
A worked scoring example, end to end
Make it concrete. Take a real-shaped record: a 1998-built home you reroofed in 2007 with a 30-year architectural laminate, west-facing main slope, dark charcoal color, and a 2021 repair note reading "two cracked pipe boots, granule loss moderate on south field." Score it as of today:
- Age fraction. Roof is 19 years old. The realistic band for that laminate in a moderate climate is 18-25 years. Nineteen divided by 18 is above 1.0, so this maxes the age component at 50.
- Product modifier. Standard laminate, no penalty or bonus. 0.
- Exposure modifier. West-facing plus dark color plus the heat that implies. Call it +10.
- Known-condition flag. Documented granule loss and failing boots. +15.
- Storm overlay. No recent severe event over this address. 0.
Total: 75 out of a possible 100, before any storm bump. That single number tells your caller this is a top-of-queue, high-confidence inspection candidate, and the repair note gives them a true, non-pushy opener: "When we replaced your boots in 2021 we noted some granule loss starting on the south side. Roofs like yours often start needing a closer look around this age, and we'd like to do a no-charge check so you know where it stands." No fear, no false precision, just a fact you already documented and a helpful next step.
Run that scoring across the whole score-ready bucket and you have replaced gut feel with a ranked list. The crew works it from the top, and the slow season fills itself.
Tune the bands to your actual tear-offs
The service bands above are a starting point, not gospel. The contractors who get the most out of age scoring calibrate the bands against what they actually see when they tear off. Keep a running note: when you strip a roof, record the install year (from the permit or the homeowner), the product, and your honest read of how much life was left. After fifty tear-offs you will know whether builder-grade 3-tab in your specific county is failing at 16 years or limping to 22. That feedback loop is what separates a defensible local model from a generic chart copied off the internet, and it is the kind of first-hand knowledge homeowners can hear in your voice when you explain why you are calling.
Method 2: Detect ownership turnover and the repair-to-replace pipeline
Two of the richest segments require almost no new technology, just a cross-reference.
New owner, your old roof
When a house sells, the roof you installed now belongs to a stranger who inherited your workmanship and your warranty. Find these by comparing the owner name on file against current county assessor records, which are public in nearly every U.S. county. Where the name changed, you have a new household living under a roof you know the exact age of.
The outreach here is genuinely helpful, not salesy: "Our records show we installed the roof on this home in 2014. As the new owner you may not have the documentation. Here is the install date, the product, and the remaining transferable warranty terms, and we are happy to do a no-charge condition check so you know where it stands." You are handing them something valuable, you look like the trustworthy incumbent, and you have re-opened a relationship the prior owner started.
A note on warranties: most manufacturer shingle warranties are transferable to a subsequent owner exactly once, usually within a defined window after the sale (commonly within the first 20 to 60 days, varying by manufacturer). If you registered the original install, you may be able to help the new owner preserve that coverage, which is a real reason for them to call you back rather than anyone else.
Repair-now, replace-later
Pull every repair invoice on a roof that was already past mid-life when you repaired it. You wrote the diagnosis. A 23-year-old roof you patched two years ago is now 25, and the conditions you documented have not improved. These convert at high rates because you are not introducing a problem, you are following up on one you both already acknowledged in writing. Sort these by (age at repair + years since repair) and call the top of the stack first.
Where to actually pull ownership and permit data
Both of these segments depend on public records, and contractors often assume that data is harder to reach than it is. Here is where it lives:
- County assessor / property appraiser. Nearly every U.S. county publishes current owner of record, often searchable by address online and free. This is your primary source for detecting ownership turnover. Match your stored owner name against the current one; a mismatch flags a sale.
- County recorder / register of deeds. Records the actual deed transfers with dates, useful when you want the sale date to time a transferable-warranty outreach window.
- Local building department permits. Reroof and repair permits are public in most jurisdictions and frequently list the date and sometimes the contractor and product. This is how you recover missing install dates and, as a bonus, how you spot roofs a competitor replaced that may now be aging.
- Skip-trace and data-append services. When you need a current phone or email for a record where only a name and address survive, a reputable append service fills the gap. Confirm the service's data is compliant with applicable consumer-contact rules before you dial.
A practical cadence: run the assessor cross-check on your oldest 200 to 400 records once or twice a year, since those are the homes most likely to have turned over and to be nearing end of roof life simultaneously. You do not need to check the whole base every quarter; you need to check the part of it where age and turnover overlap.
The honest outreach for a new owner
New-owner outreach is the most underused warm lead in roofing, and it only works if it is genuinely useful rather than a thinly disguised pitch. Lead with the documentation you uniquely hold:
"Hi, this is [name] with [company]. We installed the roof on your home back in 2014, before you bought it. New owners usually do not get that paperwork at closing, so I wanted to make sure you have the install date, the exact shingle product, and the warranty details, including whether any of it transfers to you. I can email that over, and if it is helpful we can do a quick no-charge condition check so you have a baseline. No obligation either way."
That call earns trust whether or not it sells a roof this year, and it puts you first in line when the roof does need work. You are the incumbent with the records; act like it.
Method 3: Layer storm physics onto your map
This is where a stale customer list becomes a same-week revenue engine, and where the most money and the most compliance risk both live.
Wind and hail do not respect service-life tables. A three-year-old roof can be functionally aged a decade by one severe hail core or a straight-line wind event. When a storm crosses your service area, the question is not "who is old," it is "which of my roofs sat under the worst of it."
Get the real storm footprint, not the TV map
The local news radar loop is not a work list. Use authoritative event data:
- NOAA's Storm Prediction Center storm reports publish daily logs of hail and wind reports with locations and, for hail, estimated stone size.
- The National Weather Service issues local storm reports and damage surveys, including the Enhanced Fujita rating and path for tornadoes.
- IBHS research on hail and wind helps you reason about what a given event class actually does to asphalt shingles.
Geocode your customer list, drop the storm footprint on top, and the intersection is your priority canvass. A roof that is both old (high age score) and inside a severe-hail polygon is the single hottest record you own.
The honest version of storm targeting
Be clear with yourself about what storm data is. A hail report near an address means hail likely fell near that roof. It does not prove that specific roof is damaged. Only an inspection establishes condition. So storm overlay is a prioritization tool that tells you where to knock and call first, not a damage certificate. Treat it that way in your own head and in your messaging, and you stay both effective and honest.
Where the rules get serious
The moment your work touches an insurance claim, a hard line appears, and crossing it is how contractors lose licenses and invite fines. Learn it cold and train your sales team on it. As a roofing contractor you may:
- Inspect the roof and document what you find, thoroughly and with photos.
- Prepare an accurate, itemized repair estimate for your own scope of work, aligned to standard estimating line items.
- State facts about the condition you observed and the work you propose.
- Hand that documentation and estimate to the homeowner so they have it.
You may not, for a fee:
- Negotiate, adjust, or "handle" the homeowner's claim with their carrier.
- Interpret what their policy covers or tell them what is or is not covered.
- Promise a specific payout, approval, or that a claim will be "approved."
- Tell them their deductible will be waived, absorbed, eaten, or made to disappear.
- Advertise a "free roof" or a roof at "no cost to you."
- Represent the homeowner against the insurer.
That last cluster is unlicensed public adjusting in most states, and "we'll handle the insurance for you" plus "we'll cover your deductible" plus "free roof" is the exact trio that draws enforcement from state departments of insurance. The safe and genuinely more durable frame: you document the roof thoroughly, you write an accurate repair estimate for your scope, you give it to the homeowner, the homeowner files the claim, and the insurer decides coverage. You are the documentation-and-estimate expert, never the claim handler.
A do-not-say list for your storm scripts
Print this and tape it to the sales-team wall. Replace the left column with the right.
| Do not say | Say instead |
|---|---|
| "We'll get your claim approved." | "We'll document the condition and give you a detailed estimate to file with." |
| "We'll cover your deductible." | "Your deductible is set by your policy; here is what the repair scope costs." |
| "Free roof, insurance pays everything." | "If your roof qualifies, your policy may cover storm damage; an inspection and your carrier determine that." |
| "We handle the whole insurance process." | "We provide the inspection report and repair estimate; you file and your insurer decides." |
| "Your roof is definitely totaled." | "Here is the damage we documented; the inspection report shows the extent." |
This is more than legal cover. Homeowners have been burned by "free roof" storm-chasers, and a contractor who explains the honest process stands out as the credible one.
The documentation workflow that does the heavy lifting
Since your entire safe role on the storm side is documentation and an accurate estimate, the inspection report is your product. A thin report with three blurry photos helps no one and undercuts the homeowner when they file. A thorough one stands on its own. Run every storm inspection the same disciplined way:
- Establish the date and the event. Note the date of inspection and reference the storm date and the authoritative report (SPC or NWS) for the area, as context for why you were there. You are stating facts, not interpreting coverage.
- Shoot the whole roof systematically. Overview shots of each slope, then close-ups. Photograph from a consistent pattern so nothing is missed: ridge, field, valleys, eaves, rakes, then every penetration.
- Document each damage type clearly. For hail, photograph impact marks with a chalk circle and a reference for scale; capture spatter on soft metals (vents, gutters, flashing) because that helps establish that hail of a given size struck. For wind, photograph creased, lifted, or missing shingles and any exposed fasteners or underlayment.
- Capture collateral evidence. Damaged gutters, downspouts, screens, AC fins, and painted surfaces corroborate that an impact event occurred. Photograph them.
- Mark test squares. A standard practice is documenting hits within a defined test area on each slope; record the count per square so the report shows extent rather than mere presence.
- Tie photos to a diagram. A simple roof diagram with photo locations turns a pile of images into a report someone can follow.
- Write only what you observed. Describe the condition and the damage. Do not write that it is "covered," "approved," or "totaled." Those are coverage conclusions that belong to the insurer, not to you.
The homeowner takes this report and your estimate and files their own claim. Your professionalism shows in the file, and that is what makes you the contractor they trust to do the repair once coverage is decided.
Writing an accurate, estimate-aligned scope
Your estimate is the second half of the deliverable, and it should be itemized the way the broader claims ecosystem expects so the homeowner and their carrier can read it without translation. Build the scope around real line items for the work you propose:
- Tear-off and disposal by layer and square.
- Underlayment type and coverage.
- Shingles by product, including starter and ridge cap as separate lines.
- Flashing at walls, valleys, chimneys, and penetrations, replaced not reused where condition warrants.
- Pipe boots, vents, and accessories.
- Drip edge where code requires it.
- Ice-and-water shield where code or climate requires it.
- Decking replacement allowance for rot or delamination found at tear-off, stated as a contingency since you cannot see it until the roof is open.
- Code-required upgrades. Where local code mandates something the existing roof predates, list it. Building codes update over time and an older roof may not meet current requirements.
Price it honestly for your true cost of doing the work to code. An estimate that reflects actual scope and current code is defensible and accurate. An estimate padded to hit a number, or shaved to win a bid you will then "make up" elsewhere, is the kind of thing that gets contractors in trouble. Write what the job actually costs to do right, hand it over, and let the homeowner and their carrier take it from there.
Method 4: Reactivate lost quotes and dormant referral sources
Two more pools, both nearly free to work.
The lost-quote graveyard
Every contractor has a folder of estimates that never closed. Sort them by age of the estimate and the reason for loss if you recorded it. Prioritize:
- "Decided to wait / hold off" from two-plus years ago. The roof did not get better. Lead with a re-inspection offer, not a re-quote, because the condition has likely changed and you want fresh eyes on it.
- "Went with a cheaper bid" from five-plus years ago. If that cheap roof is failing early, you are the contractor who already knows the house.
- "Price" objections where you can now offer financing or a phased approach.
A simple re-engagement note works: "A couple of years back we looked at your roof and you decided to hold off, which made sense at the time. Roofs change, and we are doing condition checks in your area this month. Want us to take a fresh look so you know where it stands?"
Referral source reactivation
Real estate agents need pre-listing roof condition reports. Property managers have portfolios that age in lockstep. Insurance agents field roof questions constantly. These contacts are not single roofs, they are recurring pipelines. A quarterly check-in plus a genuinely useful tool, like a fast pre-listing roof condition letter for agents, keeps you top of mind. One active agent can be worth more than a dozen cold doors a year.
Where RoofPredict fits, and where it does not
Everything above can be done by hand. The honest friction is time: geocoding a thousand addresses, hunting county records for ownership changes, building and maintaining real-world life-expectancy bands, and re-checking storm footprints every time weather moves through. For a small shop, that is a weekend that never happens, so the list stays stale.
RoofPredict exists to remove that friction. It is built for roofing contractors who want to work their own list smarter, not to sell you shared leads. Two things it does that map directly onto the methods above:
- Roof-age ranges by address from aerial imagery. Feed it addresses and it returns a roof-age estimate as a range, not a single date, which is exactly the honest framing your homeowner messaging should use. That lets you build the aging-out score in Method 1 across your whole customer base, including the many records where your own install date is missing.
- Storm physics modeled per roof. Rather than a county-wide hail polygon, it models the storm's likely effect at the individual roof, so your priority canvass after an event is ranked roof by roof. The output is odds and exposure, not a damage certificate, which keeps you on the documentation-and-estimate side of the line.
It also enriches your existing CRM or mailing list with those age and storm signals, so the data lives where your team already works rather than in a separate place to check. The honest limits matter: an age range from imagery is a range, not a birth certificate, and a storm model gives you odds about which roofs were most exposed, never proof that a specific roof is damaged. Only a physical inspection establishes condition. Used as a prioritization layer on top of the workflows here, it turns a multi-weekend data project into a sorted call list, and it keeps the human judgment, the inspection, and the estimate exactly where they belong: with you.
Rank everything into one working queue
Five pools, one calendar. Combine the signals into a single priority score so your team always knows who to contact next. A practical model, scored per record:
| Signal | Points | Notes |
|---|---|---|
| Age score (Method 1) | 0-50 | Higher = closer to / past service band |
| Storm overlay | 0-25 | Inside a recent severe footprint |
| Documented prior condition | 0-15 | Repair notes, granule loss, boot failure |
| Ownership change | 0-10 | New owner, warm warranty story |
| Relationship strength | 0-10 | Past customer or referral source |
| Recently contacted penalty | -20 | Avoid burning goodwill |
Sum, sort descending, and work top-down. The records that light up on multiple signals at once, an old roof, inside a storm footprint, with a prior repair note, are the ones to call this afternoon. The single-signal records feed the slow-season campaigns.
A 30-day execution plan
Plans die without dates. Here is a month that takes you from shoebox to booked inspections.
Week 1 — Consolidate. Export every system into one table. Normalize addresses. Tag each record with its segment (full job, repair, lost quote, referral source). Flag records missing dates or clean addresses for enrichment. Goal: one clean sheet.
Week 2 — Score. Build the life-expectancy bands for your climate and products. Compute the age score, layer any known-condition flags, and run an ownership cross-check against assessor records for your oldest 200 jobs. Goal: a ranked aging-out list.
Week 3 — Storm and reactivation. Pull the last 12 to 24 months of severe storm reports for your service area from SPC and NWS, geocode, and overlay. Separately, sort your lost-quote and repair-now lists. Goal: three working queues, age, storm, reactivation.
Week 4 — Work it. Compliance-train the team on the do-not-say list before anyone dials. Start top-down on the combined priority queue. Offer condition checks, not hard quotes. Track contact-to-inspection and inspection-to-sale so you learn which segment pays. Goal: booked inspections and a measured pipeline.
Then repeat the storm overlay after every significant event and re-score the aging list quarterly. The database is a living asset, not a one-time project.
The message and cadence by segment
A ranked list is worthless if everyone gets the same email. Each pool needs its own reason to act, its own channel, and its own follow-up rhythm. Here is a working matrix.
| Segment | Lead reason | Best first channel | Cadence | Offer |
|---|---|---|---|---|
| Aging-out (same roof) | "Roofs your age commonly start showing wear now" | Phone, then mail | 1 call, 1 letter, 1 follow-up call over 6 weeks | No-charge condition check |
| New owner | "We have your roof's records; here they are" | Mail with records, then call | Letter, call 1 week later | Records + baseline check |
| Lost quote | "Roofs change; let's re-look" | Email then call | Email, call 3 days later | Re-inspection, not re-quote |
| Repair-now | "Following up on what we documented" | Phone | 1 call, 1 follow-up | Condition recheck |
| Storm-touched | "Storm crossed your area; let's document" | Door + call, fast | Within days of event | Documentation inspection |
| Referral source | "Here's a tool that helps you" | In-person / call | Quarterly | Pre-listing condition letter |
A few principles hold across all of them. Offer an inspection or a condition check, never a hard quote, as the first ask; the inspection is the low-friction yes that earns the right to quote. Keep messages short and specific to the one fact that makes this person worth calling. And respect the contact-frequency penalty in your score: hitting the same person from three angles in a month does more harm than a missed sale.
Sample touches you can adapt
Aging-out letter, opening line: "Our records show we installed your roof in 2006, which puts it right in the range where roofs like yours commonly start needing a closer look. We're doing no-charge condition checks in your neighborhood this month."
Lost-quote email, subject and opener: Subject: "A fresh look at your roof?" Body: "A while back we gave you an estimate and you decided to wait, which was reasonable. Roofs change, and we'd rather re-inspect than assume the old numbers still apply. Want us to take a look so you know exactly where things stand?"
Storm door-knock opener: "Hi, the [date] storm came through your area and we're checking roofs nearby. I'd like to document the condition of yours and put together a detailed report and repair estimate you can keep. No cost for the look, and there's no obligation." Notice what is absent: no claim talk, no deductible talk, no promise. Just documentation.
Handling the predictable objections
Working your own base means you will hear the same handful of objections, and the warm relationship gives you better answers than a cold caller has.
- "My roof is fine." "It may well be, and that's exactly what a free condition check confirms. We'd rather tell you it has years left than have you wonder."
- "I can't afford a roof right now." This is where financing and phasing matter. Many homeowners do not know that roofing financing exists or that a problem can be staged. Offer a condition check first; cost conversations are easier once they trust your read of the roof.
- "I already have a roofer." For a past customer, that roofer is usually you, which is the point. For a new owner, "We installed this roof, so we know it better than anyone, and the inspection is free" is hard to refuse.
- "A storm chaser already knocked." Lean into your honesty: "We're local, we'll document the roof and give you a real estimate, and we'll never tell you we'll handle your claim or make your deductible disappear, because no honest contractor can promise that." That contrast wins.
Financing deserves its own note. A meaningful share of deferred roofs are deferred for cash-flow reasons, not denial. Having a clean financing option and a willingness to phase work (replace the failing slope now, plan the rest) converts "not now" into "this year" more often than any sales pressure. Present it as removing a barrier, not as upselling.
What the pros get wrong
A few failure patterns show up again and again, even at good companies.
- Blasting one message to everyone. The aging-out homeowner, the new owner, and the storm-touched customer need three different reasons to act. A single email to all of them converts like a single email to all of them: barely.
- Selling fear instead of clarity. "Your roof is failing" triggers defenses. "Let's find out exactly where your roof sits in its service life" invites a yes.
- Treating storm data as proof. A hail report is a prioritization signal, not a damage finding. Inspect before you make any claim about condition.
- Crossing the insurance line. "We'll handle your claim" and "we'll cover your deductible" feel like helpful sales lines and are in fact the fastest route to a regulator's attention. Document and estimate; let the homeowner file and the insurer decide.
- Letting the data rot. A list scored once and never refreshed is stale within a year. Re-score quarterly and after storms.
- Ignoring referral multipliers. Chasing single doors while a real estate agent who could send a roof a month sits un-nurtured is leaving the easiest pipeline on the table.
Measuring whether it worked
Track four numbers and you will know fast whether mining your base beats buying leads:
- Cost per booked inspection from the database versus from purchased leads. The database number should be a fraction of the lead number.
- Contact-to-inspection rate by segment, so you double down on the warm pools (repair-now, new-owner) and adjust the cold ones.
- Inspection-to-sale rate by segment.
- Revenue per thousand records worked. This is the headline that tells you what your database is actually worth, and it usually surprises owners on the high side.
When those numbers come in, the case makes itself: the list you already own, scored and worked with discipline, outproduces the leads you rent. The roofs are aging out and the storms keep coming. The only question is whether you reach those homeowners before a competitor knocks first.
FAQ
How do I find repeat roof replacement opportunities if my old records have no install dates?
Records missing install dates are not dead, they just need enrichment. Two paths: pull permit records from your local building department, which often list reroof dates by address, and use aerial-imagery roof-age estimates that return an age range per address regardless of whether you have the original paperwork. Combine those with any product or repair notes you do have, then score the records by age band. Prioritize fixing the records with clean addresses first, since those can be geocoded and overlaid with storm and ownership data immediately.
Can I really sell a second roof to the same homeowner?
Sometimes literally, but the bigger opportunity is broader. The same physical roof aging out is the slowest pool. Far more common and faster are the same address with a new owner who inherited your work, the repair customer whose roof you already documented as near end of life, the lost quote where the original problem never went away, and the storm-touched customer whose roof aged early. All five live in your existing base and each needs its own message and timing.
How accurate is a roof-age estimate from aerial imagery?
It is an estimate expressed as a range, not an exact installation date, and you should treat it that way. Imagery-based age estimation reads visual signals across historical aerial captures to bracket when a roof was likely last replaced. That is precise enough to rank a customer base by who is closest to end of service life, which is what you need to prioritize calls. It does not replace a physical inspection, which is the only thing that establishes actual condition.
What is the safe way to talk to storm-damaged customers about insurance?
Stay on the documentation and estimate side. You may inspect the roof, document damage thoroughly with photos, and write an accurate itemized repair estimate for your own scope, then hand it to the homeowner. You may not, for a fee, negotiate or handle their claim, interpret what their policy covers, promise a payout or approval, promise to cover or waive their deductible, or advertise a free roof. The homeowner files the claim and the insurer decides coverage. Doing the homeowner's claim work for them crosses into unlicensed public adjusting in most states.
Where do I get reliable storm data to overlay on my customer list?
Use authoritative sources rather than a news radar loop. NOAA's Storm Prediction Center publishes daily hail and wind storm reports with locations and estimated hail size. The National Weather Service issues local storm reports and damage surveys, including tornado path and intensity ratings. IBHS research helps you reason about what a given hail or wind event does to asphalt shingles. Geocode your customer addresses and intersect them with these footprints to build a priority canvass.
How do I prioritize which customers to contact first?
Build a single priority score per record. Combine an age score (how close the roof is to its realistic service band), a storm overlay (inside a recent severe footprint), documented prior condition, ownership change, and relationship strength, then subtract points for anyone you contacted recently. Sort descending and work top-down. The records that light up on multiple signals at once, an old roof inside a storm footprint with a prior repair note, are the ones to call first.
Is mining my own customer base actually cheaper than buying leads?
Almost always, because the trust is already paid for. The test is to track cost per booked inspection from your database versus from purchased shared leads, then compare contact-to-inspection and inspection-to-sale rates by segment. Most contractors find database-sourced inspections cost a fraction of purchased leads and close at higher rates, especially for warm segments like repair-now customers and new owners of homes you previously roofed.
How often should I re-score my customer database?
Re-run the storm overlay after every significant hail or wind event in your service area, since that can instantly reorder your priority list. Re-score the aging-out list quarterly, because roofs age and prior-repair conditions worsen over time. Run an ownership cross-check against assessor records at least once or twice a year to catch homes that changed hands. A list scored once and never refreshed is stale within a year.
What about warranties when a house changes owners?
Most manufacturer shingle warranties are transferable to a subsequent owner once, usually within a defined window after the sale that varies by manufacturer. If you registered the original installation, you may be able to help the new owner preserve coverage, which is a concrete reason for them to re-engage with you specifically rather than a stranger. Always confirm the exact transfer terms with the manufacturer for the product you installed, since windows and conditions differ.
How can RoofPredict help with finding repeat opportunities?
It removes the time friction. RoofPredict returns roof-age ranges by address from aerial imagery so you can score your whole base, including records where your own install date is missing, and it models storm physics per roof so your post-storm canvass is ranked roof by roof rather than by a county-wide polygon. It enriches your existing CRM or mailing list with those signals so the data lives where your team works. It does not sell shared leads, and its outputs are honest ranges and odds, not damage proof, so the inspection and estimate stay with you.
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
- NRCA Roofing Manual and Technical Resources — nrca.net
- NOAA Storm Prediction Center Storm Reports — spc.noaa.gov
- National Weather Service Storm Reports and Damage Surveys — weather.gov
- Insurance Institute for Business & Home Safety (IBHS) Hail Research — ibhs.org
- FTC Guidance on Truth in Advertising — ftc.gov
- Texas Department of Insurance: Roofers and Public Adjusting — tdi.texas.gov
- International Residential Code (ICC) Roof Provisions — iccsafe.org
- OSHA Fall Protection in Construction (Roofing) — osha.gov
- U.S. Census Bureau American Housing Survey — census.gov
- Bureau of Labor Statistics: Roofers Occupational Outlook — bls.gov
- NOAA National Centers for Environmental Information: Severe Weather Data — ncei.noaa.gov
- National Association of Insurance Commissioners: Public Adjusters — naic.org
- FEMA Wind and Hail Mitigation Resources — fema.gov
- RoofPredict — roofpredict.com
Related Articles
How to Present a Roof Inspection Report That Closes the Job
The inspection didn't lose the job. The presentation did. Here's how top roofers turn a roof report into a signed contract at the kitchen table.
How to Build Homeowner Trust Fast on a Roofing Sales Call
Trust is the whole sale. Here is how top roofing reps earn it in the first five minutes at the door and carry it through the close.
How to Prequalify a Roof Before Driving Out: A Field-Tested System for Roofing Crews
Every truck roll you make on a roof that wasn't ready is margin you set on fire. Here's the desk work that tells you which addresses to drive to and which to skip.