Skip to main content

How to Build an Aged Roof Mailing List by Address (Without Burning Your Postage Budget)

Emily Crawford, Home Maintenance Editor··31 min readRoofing Lead Generation
On this page

If you mail roofing postcards, you already know the quiet math that keeps you up at night. You drop 5,000 pieces across a ZIP code, you pay for every stamp whether the house got a new roof last spring or not, and you wait three weeks to find out the response rate landed somewhere between disappointing and "never doing that again." The problem is rarely the postcard. The problem is the list. You mailed a street, not a set of roofs.

An aged roof mailing list by address flips that. Instead of paying to reach every door on a route, you pay to reach the specific homes whose roofs are old enough to be a real replacement conversation. Same printer, same postage rate, very different economics, because every wasted piece you cut out is margin you keep. The catch is that almost nobody sells you a clean, honest version of that list off the shelf, and the data brokers who claim to often hand you garbage dressed up as roof data. So below is the actual workflow: where roof-age signal really comes from, how to build the list address by address, how to layer storm history on top without crossing legal lines, how to suppress the houses you should never mail, and how to measure whether it worked. It is written for the owner or sales manager who runs their own mail and is tired of guessing.

What "aged roof" data actually means (and what it doesn't)

Before you buy or build anything, get straight on what a roof-age signal is, because the whole list lives or dies on this. A roofing contractor mailing the wrong houses is usually working off one of three sources, and two of them are quietly lying to you.

Year built. This is what Zillow, the county assessor, and most cheap "property data" feeds give you. It is the year the house was built, not the year the roof was installed. A 1992 house that was re-roofed in 2019 still shows as a 1992 property. You will mail it as an old roof, the homeowner will roll their eyes, and you will have paid full postage to annoy someone who can't buy from you for fifteen years. Re-roofs are invisible to year-built data, and re-roofs are exactly the event you care about. Treat year built as a weak hint, never as roof age.

Permit history. County and municipal re-roof permits are the cleanest "a roof was replaced" record that exists, when they exist. Pull them and you can reset the clock on houses that got a new roof. The problem is coverage: permit data is wildly inconsistent county to county, plenty of re-roofs never got pulled, lag between job and recorded permit can run months, and stitching permits to the right parcel is its own headache. Permits are excellent as a suppression layer (don't mail a house that permitted a re-roof in 2023) and unreliable as a primary age source.

Visual roof-age estimation from aerial imagery. This is the signal that actually tracks the roof. High-resolution aerial and satellite imagery, read carefully (increasingly with vision models trained across millions of roofs), can estimate how worn a roof surface looks: granule loss, streaking, patching, color fade, the difference between a crisp recent install and a tired 20-year-old field. It sees the re-roof that year-built misses. The honest limitation, and you should hold any vendor to this, is that imagery gives you an age range, not a birth certificate. "This roof reads 18 to 22 years" is a useful, mailable signal. "This roof was installed on March 4, 2004" is a claim no aerial product can truthfully make, and anyone selling you exact install dates from a photo is selling you confidence, not data.

So the working definition for the rest of the playbook: an aged roof mailing list by address is a set of specific street addresses where the best available signal says the roof (not the house) is old enough to be near or past the end of its service life, with new roofs and recent re-roofs removed.

How long do roofs actually last?

You need a target age band, and that depends on material. Service-life ranges that hold up in the field, roughly:

Roof type Typical service life When it starts mailing well
3-tab asphalt shingle 15-20 years 12+ years
Architectural / dimensional asphalt 20-30 years 16+ years
Wood shake 20-25 years 15+ years
Metal (standing seam) 40-70 years rarely age-driven; storm-driven
Tile (clay/concrete) 50+ years (field), underlayment 20-30 underlayment age, not tile
Low-slope (TPO/EPDM/mod-bit) 15-25 years 12+ years, commercial play

Most residential mail in the United States is chasing asphalt shingle, so a practical default target is roofs estimated at 14 years and older, with the heaviest weight on the 18-to-25 band where replacement is an easy conversation. Going younger than ~12 just buys you postage spent on roofs that have years left. Going older isn't a problem, those are your best doors, but understand that a chunk of the very-old band may already be in someone else's pipeline.

Why blanket EDDM quietly bleeds your margin

Most roofers start with USPS Every Door Direct Mail because it is dead simple and the postage is the cheapest the post office offers. You pick carrier routes on a map, you don't even need addresses, and the carrier drops your piece at every residential box on the route. As of early 2026 the EDDM Retail postage rate runs about $0.247 per piece, and it is scheduled to step up to roughly $0.259 on July 12, 2026. That is genuinely cheap postage. It is also the trap.

EDDM's pitch is "reach everyone." For a roof, "everyone" is the problem. On a typical established residential street, a meaningful share of roofs are too new to replace, were just re-roofed, are rentals where the owner ignores mail, or belong to people who will never respond to a postcard regardless of roof age. You pay full freight for all of them. Run the math on a route of 1,000 homes:

  • 1,000 pieces at ~$0.25 postage + ~$0.30 print/handling ≈ $550 all-in for the route.
  • If only ~35% of those roofs are actually in your target age band, you spent roughly $358 reaching homes that could buy and $192 reaching homes that structurally can't for years.

That $192 isn't a rounding error when you run it across twenty routes a month. It is real money, every month, lighting on fire to reach roofs you already know are too new. EDDM also can't suppress: you cannot remove the houses you re-roofed last year, you cannot remove your own past customers, and you cannot avoid a competitor's recent job sitting three doors down. You mail the whole route or you don't mail it.

Targeted addressed mail costs more per piece. First-Class or Marketing Mail postage for an addressed postcard runs higher than EDDM, and you have to actually have the addresses. But you only buy postage for roofs worth reaching. The break-even is not subtle:

Blanket EDDM (1,000 homes) Targeted addressed (350 aged roofs)
Pieces mailed 1,000 350
Postage/piece ~$0.25 ~$0.40-0.55
Print + handling/piece ~$0.30 ~$0.30-0.45
All-in cost ~$550 ~$280-350
Pieces reaching a buyable roof ~350 ~350
Cost per buyable roof reached ~$1.57 ~$0.80-1.00

You reach the same number of real prospects for less total money, and you stop paying to annoy the new-roof half of the street. That is the entire argument for building an aged roof mailing list by address instead of carpet-bombing routes. EDDM still has a place, new-development saturation, brand awareness in a market you're entering, storm-response speed when you genuinely want the whole area, but as your standing replacement-prospecting engine, targeted wins on cost per real opportunity nearly every time.

The seven-step workflow to build the list

Here is the full build, address by address. Do it once and you have a repeatable system; the first pass is the slow one.

Step 1 — Define the geography you can actually service

Don't start with a ZIP code, start with a drive time. Draw the area your crews can reach without the windshield time eating the job. For most residential outfits that's a 20-to-40 minute radius from the yard, sometimes a cluster of suburbs rather than a clean circle. Pull the list of ZIP codes and, better, the carrier routes inside that drive time. You want geography tight enough that a knocker can follow up on a mailer the same week, because mail plus a knock outperforms mail alone by a wide margin.

Step 2 — Pull the parcels and a parcel-level address list

Within that geography, get a clean address list at the parcel level: one record per property, with the standardized mailing address, owner-occupancy flag, and year built. County assessor data or a property-data provider gets you this. At this stage you are not filtering on roof age yet, you are building the universe you'll score. Standardize the addresses now (USPS-format, ZIP+4) so they'll match cleanly against everything you layer on later. Bad address hygiene here causes silent mismatches that quietly drop your best houses.

Step 3 — Get the roof-age signal per address

This is the step that separates a real aged-roof list from a recycled "old house" list. For each parcel, you need a roof-age estimate that reads the actual roof, not the house. Three ways to get it:

  1. Buy a roof-age data layer keyed to address. A few vendors now score roofs from aerial imagery and return an age range per address. Quality varies hard; demand to see the limitation stated as a range and test it on roofs you personally know.
  2. Estimate it yourself from imagery. You can eyeball recent aerials for a small list, looking for granule loss, streaking, fresh-vs-faded color, and obvious patches. This works for a few hundred homes and falls apart at scale; it is slow and your judgment drifts.
  3. Model it across the whole area at once. Tools that read every roof in a defined area and return an age range per address let you score thousands of homes in one pass instead of squinting at images one at a time.

Whatever the source, attach a roof-age band to each address: e.g., 0-7, 8-13, 14-19, 20-25, 26+. The bands matter more than false precision.

Step 4 — Layer storm history onto each roof

Age tells you which roofs are worn out by time. Storm data tells you which roofs were beaten up early. A 9-year-old roof that took a real hail core can be a better door than a 16-year-old roof that's never seen weather. Pull hail and high-wind history for the geography (event dates, hail size estimates, wind speeds) and attach the relevant storm events to each address.

The critical distinction, and where most "storm lists" are weak: a hail swath map tells you where it hailed, not which roofs it actually wore out. Hail size, fall angle, roof pitch and orientation, and the roof's existing wear all change whether a given house took damage. The strongest storm signal models the storm on each roof, house by house, rather than painting a whole polygon as "hit." If your data only gives you a swath, treat it as a coarse filter, not a per-roof truth. Either way, store storm events per address so you can combine them with age in the next step.

Step 5 — Score and rank every address

Now combine the signals into a single rank so you mail the best doors first when budget is limited. A simple, honest scoring model that you can build in a spreadsheet:

  • Roof-age points: 14-19yr = 2, 20-25yr = 3, 26+ = 4, under 14 = 0 (or 1 if storm-flagged).
  • Storm points: recent significant hail/wind on this roof = +2; older or marginal event = +1.
  • Owner-occupancy: owner-occupied = +1 (owners replace; absentee landlords mostly don't respond to mail).
  • Suppression flags: see Step 6 — these zero the record out entirely.

Sum to a 0-7ish score. Sort descending. Now you have a ranked aged roof mailing list by address: the top of the list is old-and-storm-worn owner-occupied homes, the kind of door where a replacement conversation is overdue. When you can only afford to mail 1,500 pieces this month, you mail the top 1,500, not a random route.

Step 6 — Suppress the houses you must never mail

Suppression is where pros separate from amateurs, and it's the one thing EDDM can never do for you. Remove, before anything prints:

  • Your own recent customers (you re-roofed it; mailing them "is your roof old?" makes you look like you don't know your own book).
  • Known recent re-roofs from permit data or imagery — the roof is new, full stop.
  • Active estimates / open opportunities in your CRM (don't let a postcard collide with a rep mid-deal).
  • Do-not-mail and opt-outs. Consumers can register with the ANA/DMAchoice Mail Preference Service and with the FTC's guidance on stopping unsolicited mail; honor any direct opt-out you receive immediately and keep a permanent suppression file.
  • Vacant, condemned, and non-deliverable addresses (CMRA/PO boxes, undeliverable flags). Run the list through USPS address validation / NCOA so you're not paying postage into the void.
  • Rentals/absentee owners if your offer is replacement (keep them on a separate "property manager" track if you work that channel).

Every name you suppress is postage you keep and a credibility hit you avoid. A clean suppression file is worth more than a clever postcard.

Step 7 — Match to mailable addresses and hand off to print

Finalize the file: standardized address, roof-age band, storm flag, score, and a route/sequence field so the printer can presort for postage savings and so a canvasser can walk it in order. Export to your print/mail vendor. Keep the master scored list in your CRM or a database, not a one-off spreadsheet you'll lose, because next quarter you'll re-score the same geography (roofs aged another year; new storms landed) and you want to mail the newly aged-in homes without re-mailing everyone.

A worked example: one suburban ZIP

Make it concrete. Say you target a single suburban ZIP with 8,400 owner-occupied single-family homes inside your drive time.

  1. Universe: 8,400 parcels pulled and address-standardized.
  2. Roof-age scoring: the area skews older housing stock. Age bands come back roughly: 0-7yr = 18%, 8-13yr = 22%, 14-19yr = 28%, 20-25yr = 21%, 26+ = 11%.
  3. Target band (14+): 28% + 21% + 11% = 60%, or ~5,040 homes.
  4. Storm layer: a hail event 14 months ago modeled across the area flags ~1,900 of those roofs as having taken meaningful impact.
  5. Suppression: remove 140 of your own past customers, 95 permitted re-roofs inside the target band (imagery confirmed new), 60 open CRM opportunities, 30 opt-outs, and 110 undeliverable/absentee. Net removed: ~435.
  6. Final list: ~4,605 mailable aged roofs, ranked. The top ~1,900 carry both age and storm flags.

Now you have choices a route map could never give you. Mail the full 4,605 if budget allows. Or, if cash is tight, mail the top 1,900 age-plus-storm homes first at a cost of roughly $950-1,050 all-in, hand that same ranked list to a canvasser to knock the highest-scored streets, and follow with the age-only homes next month. Compare that to blanketing the ZIP: 8,400 EDDM pieces at ~$0.55 all-in ≈ $4,620 to reach the same ~4,600 real prospects buried among ~3,800 roofs that can't buy. Same opportunities reached, less than a quarter of the spend, and a ranked walk list as a bonus.

Where RoofPredict fits (and where it doesn't)

The slow part of all this is Steps 3 through 5, getting an honest roof-age signal on every address, layering real per-roof storm history, and ranking it, without spending a week squinting at aerial photos one house at a time. That's the gap RoofPredict is built for. You hand it the area you service, and it reads every roof from aerial imagery and returns a roof-age range per address (a band like 18-22 years, never a fake exact date), models hail and wind on each roof rather than just painting a swath, and hands back a ranked, address-level list you can mail and walk. It will also enrich a list you already have, your CRM, your old estimates, a county pull, by stamping roof-age and storm signals onto your own addresses so you can re-work the book you already paid to build.

The honest limits, because they're the whole point of trusting the data: roof age comes back as a range, not a date, and the storm model gives you odds that a roof was worn, not proof that it was damaged. It does not measure the roof for a quote (that's EagleView/HOVER/Roofr territory, a different job entirely), it does not pull permits for you, and it is not a lead service that resells the same homeowner to five of your competitors. It tells you which of your own streets, and which homes in your own list, are due, so the mail and the knocks land on roofs that are actually worn out instead of the whole neighborhood. Run it on a street you know cold first and check it against roofs you've personally been on; the data should earn the postage before you scale it.

Buying a list vs. building one: a straight comparison

You can shortcut the build by buying. Sometimes that's right. Know the tradeoffs.

Buy an "old roof" list off the shelf Build/score it yourself (or via a roof-age tool)
Speed Fast — file in days Slower first pass, fast after
Roof-age basis Often year built (re-roofs invisible) Reads the actual roof from imagery
Storm layer Usually a coarse swath, if any Per-roof age + storm, rankable
Suppression You still must add your own Built into your workflow
Re-usability One-time file, ages out Re-score quarterly as roofs age in
Cost shape Per-record, recurring Per-area scan + your time
Biggest risk Paying for "old house" dressed as "old roof" Garbage imagery/vendor if you don't vet it

The red flag on any purchased list: if the vendor can't tell you whether their "roof age" is year-built or imagery-derived, assume year-built and discount it hard. Ask them to score ten addresses you know the roofs on. If a house you re-roofed two years ago comes back as a 22-year-old roof, the list is year-built with a fancy label, and you'll pay to mail every re-roof in your market.

Designing the mail piece for an aged-roof audience

A precise list deserves a piece that earns the precision. You're no longer shouting at a whole street; you're talking to a homeowner whose roof is genuinely old. Write like it.

Lead with the roof, not your logo. "Roofs in [neighborhood] built around [era] are reaching the age where shingles start to fail" beats "[Company] — quality roofing since 1998." You know something specific about their house; sound like it without being creepy. Reference the neighborhood and roof era, not a surveillance-level "we know your exact roof," which spooks people.

One clear, low-friction ask. A free roof assessment, an honest age-and-condition check, a no-obligation inspection. One call to action, one phone number, one QR code to a simple form. Two asks halve each.

Make the age relatable. "Most roofs in this area were last replaced 18-25 years ago. If yours is in that window, it's worth a look before the next big storm, not after." True, specific, not alarmist.

A/B test the list segments, not only the creative. Mail the age-only segment and the age-plus-storm segment with a tracked phone number or unique QR per segment. You'll learn which signal drives your response, and you'll spend the next campaign's budget where it actually converts.

Sequence with a knock. The mailer warms the door; a rep walking the top-scored streets two or three days later closes it. The ranked list is the same artifact for both motions, which is the quiet superpower of building it address by address: print and feet work off one file.

A two-touch cadence that works

  1. Day 0: Mail the top-scored segment (age + storm), tracked number/QR per segment.
  2. Day 3-5: Canvasser walks the highest-scored streets from the same list, leading with the neighborhood-and-age talking point, leaving a branded door hanger on no-answers.
  3. Day 10-14: Mail the age-only segment.
  4. Day 21: Second touch to non-responders in the top segment (different creative, same list).
  5. Quarterly: Re-score the geography and mail only the newly aged-in and newly storm-flagged homes. You never re-pay to reach the same roof twice by accident.

The storm angle: capture the intent, stay on the right side of the line

A lot of roofers building these lists are really after storm work, the houses that took hail or wind and may have an insurance-covered replacement. Targeting those roofs with age + per-roof storm data is smart and completely legitimate. How you talk about the claim is where roofers get themselves in trouble, and it's worth being precise, because the legal exposure here is real.

Here is the bright line. As a roofer, you may inspect a roof, document damage thoroughly with photos and measurements, and write an accurate, Xactimate-aligned estimate to repair your own scope of work. You may state facts about your scope to the carrier. You then hand that documentation and estimate to the homeowner. The homeowner files the claim. The insurer decides coverage. That's the whole compliant workflow, and it's plenty.

What you may not do, in most states, without crossing into unlicensed public adjusting (and some states bar it even if you're licensed as a contractor): negotiate, adjust, or "handle" the claim for a fee; interpret the homeowner's policy or what's covered; promise a specific payout or that the claim will be approved; represent the homeowner against their insurer; and, the one that ends businesses, say anything about the deductible being waived, absorbed, covered, or made to disappear, or advertise a "free roof." In a number of states, eating or rebating a deductible is insurance fraud, full stop. A Texas case, Stonewater Roofing v. TDI (2024), went so far that even labeling yourself an insurance or claims "specialist" was treated as unlicensed public adjusting. Take that seriously in your mail and your scripts.

So the do-not-say list for your aged/storm roof mail and your reps:

  • ❌ "We'll get your claim approved" / "we handle the whole claim" / "we deal with your adjuster"
  • ❌ "Maximize your settlement" / "recover every dollar" / "beat the adjuster"
  • ❌ "We waive / cover / absorb your deductible"
  • ❌ "Free roof" / "your insurance pays for everything, you pay nothing"
  • ❌ "Guaranteed approval" / "claims specialist" / "we're basically your public adjuster"

And the safe, true frame that captures the exact same homeowner intent:

  • ✅ "If a storm damaged your roof, we'll document it thoroughly and give you a clear, detailed estimate."
  • ✅ "You'll have professional photos and an itemized repair estimate to share with your insurer."
  • ✅ "We inspect, we document the damage, we write the estimate. You file; your insurer decides coverage."
  • ✅ "Whether or not it's a claim, you'll know exactly what your roof needs."

That framing is honest, it's legal, and it's what your storm-targeted aged-roof list is genuinely good at supporting: putting your rep at the right door with real evidence in hand instead of a vague pitch. Roof-age + per-roof storm data tells you which roofs likely qualify on the facts (old enough, hit hard enough) so you knock the right houses; the documentation-and-estimate workflow is what you do once you're there. Your data and your scripts should never wander past "document and estimate" into "handle the claim." When in doubt, run live claims copy past counsel for your specific states; UPPA rules vary and change.

Reading the roof: what the imagery is actually telling you

If you're going to estimate roof age from aerial imagery, or vet a vendor who does, it helps to know what the visual signals mean, because they're the same things a sharp inspector reads from the ground. A roof ages in a fairly predictable visual sequence, and the imagery is just catching that sequence from above.

Granule loss and color fade. Asphalt shingles are protected by mineral granules. As they wear, granules wash into the gutters and the roof color goes from saturated to chalky and uneven. A fresh roof reads as a crisp, uniform field; a 20-year roof reads mottled and faded. This is the single most reliable age tell from imagery.

Streaking and staining. Dark vertical streaks (often algae) and uneven discoloration accumulate over years. They don't perfectly correlate with structural age, but a heavily streaked roof is almost never a recent install.

Patching and mismatched sections. A roof with a section that's visibly newer than the rest, a repaired slope, a re-shingled valley, tells you there's been intervention. That's a flag to soften your "old roof" pitch and possibly suppress, because a partial re-roof can mean the homeowner is already managing the roof or already has a relationship with a contractor.

Surface deformation. Curling, cupping, and visible unevenness in the shingle field show up as texture and shadow in high-resolution imagery and are strong end-of-life signals. A roof that's gone wavy is past due, regardless of the year-built record.

Crispness of edges and lines. New roofs have sharp, clean ridge and hip lines and tight, defined courses. As a roof ages, those lines soften and blur. It's subtle, but vision models trained across millions of roofs pick it up consistently, which is part of why machine scoring at scale can beat a tired human squinting at his three-hundredth aerial of the day.

What imagery can't reliably see: the decking condition underneath, the underlayment age (critical for tile, where the tile outlives the underlayment by decades), or whether a flat commercial membrane is at end of life when it still looks intact from above. This is exactly why honest roof-age data comes back as a range. The imagery narrows the band; it doesn't pinpoint a date. Hold that line for yourself and for anyone selling you data.

Multi-material and commercial nuance

Residential asphalt is the easy case. If your market has a lot of tile, metal, or low-slope commercial, adjust your targeting:

  • Tile roofs can read "fine" from above for fifty years while the underlayment fails at twenty to thirty. The age signal you want there is underlayment age, which imagery can't see directly; lean on year built plus storm history and treat tile as a longer-cycle, lower-frequency mail target.
  • Metal roofs are rarely age-driven replacements; they're storm-driven (hail denting, wind, fastener failure). On a metal-heavy street, weight storm flags far above age.
  • Low-slope commercial (TPO/EPDM/mod-bit) ages on a 15-to-25-year cycle and is a separate, higher-ticket mail program. Build a separate commercial list with its own service-life assumptions; don't blend it into your residential drop.

Sourcing consumer data the clean way

An aged roof mailing list is built on consumer and property data, and how you source it matters both legally and for deliverability. A few ground rules that keep you out of trouble.

Property and parcel data is generally public. County assessor and recorder records, parcel boundaries, owner-of-record, year built, and permit filings are public records in most jurisdictions. Using them to build a mailing universe is standard and fine. Direct mail itself is one of the least-regulated outreach channels; there's no "do-not-mail" equivalent of the federal Do Not Call registry with the force of law behind it. But there are voluntary suppression systems you should honor.

Honor the voluntary opt-outs. Consumers can register with the ANA/DMAchoice Mail Preference Service to opt out of unsolicited commercial mail, and the FTC publishes guidance on stopping junk mail and prescreened offers. You're not legally compelled to scrub against every one of these the way you must scrub phone lists against Do Not Call, but honoring direct opt-outs you receive is both good practice and good economics: someone who asked you to stop won't convert anyway. Keep a permanent suppression file of anyone who opts out of your mail, and never mail them again.

Keep phone and mail compliance separate in your head. The moment you start calling or texting the homeowners on your list, a completely different and much stricter rule set applies (TCPA, the federal Do Not Call registry, state telemarketing laws). Mailing a postcard and cold-calling a number are not governed by the same rules. If your workflow is mail plus a door knock, you're on solid ground; if it's mail plus a call center dialing the list, get compliance advice first.

Mind data provenance for storm/insurance angles. Weather and storm event data from NOAA's Storm Prediction Center and the NCEI Storm Events Database is public and authoritative. Lean on authoritative sources for the storm layer rather than a mystery "hail list" of unknown origin, both for accuracy and so you can stand behind your targeting if anyone asks why you knocked.

One list, two motions: feed your canvassers from the same file

The quiet advantage of building an aged roof mailing list by address, rather than buying a route or a swath, is that the exact same ranked file drives your door-to-door effort. Mail and feet should never work off different data.

Hand a canvasser the top-scored streets and a per-home talking point, and a green hire sounds like a veteran without ever climbing a ladder. The rep walks up already knowing the neighborhood's roof era and, where you have it, that this specific roof reads old and took a hail event fourteen months back. That's the difference between "Hi, do you need a roof?" (the pitch everyone slams the door on) and "We've been working roofs in this neighborhood, and a lot of them are in the window where shingles start to fail, mind if I take a quick look at yours?" The second one books inspections.

This also fixes a real money leak: rep churn. A green canvasser who knocks random doors gets rejected all day, makes no money, and quits in three weeks, and you eat the recruiting and training cost again. A green canvasser who knocks the right doors off a ranked list gets meaningful conversations, books inspections, makes money, and stays. The list isn't only a postage optimizer; it's a retention tool for the hardest-to-keep role on your team. Sequence it: the mailer warms the door, the knock two to five days later closes it, and both reference the same roof. One artifact, two motions, no wasted data.

A practical handoff: give the canvasser the list sorted by score within walkable street clusters, a one-line talking point per home (roof era; storm flag if present), and a simple way to log the outcome (knocked/no-answer/booked/not-interested/suppress) back into the same system. Those outcomes feed the next re-score: a "do not return" gets suppressed, a "come back" gets re-queued, and your data gets sharper every cycle instead of going stale.

What pros get wrong (the expensive mistakes)

After enough campaigns, the failure modes repeat. Avoid these and you're ahead of most of your market.

Mistake 1: Treating year built as roof age. Covered above, but it's the number-one killer. If your "aged roof" list is really a "1990s houses" list, you're paying to mail every re-roof in town. Always anchor on the roof, not the house.

Mistake 2: No suppression file. Mailing your own past customers "is your roof getting old?" is the fastest way to look like you don't know your own book. Build the suppression file before the first drop and maintain it forever.

Mistake 3: Skipping address validation. Undeliverable mail is postage set on fire with zero chance of return. Run NCOA/USPS validation every campaign; people move, and stale addresses creep in fast.

Mistake 4: Mailing once and judging. Direct mail is a frequency game. A single drop to a perfect list will underperform a three-touch sequence to the same list. Budget for cadence, not a one-shot.

Mistake 5: Buying a swath as if it were per-roof truth. A hail polygon says it hailed somewhere in here. It does not say this roof is worn. If you mail an entire swath as "storm-damaged," you'll knock a lot of fine roofs and burn rep time. Model the storm on the roof when you can.

Mistake 6: No tracking. If your postcard has only your main office number and no per-segment tracking, you'll never know whether age, storm, or creative drove the calls. Use a unique tracked number or QR per segment, and log the source on every inbound.

Mistake 7: Hard-selling the claim. Covered above. A piece that promises a free roof or a waived deductible can put your license and your business at risk. Stay on the document-and-estimate side, every time.

Mistake 8: Never re-scoring. Roofs age in. Storms land. A list you built 18 months ago is stale on both axes. Re-score the geography on a cadence and mail the newly-qualified homes; that's where the cheap, high-intent doors hide.

Measuring whether the list actually worked

You can't improve what you don't measure, and "it felt slow" is not a metric. Track these per campaign and per list segment:

Metric How to get it What good looks like
Cost per piece (all-in) (print + postage + data) / pieces trending down as you tighten the list
Response rate tracked calls+QR scans / pieces varies; compare segments, not to vanity benchmarks
Cost per response campaign cost / responses the number that actually matters
Inspection set rate inspections booked / responses your rep's job, but watch it
Close rate by segment jobs sold / inspections, by segment tells you which signal converts
Cost per acquired job full campaign cost / jobs sold the only number the owner truly cares about
Re-roof job value average sold ticket one job covers a lot of postage

The move most roofers miss: track close rate by list segment. If the age-plus-storm segment closes at, say, double the age-only segment, you now know to weight next quarter's budget toward storm-flagged homes, or to push the age-only homes to a cheaper channel like a knock instead of a stamp. The ranked, scored list isn't just a mailing tool; it's a feedback loop that makes every next campaign smarter. One re-roof is worth thousands; when a single job pays for an entire month of targeted mail, your real job is just to keep the list honest and the postage pointed at roofs that can actually buy.

A simple starting checklist

If you do nothing else, do this:

  • Draw your real service area by drive time, not ZIP convenience.
  • Pull a parcel-level, address-standardized list inside it.
  • Get a roof-age signal that reads the roof, not the house (imagery-based, returned as a range).
  • Layer per-roof storm history, not merely a swath.
  • Score and rank every address (age + storm + owner-occupancy).
  • Build and forever-maintain a suppression file (your customers, re-roofs, open deals, opt-outs, undeliverables).
  • Validate addresses (NCOA/USPS) before every drop.
  • Mail the top of the list first; hand the same ranked file to your canvassers.
  • Track response and close by segment with unique numbers/QR.
  • Re-score the geography quarterly and mail only the newly aged-in / storm-flagged homes.

An aged roof mailing list by address isn't a magic file you buy once. It's a system: read the actual roofs, rank them honestly, suppress the ones you shouldn't touch, and point your postage and your feet at the homes that are genuinely worn out. Do that and the postcard almost stops mattering, because you finally stopped paying to reach roofs that can't buy from you. If you want the roof-age and per-roof storm scoring done for your streets so you can skip straight to mailing the right doors, that's exactly what RoofPredict was built to hand you, ranked, address by address, with honest ranges instead of fake certainty. Start it on a street you already know, check the data against roofs you've stood on, and let it earn the postage before you scale.

FAQ

What's the difference between roof age and year built?

Year built is when the house was constructed; roof age is when the roof was last replaced. Zillow, county assessor records, and most cheap property feeds only give you year built, which means every re-roof is invisible to them. A 1992 house re-roofed in 2019 still shows as a 1992 property, so a year-built list will have you paying to mail homes that can't buy a roof for another decade. A real aged-roof list reads the actual roof, usually from aerial imagery, and returns an age range that captures re-roofs.

Can you get the exact date a roof was installed from aerial imagery?

No, and you should be skeptical of any vendor who claims you can. Imagery and vision models can estimate how worn a roof looks and return an age range, like 18 to 22 years, which is plenty to mail on. An exact install date from a photo is not something the data can honestly support. Treat roof age as a range, not a birth certificate, and discount anyone selling you precise dates.

Is EDDM or targeted addressed mail better for roofing?

EDDM has the cheapest postage (about $0.247 per piece in early 2026, rising to roughly $0.259 in July 2026) but you pay to reach every home on a route, including the new roofs and recent re-roofs that can't buy. Targeted addressed mail costs more per piece but only reaches the roofs worth reaching, and it lets you suppress your own customers and open deals. For standing replacement prospecting, targeted usually wins on cost per real opportunity. EDDM still fits new-development saturation, entering a new market, or fast whole-area storm response.

How old does a roof need to be before it's worth mailing?

It depends on material. For asphalt shingle (most residential mail), roofs start mailing well around 12 to 14 years and the easiest replacement conversations are in the 18-to-25-year band. Below about 12 years you're mostly buying postage to reach roofs with years of life left. A worn-out 9-year-old roof that took a real hail core can outperform an older roof that's never seen weather, which is why layering storm data on top of age matters.

How do I suppress the houses I shouldn't mail?

Build a suppression file before the first drop and remove: your own past customers, known recent re-roofs (from permits or imagery), open opportunities in your CRM, anyone on do-not-mail/opt-out lists (such as the ANA/DMAchoice Mail Preference Service), and vacant or undeliverable addresses (run NCOA/USPS validation). If your offer is replacement, also separate out absentee landlords. Every name you suppress is postage you keep and a credibility hit you avoid. EDDM can't suppress at all, which is one of its biggest weaknesses.

How does storm data improve an aged roof list?

Age tells you which roofs are worn out by time; storm history tells you which roofs were beaten up early by hail or wind. Combining them surfaces both the old roofs and the younger roofs that took a hit. The key is per-roof storm modeling, not a bare swath polygon: a hail map shows where it hailed, but hail size, roof pitch, orientation, and existing wear determine whether a given house was actually worn. Score each address on age plus per-roof storm and rank, so you mail and knock the best doors first.

Can my mail piece talk about insurance and claims?

You can reference storm damage and offer to document it and write a detailed repair estimate the homeowner can share with their insurer. You cannot, in most states, promise the claim will be approved, say you'll handle or negotiate the claim, interpret the policy, promise a specific payout, advertise a free roof, or say anything about waiving or absorbing the deductible (that's fraud in many states). The safe frame: you inspect, document, and estimate; the homeowner files; the insurer decides coverage. UPPA rules vary by state, so run live claims copy past counsel.

What does RoofPredict actually do for a mailing list?

You give it the area you service and it reads every roof from aerial imagery, returns a roof-age range per address, models hail and wind on each roof rather than just painting a swath, and hands back a ranked, address-level list you can mail and walk. It can also enrich a list you already have (your CRM or old estimates) by stamping roof-age and storm signals onto your own addresses. Honest limits: roof age comes back as a range not a date, storm modeling gives odds not proof, it doesn't measure roofs for quotes, and it isn't a lead service that resells homeowners to competitors.

How often should I rebuild or re-score my aged roof list?

Quarterly is a good cadence. Roofs age into your target band over time, and new storms land, so a list from 18 months ago is stale on both axes. When you re-score the same geography, mail only the newly aged-in and newly storm-flagged homes so you don't re-pay to reach roofs you already contacted. Keep the master scored list in your CRM or a database rather than a throwaway spreadsheet so re-scoring is fast.

How do I measure whether the campaign worked?

Track all-in cost per piece, response rate, cost per response, inspection set rate, close rate, and cost per acquired job, and do it per list segment with a unique tracked phone number or QR code on each. The metric that matters most is cost per acquired job, since one re-roof is worth thousands and can pay for a month of mail. The pro move is tracking close rate by segment: if age-plus-storm closes far better than age-only, weight next quarter's budget toward storm-flagged homes or push age-only homes to a cheaper knock instead of a stamp.

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.

By signing up, you agree to receive The Roofline by RoofPredict. Unsubscribe anytime.

Sources

  1. Every Door Direct Mail (EDDM) — Targeted Mail Marketingusps.com
  2. USPS Notice 123 — Price List (postage rates)pe.usps.com
  3. USPS Move Update / NCOALink Address Qualitypostalpro.usps.com
  4. How To Stop Junk Mailconsumer.ftc.gov
  5. DMAchoice / ANA Mail Preference Servicedmachoice.org
  6. NRCA — The Roofing Industry's Trade Associationnrca.net
  7. IBHS — FORTIFIED Roof and Hail/Wind Researchibhs.org
  8. NOAA NWS Storm Prediction Centerspc.noaa.gov
  9. NOAA NCEI Storm Events Databasencdc.noaa.gov
  10. OSHA — Fall Protection in Residential Constructionosha.gov
  11. Texas Department of Insurance — Public Adjuster Licensingtdi.texas.gov
  12. U.S. Census Bureau — American Housing Surveycensus.gov
  13. 2021 International Residential Code (IRC) — ICCcodes.iccsafe.org
  14. RoofPredictroofpredict.com

Related Articles