How to Build a Re-Roof Reminder List From Your Past Customers
On this page
Most roofing companies are sitting on their next two seasons of work and don't know it. It's not in a lead pool you have to bid on, and it's not waiting on a storm. It's in your own records: the names, addresses, and install dates of every roof your crews have ever put on. Those roofs are aging on a clock you already know the shape of. A 3-tab architectural shingle roof you installed in 2008 is, right now, somewhere in the back half of its life. The homeowner is starting to notice granules in the gutters. They are going to call somebody. The only question is whether that somebody is you.
A re-roof reminder list is the system that makes sure it's you. It's a working list of past customers, sorted by when their roof is likely to need replacement, that feeds your outreach calendar so you reach out at the right time with the right message. Done well, it's the cheapest, highest-converting source of work a roofing company has, because you already earned the trust, you already have the address, and you already know exactly what's on that roof.
The problem is that almost nobody does it well. The records are a mess. The install dates are buried in PDFs or a shoebox. Nobody owns the follow-up. And the owner is too busy running today's jobs to mine yesterday's. So the list stays theoretical, the homeowner calls the company with the loudest yard sign, and a roof you installed makes money for a competitor.
Below is the full operational build: how to pull and clean the data, how to estimate the right reminder window for each roof by material and region, how to sequence the outreach, what to say, and how to keep the list alive so it compounds year over year. There are worked examples, scripts you can adapt, and the edge cases that trip people up. The goal is a list you can actually run, not a concept.
Why your past-customer list beats almost every other source of work
Before building anything, it helps to be clear-eyed about why this is worth the effort, because the build takes real hours and you'll be tempted to abandon it for something that feels faster.
Start with trust. A homeowner who already paid you for a roof and was happy has crossed the single hardest gap in roofing sales: they believe you'll show up, do the work, and not disappear. Cold prospects don't believe that yet. Lead-service prospects believe it even less, because they requested quotes from four companies and you're a stranger fighting three other strangers. Re-engaging a past customer skips the trust-building entirely. You're not a vendor to them; you're "my roofer."
Next, the data quality. You know things about a past customer's roof that no outside data source has. You know the exact material, the exact install date, the slope, the layers, whether it was a tear-off or a layover, what the deck looked like, and whether there were ventilation problems. That is a level of detail no aerial-imagery product and no county record can match, because you were physically standing on the roof. That knowledge lets you time the reminder precisely and walk into the conversation already knowing the answer.
Then the economics. Set aside lead costs for a second and think about contact cost. A targeted mailer to a known good address costs well under a dollar. A phone call to a past customer who remembers you costs a few minutes. Compare that to the fully loaded cost of acquiring a net-new customer through paid leads, paid search, or a door-knocking crew working cold streets. Past-customer reactivation is consistently the lowest cost-per-acquisition channel a service business has, and roofing is no exception.
Finally, referrals. A reminder touch to a past customer doesn't only book that customer's re-roof. It puts you back in their head right when their neighbor is complaining about a leak. The reactivation contact and the referral ask are the same motion. You're not only mining one roof; you're re-opening a whole street.
The catch, and it's a real one: a re-roof cycle is long. Asphalt shingles run 15 to 30 years depending on product and climate. That means the customer you installed in 2010 may not be due until 2030, and a customer from 2002 might be due right now. Your list has to be sorted by readiness, not by recency, or you'll waste your best outreach on roofs that have a decade left. Sorting by the wrong thing is the most common reason these programs fail. The rest of this is mostly about sorting by the right thing.
Step 1: Find every record you have, even the ugly ones
You cannot build a list from data you can't find. The first job is an inventory of every place a past customer's name and install date might live. For most companies that have been around more than a few years, the records are scattered across systems and eras.
Walk through every one of these and note what you actually have:
- Your current CRM or job-management software. AccuLynx, JobNimbus, Roofr, Leap, Buildertrend, or whatever you run today. This is your cleanest source, but it usually only goes back as far as the day you adopted it.
- Accounting records. QuickBooks (Online or Desktop) or your bookkeeper's files. Every paid invoice is a completed job with a date, an amount, and an address. This is gold, and it often goes back further than your CRM.
- Old estimating or proposal software. Companies switch tools every few years. The previous system may still be accessible or exportable.
- Email. Sent-folder searches for "invoice," "final payment," "thank you," or "warranty" surface jobs that never made it into any system.
- Paper. The filing cabinet, the binders, the box in the warehouse. Older companies have years of work that exists only on paper. It counts.
- Supplier and manufacturer records. If you registered manufacturer warranties (GAF, Owens Corning, CertainTeed, etc.), those registrations are a clean record of address, product, and install date. Your supplier may also have your purchase history by job.
- Permits. Many jurisdictions publish issued roofing permits. If your company name is on the permit, that's a dated, addressed, public record of a job you did.
- Your own memory and your crew's. The lead installers remember jobs. A quick session with a foreman and a map can recover work that left no paper trail.
Don't filter yet. The goal of this step is breadth. A messy address with a guessed-at year is worth more than a roof you forgot you did. You'll clean it next.
One practical tip: give yourself a single destination. Create one spreadsheet (or one import file for your CRM) and pour everything into it as you go, source by source. You'll deduplicate later. Trying to clean while you gather is how people stall out at 20 percent done.
Step 2: Build the spreadsheet schema before you import a single row
How you structure the list determines what you can do with it. A flat list of names and addresses is nearly useless; a structured list is a machine. Set up your columns first, then fill them. Here is a schema that covers what you'll actually need, with the must-haves marked.
| Column | Required? | Why it's there |
|---|---|---|
| Customer name | Yes | Personalization and matching |
| Service address | Yes | The roof, which may differ from billing address |
| Mailing/billing address | If different | Where mail goes; landlords, snowbirds |
| Phone | Strongly | Calls and texts convert far above mail |
| Strongly | Cheapest touch; needed for sequences | |
| Install year (or your best range) | Yes | Drives the entire reminder timing |
| Roofing material/product | Yes | Sets the expected lifespan |
| Tear-off vs. layover | Helpful | A layover ages faster; flag it |
| Slope / roof type | Helpful | Affects wear and your pitch |
| Color (light vs. dark) | Optional | Dark shingles in hot climates age faster |
| Original job value | Helpful | Rough estimate of the re-roof's value |
| Warranty info / expiration | Helpful | A live workmanship warranty changes the conversation |
| Source of record | Yes | So you can trust or distrust the row |
| Confidence in install date | Yes | High / medium / guess — you'll sort on this |
| Last contact date | Yes | Prevents over-mailing; tracks the relationship |
| Notes | Yes | "Ventilation issue," "referred the Hendersons," "dog bites" |
| Reminder window (calculated) | Yes | The output: the year range you should reach out |
| Status | Yes | New / contacted / quoted / won / dead / do-not-contact |
Two columns earn their keep more than people expect. Confidence in install date lets you separate the roofs you're sure about from the ones you guessed, so you don't send a confident "your roof is 22 years old" letter to a house where you actually have no idea. And source of record tells you why to trust a row at all; a manufacturer warranty registration is far more reliable than a foreman's memory.
If you're importing into a CRM instead of living in a spreadsheet, map these to custom fields. Most roofing CRMs let you add custom fields for material and install year; use them, because that's what makes filtering and automated reminders possible later.
Step 3: Clean and deduplicate (the part everyone wants to skip)
Raw, merged records are dirty. The same customer shows up three times under slightly different names. A 2014 repair gets logged the same as a 2014 full replacement. The billing address is the customer's office, not the roof. If you skip cleaning, your reminders go to the wrong houses at the wrong times and you train your past customers to ignore you. Spend the hours here.
Work through this cleanup checklist:
- Deduplicate by service address first, then by name. Address is the more reliable key because names get entered inconsistently (Bob vs. Robert, maiden names, spouses). Collapse duplicates, keeping the row with the best data and merging notes.
- Separate replacements from repairs. A re-roof reminder list is for full or significant roof replacements. A gutter job, a flashing repair, or a small leak fix is not a roof you need to remind about (though it's still a relationship to keep warm). Tag each row as Replacement, Repair, or Other and filter to Replacement for the reminder engine.
- Standardize the install year. Pick a single format (just the year is fine; precision to the month rarely matters over a 20-year cycle). Where you only have a range, record the midpoint and mark confidence as medium or guess.
- Fix obvious address errors. Run addresses through a validation step. Many spreadsheet and CRM tools, and the USPS address-verification tools, will flag undeliverable addresses. Undeliverable mail is wasted money and a sign the record is stale.
- Flag moved-out customers. People sell houses. The person who bought your roof in 2009 may not own the home now. This is a feature, not a bug, for a re-roof list (the roof is still there and still aging), but it changes your message: you're now reaching a homeowner who didn't hire you, so you reference the roof's history, not the relationship. More on that in the edge cases.
- Mark do-not-contact. Anyone who asked off your list, any unresolved dispute, any customer relationship that ended badly. Respect it permanently. One angry customer you keep mailing can do more reputational damage than ten reminders earn.
- Record source and confidence on every row. If you didn't capture it during the gather, do it now while you remember where each batch came from.
A realistic expectation: if you've been in business fifteen years, you might gather 2,000 records and end up with 1,200 clean, confidently-dated replacement jobs. That's normal. Twelve hundred warm, addressed, accurately-timed roofs is an enormous asset. Don't be discouraged by the shrinkage; the clean list is the point.
A word on who should do this work. Cleaning a customer database is tedious, and the instinct is to hand it to the cheapest available person. Resist that on the judgment calls. Splitting a replacement from a repair, deciding whether an ambiguous job belongs on the list, and reading install notes for ventilation or layover flags all require someone who understands roofs. A reasonable split is to have an office admin or a virtual assistant do the mechanical work (deduping, standardizing formats, validating addresses) and have an estimator or the owner make the roofing judgment calls on anything ambiguous. Batch the ambiguous rows into a single review pass so the experienced person spends an hour deciding edge cases rather than babysitting the whole import.
Keep a running log of decisions while you clean, too. When you decide that "re-roof, partial" jobs from a certain era were actually full replacements logged loosely, write that rule down so the next person cleaning the list applies it the same way. The list outlives whoever builds it the first time, and the rules you used need to be reproducible.
Step 4: Calculate the reminder window for each roof
This is the analytical core, and it's where a generic mailing list becomes a re-roof reminder list. The output is a single thing per row: the reminder window, the year range during which you should be reaching out to this customer because their roof is plausibly nearing replacement.
The formula is straightforward in concept:
Reminder window opens = Install year + (expected service life − lead time)
The two judgment calls are expected service life (how long this specific roof should last) and lead time (how early you want to be in the conversation). Take them one at a time.
Expected service life by material
Service life depends heavily on material, installation quality, ventilation, slope, color, and climate. Use ranges, never single numbers, because no roof comes with a guaranteed death date, and overstating precision is how you end up sending a "your roof is failing" letter to a roof that has eight good years left. The figures below are widely cited industry ranges for typical residential roofs in moderate conditions; shorten them for harsh climates and aggressive sun, lengthen them slightly for ideal conditions.
| Material | Typical service-life range | Notes that move the number |
|---|---|---|
| 3-tab asphalt shingle | 15–20 years | Shortens in hot/sunny and high-wind climates; layovers age faster |
| Architectural (dimensional) asphalt | 22–30 years | The most common modern residential roof; the workhorse of your list |
| Wood shingle / shake | 20–30 years | Highly maintenance- and climate-dependent |
| Metal (steel/aluminum panel) | 40–60+ years | These rarely re-enter your reminder cycle; track but de-prioritize |
| Clay/concrete tile | 50+ years (underlayment ~20–30) | The tile outlives the underlayment; the underlayment is the reminder trigger |
| Slate | 75–100+ years | Effectively out of cycle; repair relationship only |
| Single-ply / flat (TPO, EPDM, modified) | 15–30 years | Common on low-slope sections; varies widely by membrane and install |
A few practical adjustments your standard data sources will never know but you do, because you installed it:
- Layover roofs age faster. A second layer installed over an old roof traps heat and tends to fail earlier than a clean tear-off. If you flagged layovers in Step 2, knock a few years off the window.
- Dark shingles in hot, high-sun regions run hotter and can weather faster. If you tracked color, it's a minor adjustment, not a major one.
- Ventilation problems shorten life noticeably. If your install notes say the attic was under-ventilated and the customer never fixed it, that roof is aging fast. This is exactly the kind of edge knowledge that makes your reminder more accurate than anyone else's.
- Climate is the big multiplier. Intense sun, big temperature swings, frequent high wind, and hail-prone regions all pull the lower end of these ranges forward. A roof's age tells you readiness, but the weather a roof has actually lived through is what wears it out. Two identical 18-year-old architectural roofs in different climates are not equally due.
Lead time: how early to reach out
You don't want to reach out the year the roof dies. You want to be the name they already have when they start thinking about it. A reasonable lead time is 2 to 4 years before the bottom of the expected service-life range. That puts you in front of the homeowner while they're noticing the first signs (granules in the gutter, a few curling tabs, a neighbor getting a new roof) and before they've gone shopping.
Worked example
Take a real-feeling row:
- Install year: 2007
- Material: architectural asphalt shingle
- Tear-off (not a layover)
- Climate: hot southern region with strong sun
- Notes: adequate ventilation, dark shingle
Expected service life for architectural asphalt is 22–30 years, but the hot, high-sun climate and dark color pull toward the lower end, so call it 22–26 years for this specific roof. Lead time of 3 years means the window opens at install year + (22 − 3) = 2007 + 19 = 2026, and runs roughly through the back of the life range. So this roof's reminder window is approximately 2026–2030, with the strongest urgency building across that span. Today, in 2026, this customer is exactly who your first reminder should reach.
Now a contrasting row:
- Install year: 2018
- Material: architectural asphalt, tear-off, moderate climate
Service life 22–30 years, lead time 3 years, window opens at 2018 + (22 − 3) = 2037. This customer is a wonderful relationship to keep warm with light, value-only touches, but they do not belong in your active re-roof outreach for over a decade. Sending them an "is it time to replace your roof?" letter now would just make you look like you're guessing, because you would be.
That contrast is the whole point of the calculated window. It sorts your list into "reach out now," "warm but not yet," and "way too early," so your outreach budget lands on the roofs that can actually convert.
One more refinement worth making: spread the urgency across the window instead of treating it as a single year. A roof doesn't fail on a deadline; it slides into the end of its life over several seasons. So a Tier A customer in the first year of their window gets the soft "worth keeping an eye on" message, while a Tier A customer three or four years deep into their window, with no roof done since, gets a more direct "this is the year to take care of it" message. Same list, same math, but the tone tracks how close the roof actually is to the end. If you track a column for "years into window," you can sort Tier A itself by it and work the most-due roofs first.
It also pays to sanity-check the windows against reality once a year by spot-driving a handful of them. Pull ten Tier A addresses, drive by, and look at the roofs from the street. If they plainly still look fine, your service-life assumptions for that material and climate might be a touch conservative and you can nudge them. If several already look rough, you're running late and should pull the windows forward. Ten minutes of windshield time calibrates the whole list.
Tier the list once windows are calculated
With a reminder window on every row, sort the whole list into tiers:
| Tier | Definition | What you do with it |
|---|---|---|
| A — Due now | Reminder window is open this year | Direct, multi-touch outreach: call + mail + email. Highest priority. |
| B — Due soon (1–3 yrs) | Window opens in the next few years | Light, value-first nurture; warm them up so you're the obvious call when they're ready. |
| C — Not yet (4+ yrs) | Window well in the future | Once-a-year relationship touch only (holiday note, maintenance tip). Don't sell. |
| D — Out of cycle | Metal/slate/tile, recently done, or moved-out-unknown | Keep for referrals and repairs; not a re-roof target. |
Your Tier A is your money. For most companies it's a few hundred names at most in any given year, which is a completely workable volume for a real outreach campaign. Work A hard, nurture B, ignore C until it ages into B, and mine D for referrals.
Step 5: Where RoofPredict fits (and where it doesn't)
The weak point in everything above is the install date you're unsure about and the climate adjustment you're eyeballing. Your CRM records are only as good as what got written down, and a lot didn't. For the rows where your confidence is "medium" or "guess," and for the climate-wear question that material alone can't answer, outside roof data can sharpen the list.
RoofPredict was built for exactly this gap. It reads recent aerial imagery to estimate a roof's age as a range (not an exact date), and it models the storm history each individual roof has actually taken (hail and wind, scored house by house, rather than the blunt "a storm passed through this ZIP"). For your re-roof reminder list, that does two useful things:
- It fills and checks your install dates. Where your record says "around 2008, not sure," an independent roof-age range either confirms your estimate or flags that the roof was redone since (maybe by a competitor, which is its own signal). Where you have no date at all on a recovered paper job, it gives you a defensible starting range.
- It turns climate from a guess into a per-roof signal. Instead of broadly assuming "hot region, knock off a few years," you can see which specific roofs on your list have actually absorbed hail or significant wind events. A roof that's 17 years old and took two hail events is more due than its age alone suggests. That's the age-plus-weather combination that separates a roof that's merely old from a roof that's worn out.
It also enriches the list with the same data for the rest of the street. The neighbors of your past customers tend to have roofs of similar age, installed in the same building wave, weathered by the same storms. So the reminder touch to your customer and a targeted outreach to their block can run off the same data pull.
The honest limits, because overselling this helps nobody: roof age comes back as a range, not a birth certificate, and a storm model is odds, not proof a given roof is damaged. None of it replaces an inspection, and none of it replaces what you personally know about a roof you installed. Your own records, where you have them, are better than any outside estimate, because you stood on that roof. Use RoofPredict to fill the holes in your book and to extend the list past it, not to override the things you already know firsthand. The product ranks which roofs are likely due; you and a ladder confirm it.
Step 6: Sequence the outreach (the cadence that actually books work)
A list is potential energy. Outreach converts it. The mistake here is the one-and-done: a single postcard that goes out, gets ignored, and convinces the owner that "reminders don't work." Reactivation is a sequence, not a touch. Below is a cadence built for a Tier A (due-now) customer over roughly 90 days.
| Touch | Day | Channel | Message angle |
|---|---|---|---|
| 1 | 0 | Mail (letter or large postcard) | The age-aware check-in: "We installed your roof in 2007. Here's what to watch for now." Helpful, not salesy. |
| 2 | 7 | Same idea, with a couple of photos of what end-of-life shingles look like and an offer to do a free check. | |
| 3 | 14 | Phone call | The real mover. Reference the install, ask how the roof's been, offer an inspection. |
| 4 | 21 | Text (if no answer on call) | Short, friendly, one line: "Hi [name], [you] from [company] — installed your roof back in '07, wanted to see how it's holding up. Want me to swing by?" |
| 5 | 45 | A second postcard, slightly more direct: signs your roof is near the end, plus a clear way to book. | |
| 6 | 75–90 | Email or call | Final touch of this round; then drop to nurture if no response. |
A few cadence principles that matter more than the exact days:
- The phone call is the workhorse. Mail and email warm the relationship, but a past customer who picks up and hears "this is the company that did your roof" converts at a rate no mailer matches. If you only do one thing well, make calls to Tier A.
- Lead with help, not the sale. The first touches are an offer to check, not a pitch to replace. You earn the replacement by being the one who looked. "Let me come take a look, no charge" is a far easier yes than "time to buy a roof."
- Reference the specific roof. "We installed your architectural shingle roof in spring 2007" is dramatically stronger than "Is your roof old?" because it proves you know them and you're not blasting a generic list. This is the entire advantage of mining your own customers; use it on every touch.
- Respect the no. If a customer says the roof's fine and to check back later, log the date and actually check back later. Don't burn the relationship for one quarter's numbers.
- Stay compliant on calls and texts. Past customers you have an existing business relationship with are different from cold prospects, but the rules still apply. Honor do-not-call and unsubscribe requests immediately, identify yourself and your company, and keep texting consent-based. Treat the FTC's telemarketing and do-not-call guidance as the floor, and check your state's rules, which can be stricter.
Step 7: Scripts and templates you can adapt
Generic outreach gets generic results. The whole edge of a past-customer list is that you can be specific. Here are starting points; rewrite them in your own voice and with your real install details.
Reminder letter (Touch 1, mailed)
Dear [First name],
Back in [year], our crew installed a new [material] roof on your home at [street]. It's hard to believe it's been [N] years.
A roof like yours typically has a service life of [range] years, which means yours is reaching the stage where it's worth keeping an eye on. You might start seeing a few signs: granules collecting in the gutters, shingles curling at the edges, or a couple of spots that look worn from the street.
None of that means you need a new roof tomorrow. It means it's a smart time for a look. I'd be glad to come by, get up there, and give you an honest assessment of where your roof stands and how much life is left in it — no charge and no pressure.
If anything's ever leaked or you've had a storm come through, even better reason to check. Just call or text me directly at [number].
Thanks again for trusting us with your home the first time around.
[Your name], [Company]
Phone call (Touch 3)
Open by anchoring the relationship, then offer help:
"Hi [name], this is [you] over at [company] — we put the new roof on your place over on [street] back in [year]. I was going back through our records and saw yours is getting up there in age, so I wanted to check in and see how it's been holding up for you. Any leaks or trouble? ... I'd be happy to swing by and get up on it, give you a straight read on how much life it's got left. No charge for the look. Would [day] or [day] work better?"
If they're not ready: "Totally fair. Mind if I check back with you next spring? And if a storm comes through before then, call me and I'll get out there."
Text (Touch 4)
"Hi [name], [you] from [company] — we did your roof back in [year]. Wanted to see how it's holding up and offer a free check since it's getting up there. Want me to come take a look? Reply STOP to opt out."
Email (Touch 2)
Keep it short, lead with a useful image, and make the next step a single click or reply. The subject line that works is plain and specific: "Checking in on the roof we installed in [year]."
The common thread across all of these: you know exactly what's on the roof and when it went on, and you're offering to look before you're asking to sell. That combination is why your own customers convert better than anyone you can buy.
Step 8: Make the list a living system, not a one-time project
A re-roof reminder list that you build once and never touch decays fast. Addresses go stale, customers age into and out of windows, and new jobs you complete this year need to enter the pipeline so they're ready in 2045. The list has to be a habit, not a project. Build these routines:
- Capture install data on every new job, in structured fields. The single highest-leverage habit is making sure every roof you install from now on enters your CRM with material, install date, tear-off-vs-layover, and ventilation notes filled in. You're building next decade's reminder list one completed job at a time. If your crews close out jobs without that data, fix the intake form.
- Re-run the window calculation annually. Once a year, recompute reminder windows across the whole list. Customers roll from Tier C to B to A on schedule. A January review that re-tiers everyone sets your outreach calendar for the year.
- Refresh contact data. Phones change, people move, emails bounce. An annual pass to update or re-verify contact info keeps your outreach landing. Bounced emails and returned mail are signals to update or retire a row.
- Log every touch and outcome. Update the status and last-contact columns every time you reach out. This is what prevents over-mailing, tells you what's working, and turns the list into a measurable channel rather than a hopeful guess.
- Feed wins back in. When a past customer re-roofs with you, their record resets: new material, new install date, new window decades out. They drop to Tier C and the cycle restarts. A customer you re-roof twice over thirty years is the most profitable relationship in the business.
- Run a storm overlay when weather hits. When a significant hail or wind event crosses an area where you have past customers, that's a reason to move some of those names up your priority list and reach out to offer a documentation visit. Their roof just took a beating, they trust you, and they'll want a professional to look. (Stay on the right side of the line here; the next section covers it.)
A note on storms, claims, and what you can and can't say
Many of your past customers will eventually have a roof that takes hail or wind damage, and your reminder list is a natural channel for reaching them when a storm hits their area. This is legitimate, valuable outreach, but it's also where roofers get themselves in legal trouble, so it's worth being precise about what role you can play.
What you absolutely can do, and should do well:
- Inspect the roof and document what you find. Get up there, take thorough, dated photos of every elevation, and note the condition honestly.
- Document storm-related damage you observe. Photograph hail bruising, wind-lifted shingles, granule loss, and any related interior signs, with dates and locations.
- Write an accurate, detailed repair estimate. Build a clear, line-item estimate to repair or replace the roof, aligned to standard estimating practice (Xactimate-aligned line items, real measurements, real materials). State the facts about your own scope of work.
- Hand the homeowner thorough documentation. Give them the photos and the estimate so they have what they need.
What you must not do, because it crosses into unlicensed public adjusting and is illegal in most states:
- Don't negotiate, adjust, or "handle" the insurance claim for the homeowner for a fee.
- Don't interpret their policy or tell them what is and isn't covered.
- Don't promise a specific payout, a specific approval, or that the claim "will go through."
- Don't promise to waive, absorb, eat, or make their deductible disappear.
- Don't advertise or imply a "free roof."
- Don't represent the homeowner against their insurer.
The clean mental model: you document thoroughly and write an accurate estimate, you hand it to the homeowner, and then the homeowner files with their carrier and the insurer decides coverage. You stay entirely on the inspection-and-documentation side of the line. Your storm outreach to past customers should be framed exactly that way: "A storm came through your area. As the company that did your roof, I'd like to come take a look and document anything I find, so you have it on hand." That's helpful, it's honest, it's legal, and it keeps you out of trouble while still putting you on the roof.
For the actual reminder timing, the storm angle simply means a roof that took real weather should jump up your priority order. A 16-year-old roof that lived through two hail seasons is more due than its age alone suggests, and a past customer is exactly who you want to be checking on after a storm.
Common mistakes that kill these programs
After all the build steps, it's worth naming the failure modes directly, because most companies that try this quit for one of these reasons rather than because the idea doesn't work.
- Sorting by recency instead of readiness. Reaching out to your newest customers because they're top of mind, when they're a decade from needing you. Sort by reminder window, always.
- One touch and giving up. A single postcard isn't a campaign. Reactivation needs a sequence across mail, email, phone, and text. The phone call especially.
- Skipping the cleaning. Dirty data sends the right message to the wrong house and the wrong message to the right house. The cleanup hours are not optional.
- No owner for the follow-up. If reaching out is "everybody's job," it's nobody's job. Assign the list to a specific person with a specific weekly target of calls and a quota of Tier A names worked.
- Treating it as a one-time project. Build it once and it decays. The annual re-run and the per-job data capture are what make it compound.
- Overstating precision. Telling a customer their roof is "22 years old and failing" when you guessed the install year and never looked. Lead with a range and an offer to inspect, not a verdict.
- Crossing the claims line on storm outreach. Offering to "handle the claim" or promising a covered/free roof. Document and estimate; never adjust or promise. It's the difference between a legal program and one that gets you fined.
- Ignoring the referral motion. Every reactivation touch is also a referral opportunity. If you're not asking past customers whether a neighbor needs a look, you're leaving the easiest work on the table.
A simple build checklist
If you want the whole thing on one page, here it is in order:
- Inventory every source of past-job records: CRM, accounting, old software, email, paper, warranties, permits, crew memory.
- Set up the spreadsheet or CRM fields before importing: name, address, phone, email, install year, material, layover flag, source, confidence, last contact, status, reminder window.
- Pour everything into one destination, source by source. Breadth first.
- Clean: dedupe by address, split replacements from repairs, standardize years, validate addresses, flag movers and do-not-contacts.
- Calculate a reminder window per roof: install year + (service life − 2 to 4 years lead time), using material-specific life ranges and your firsthand notes.
- Tier the list: A (due now), B (soon), C (not yet), D (out of cycle).
- Fill the gaps and check shaky dates with outside roof-age and storm data where your own records are thin.
- Run a multi-touch sequence on Tier A — mail, email, phone, text — leading with a free inspection, not a sale.
- Use specific, personalized scripts that reference the exact roof and install year.
- Log every touch and outcome; keep storm outreach strictly on the document-and-estimate side of the line.
- Make it a living system: capture data on every new job, re-run windows annually, refresh contacts, feed wins back in.
The companies that win at this aren't the ones with the slickest software. They're the ones who treat their past customers as the asset they are: a book of roofs aging on a knowable schedule, installed by people those homeowners already trust. Build the list, sort it by readiness, reach out at the right time with the specific truth about their roof, and you'll book work that costs almost nothing to find — storm or no storm, lead market or no lead market. It's your work. You earned it the first time. Go earn it again.
FAQ
How far back should I go when pulling past customers?
As far back as you have records, because the oldest jobs are the ones most likely to be due now. A roof you installed 18 to 25 years ago is squarely in the replacement window for most asphalt products. Dig into accounting files, paper records, and warranty registrations rather than only your current CRM, since those usually reach back further than the software you run today.
What if I don't know the exact install date for a lot of old jobs?
Use your best range and mark the confidence as low. A guessed year is still useful for rough tiering. For the rows you're unsure about, you can cross-check against manufacturer warranty registrations, issued permits, or an independent roof-age estimate from aerial imagery, which returns an age range you can use to confirm or correct your guess. Lead any outreach on uncertain rows with an offer to inspect rather than a confident claim about age.
How do I know when a past customer's roof is actually due?
Take the install year and add the expected service life for that material, then subtract two to four years of lead time so you reach out before they go shopping. Architectural asphalt typically runs 22 to 30 years, 3-tab runs 15 to 20, and metal, tile, and slate last far longer and rarely re-enter the cycle. Adjust down for hot climates, dark shingles, layovers, poor ventilation, and roofs that have absorbed real hail or wind.
Isn't it too early to contact someone whose roof I installed only five years ago?
For a re-roof, yes. A five-year-old asphalt roof is a decade or more from replacement, so an 'is it time?' message just looks like guessing. Keep recent customers in a light, value-only nurture tier with a once-a-year relationship touch, and save your direct re-roof outreach for the roofs whose reminder window is actually open. Recent customers are still excellent referral sources, though.
What's the best channel for reactivating past customers?
Use several, but the phone call does the heavy lifting. Mail and email warm the relationship and are cheap, but a past customer who picks up and hears the voice of the company that installed their roof converts at a rate no postcard matches. A workable sequence is a mailer, then an email, then a call, then a text if the call goes unanswered, spread over about 90 days, all leading with a free inspection rather than a sales pitch.
How is this different from buying leads?
You're not buying access to a stranger who also requested quotes from your competitors. You're reaching a homeowner who already paid you, was happy, and thinks of you as their roofer. You already know the address, the material, and the install date, so you can time the outreach precisely and personalize it. The contact cost is a fraction of a paid lead, and the trust is already built, which is why reactivation is consistently the lowest-cost source of work a service business has.
What do I do about customers who have since sold the house?
Keep them on the list, because the roof is still aging on schedule even though the original buyer is gone. Just change the message. You're now reaching a new homeowner who didn't hire you, so reference the roof's history and age rather than a personal relationship: the company that installed this roof noticed it's reaching replacement age and would like to take a look. It's an honest, useful reason to be at the door.
Can I reach out to past customers after a storm hits their area?
Yes, and it's one of the best uses of the list. As the company that installed their roof, offering to inspect and document any damage after a storm is genuinely helpful. Stay strictly on the documentation side: inspect, photograph the damage with dates, and write an accurate repair estimate you hand to the homeowner. Do not negotiate or handle their insurance claim, interpret their policy, promise a payout or approval, talk about waiving deductibles, or advertise a free roof. The homeowner files and the insurer decides coverage; you document and estimate.
How many past-customer reminders should I send at once?
Work your due-now tier as your priority, which for most companies is a few hundred names in any given year, a very manageable volume for a real multi-touch campaign. Don't blast your entire database at once; that wastes money on roofs with a decade left and trains people to ignore you. Sort by reminder window, work the open windows hard, and let the rest age into priority over time.
Do I need special software to do this, or is a spreadsheet enough?
A well-structured spreadsheet is enough to start and will outperform a messy CRM. What matters is the structure: install year, material, source, confidence, reminder window, and status columns. As volume grows, moving the list into your roofing CRM lets you automate reminders and log touches more easily, but the system, not the software, is what books the work. Build the structure first; pick tools second.
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
- Roofing Materials and Their Service Life — nrca.net
- FEMA Building Science: Roof Systems and Wind/Hail Performance — fema.gov
- IBHS Research on Hail and Roof Aging — ibhs.org
- NOAA Storm Events Database — ncdc.noaa.gov
- NWS Storm Prediction Center — spc.noaa.gov
- FTC National Do Not Call Registry: Business Guidance — ftc.gov
- FTC: CAN-SPAM Act Compliance Guide for Business — ftc.gov
- USPS Address Quality and Verification Tools — usps.com
- Energy.gov: Cool Roofs and Roof Temperature/Aging — energy.gov
- International Residential Code (Roof Coverings), ICC — codes.iccsafe.org
- Bureau of Labor Statistics: Roofers Occupational Outlook — bls.gov
- OSHA: Fall Protection in Residential Construction — osha.gov
- U.S. Census Bureau: American Housing Survey — census.gov
- RoofPredict — roofpredict.com
Related Articles
How to Raise Roofing Prices Without Losing Jobs
The operational playbook for charging more per roof, defending the number at the table, and losing only the jobs that were going to hurt you anyway.
How to Turn a Roof Inspection Into a Signed Contract the Same Day
The roofers who close on the same visit do not talk faster. They run a tighter inspection, document like an estimator, and remove the homeowner's reasons to wait.
How to Compete With Big Roofing Companies as a Small Contractor
The national roofers have ad budgets, call centers, and door-knocking armies. You have things they structurally cannot copy. Here is how a small crew wins the jobs that matter.