How to Build a Roofing Mailing List That Actually Books Jobs
On this page
Most roofers think a mailer flops because of the postcard. The headline was weak, the photo was generic, the offer was boring. So they redesign it, spend more on glossy stock, hire a designer, and send the same 5,000 pieces to the same list. The response rate barely moves.
The postcard is rarely the problem. The list is the problem.
If you mail 5,000 homes and 1,800 of them have a roof under eight years old, you just paid postage, printing, and design to reach 1,800 people who physically cannot buy what you sell. A great postcard to the wrong house is still wasted money. A plain postcard to the right house gets a phone call.
Building a roofing mailing list is not about buying the biggest list you can afford. It is about assembling a list of addresses where the roof is old enough, the household can act, and you can legally and repeatedly reach them. Do that well and a 3,000-piece drop will out-earn a competitor's 15,000-piece blast.
What follows is the actual workflow: where the data comes from, how to clean it, how to layer roof age and storm history on top so you stop mailing new roofs, how to mine your own customer book for the cheapest list you will ever own, and how to keep the whole thing legal under postal and consumer rules. There are tables, worked numbers, and a checklist at the end you can run this week.
Why your list matters more than your postcard
Let's put real arithmetic on it, because this is the part most owners never sit down and calculate.
Say an all-in mailer costs you about $0.55 per piece — design amortized, print, postage, list. Round numbers, your market may differ.
| Scenario | Pieces mailed | Cost | Homes with a roof old enough to replace | Effective cost per reachable home |
|---|---|---|---|---|
| Buy a big ZIP-code list | 15,000 | $8,250 | ~40% (6,000) | $1.38 |
| Filter by roof age first | 4,000 | $2,200 | ~85% (3,400) | $0.65 |
Same postcard. Same crew. Same close rate per qualified conversation. The second roofer spent a quarter of the money and put the piece in front of more houses that can actually become a job. That is the entire game.
A re-roof is worth thousands of dollars. The math on direct mail almost always works if the denominator is right. It almost never works when you are paying to reach houses that got a new roof three years ago. So the question "how do I build a roofing mailing list" is really the question "how do I stop paying to talk to the wrong houses."
Three levers control list quality, in order of impact:
- Roof age — is the roof old enough that replacement is plausible? This is the single biggest filter and the one almost nobody applies, because the data is hard to get.
- Storm exposure — has this specific roof taken hail or high wind that could have shortened its life or created documentable damage?
- Household fit — owner-occupied vs. rental, single-family vs. multi, length of ownership, and whether you can legally mail them.
Most roofers only ever filter on the third lever (and weakly). The first two are where the money is, and they are exactly where a sharper data source pays for itself.
A quick model for what "good" looks like
Response rates on cold residential mail are low by nature — fractions of a percent to a couple of percent, depending on list, offer, and frequency. That sounds discouraging until you run the economics for a high-ticket job. Watch what tightening the list does to the same campaign:
| Wrong list | Right list | |
|---|---|---|
| Pieces mailed | 5,000 | 5,000 |
| Share of homes that can buy | 40% | 85% |
| Reachable homes | 2,000 | 4,250 |
| Response among reachable | 0.5% | 0.5% |
| Calls generated | 10 | ~21 |
| Inspections booked (60%) | 6 | ~13 |
| Jobs closed (35%) | ~2 | ~4–5 |
| Avg job value | $14,000 | $14,000 |
| Revenue from the drop | ~$28,000 | ~$63,000 |
Nothing changed except the list. The response rate held steady; you simply stopped wasting half your reach on roofs that can't convert. That's why list quality, not postcard design, is the lever that moves revenue. Hold your offer constant and improve the denominator, and the whole funnel scales with it.
The three sources every roofing list is built from
Every good roofing mailing list is some blend of three raw sources. You will usually use all three.
1. Public property records (the foundation)
County assessor and recorder offices maintain a public record of every parcel: the address, the owner of record, the mailing address (which is not always the property address — that matters), the year the structure was built, square footage, lot size, last sale date, and last sale price. In most states this is genuinely public information, and a large share of counties publish it through an online parcel viewer or a GIS portal.
This is the bedrock of your list. It is cheap (often free) and it covers everyone. Its weakness is that it tells you the year the house was built, not the year the roof was last replaced. A 1985 house may be on its third roof. We will deal with that gap in a minute, because it is the gap that sinks most lists.
2. Your own data (the cheapest, best list you will ever have)
Your CRM, your old estimates, your past customers, your QuickBooks invoice history — this is a list of people who already raised their hand, already let you on their property, and already trust you enough to have your number. It costs nothing to mail and it converts at multiples of cold data. Almost every roofer underuses it. We give it a full section below because, dollar for dollar, it is the highest-return list you own.
3. Layered intelligence (what turns a cheap list into a profitable one)
This is roof age, condition signals, and storm history layered on top of the parcel data. It is what lets you take a flat list of every house in a ZIP and rank it so the top of the list is "old roof, took hail last spring, owner-occupied, owned 12 years" and the bottom is "new roof, no storm, rental." This layer is the difference between a mailing list and a targeting list. It is also the layer that used to be impossible to get at scale — you'd have to drive every street — and is now available as data.
Let's build from each source in turn.
Building from public property records, step by step
This is the do-it-yourself foundation. It is tedious but real, and understanding it makes you a smarter buyer if you later pay for data.
Step 1 — Define the geography before you pull a single record
Don't pull a whole county. Pull the area your crews can actually service profitably and where the housing stock is the right age. A practical filter set:
- Drive radius — typically 20–35 minutes from your yard for residential re-roofs. Past that, windshield time eats your margin.
- Neighborhood age — subdivisions built 15–30 years ago are the sweet spot for a first roof replacement on the original asphalt shingles. A neighborhood built in 2019 is a waste of stamps today; a neighborhood built in 2000 is prime.
- Owner-occupancy and home value band — you want owners who can finance a $12,000–$25,000 job. Records give you last sale price and whether the owner's mailing address matches the property (a proxy for owner-occupied).
Write the geography down as specific subdivisions or ZIP+4 ranges before you query. Discipline here saves thousands later.
Step 2 — Pull the records
You have three realistic ways to get parcel data:
| Method | Cost | Best for | Watch out for |
|---|---|---|---|
| County GIS / assessor portal export | Free–$ | One county, hands-on owners | Formats vary wildly; some cap exports or charge per record |
| Open-records / FOIA request to the assessor | Free–$ | Bulk county data | Can take days to weeks; ask for the format you can use |
| Commercial list/data provider | $$ | Multi-county, ready-to-use | You're paying for convenience; verify what's behind the filters |
If you go the county route, look for a "download," "export," or "bulk data" option on the GIS site, or email the assessor's office and ask how to request a parcel data extract. Many will hand you a CSV or shapefile. Ask specifically for: situs (property) address, owner name, owner mailing address, year built, property class/use code, last sale date, and last sale price.
Step 3 — Filter to residential, owner-relevant parcels
Raw parcel files contain everything: vacant lots, commercial, government, agricultural. Use the property class / land use code to keep only single-family and (if you do them) small multi-family residential. Then apply your owner filters:
- Owner-occupied proxy: keep parcels where the owner's mailing address matches the property address (or is in the same area). A mailing address in another state usually signals a rental or absentee owner. Whether you keep or drop those depends on whether you want to chase out-of-area landlords.
- Year built window: keep your target band (e.g., built 1990–2010 if you're hunting first re-roofs today).
- Length of ownership: a long last-sale date often means an aging roof the owner has lived under for a while; a recent sale can mean a new owner who just got an inspection. Both are mailable, but they want different messages.
Step 4 — This is where DIY hits its wall
You now have a clean list of, say, 6,000 single-family owner-occupied homes built in your window. Here is the problem: year built is not roof age. In a 25-year-old neighborhood, some homes are on the original roof and some were re-roofed after a storm eight years ago. The county record looks identical for both. Mail them the same and you waste a third of your budget on roofs that were just done.
Driving every street to eyeball roofs does not scale past a few hundred homes, and a tired roof and a five-year-old roof look similar from the curb to an untrained eye. This is the exact gap the intelligence layer fills, which is the next section.
The roof-age gap, and how to close it
The whole reason roofing direct mail underperforms is this: the cheapest, most available data (county records) tells you about the building, not the roof. Closing that gap is the highest-leverage move in list building.
Here is how the signals stack up, weakest to strongest:
| Signal | What it tells you | How reliable |
|---|---|---|
| Year the house was built | The roof is at most this old | Weak — re-roofs are invisible |
| Year built + neighborhood storm history | Roughly when roofs in the area got replaced | Moderate, but lumps the whole subdivision together |
| Permit records for re-roofs | A roof permit was pulled on this address | Good where permits are required and digitized — but many re-roofs skip permits, so absence proves nothing |
| Aerial-imagery roof-age estimate | An estimated age range for this specific roof | Strong — it's per-roof, not per-neighborhood |
| Per-roof storm modeling | Whether hail/wind actually hit this roof hard enough to matter | Strong, and it explains why two same-age roofs differ |
A quick word on permits, because roofers ask about them constantly. Where your jurisdiction requires a permit for a re-roof and publishes them, permit records are a useful positive signal — if a permit was pulled in 2021, that roof is new, drop it from the mail. The trap is treating the absence of a permit as proof of an old roof. Plenty of re-roofs happen without a pulled permit, especially insurance-driven storm work and rural areas. So permits are great for removing recently-done roofs and unreliable for finding old ones.
Google and Zillow will not save you here either. Those show the year the structure was built, the same as the county record; they do not track re-roofs, so a home re-roofed last year still reads as a 1992 build. Measurement tools (aerial measurement platforms) tell you the size and pitch of a roof so you can quote it — a different category entirely. None of them answer "how old is this roof," which is the question your list needs answered.
The data that actually closes the gap is a per-roof age estimate from current aerial imagery, paired with whether real storms hit that specific roof. That's the layer worth paying for, and it's where a tool like RoofPredict fits — more on the honest limits of that below.
Layering storm history onto your list (the right way, legally)
Storm exposure is the second-strongest filter after roof age, and it's the one with the most legal landmines. Get the targeting value without stepping on the legal lines.
Why storm data sharpens a list
Two roofs on the same street, same age, same shingle, can be in very different shape because one sat in the core of a hail swath and the other caught the edge. Hail and high wind shorten a roof's remaining life and can create damage worth documenting. If you can rank your list by which roofs actually took a beating — rather than which ZIP the storm passed over — you mail the roofs most likely to be near end-of-life and most likely to have something a homeowner should look into.
Note the distinction, because it matters for both accuracy and honesty: a hail map shows you where it hailed. It does not show you which roofs it wore out. Two houses a block apart can have very different impact exposure based on the storm's path, wind direction, and hail size at that point. Modeling the storm on each roof — rather than painting a whole ZIP as "hit" — is what separates a real targeting signal from a colored weather map.
For the underlying weather facts, public sources are excellent and free: the NOAA Storm Prediction Center and the National Weather Service publish storm reports, and the Insurance Institute for Business & Home Safety (IBHS) has solid research on hail and wind damage to roofing. Use them to verify a date and a footprint. The hard part — which individual roof took it — is what per-roof modeling adds.
The legal line you do not cross in storm mail
This is where roofers get themselves in trouble, so let's be precise. You are a roofer. You may inspect a roof, document its condition with photos and measurements, and prepare an honest estimate to repair or replace it. You may state the facts about your scope of work to a homeowner and, where relevant, to their insurer about the work you would do.
You may not, in your mail or your pitch:
- Offer to handle, manage, negotiate, or adjust the homeowner's insurance claim. That's the work of a licensed public adjuster, and doing it for a roofer's fee is unlicensed public adjusting in most states.
- Interpret coverage or tell the homeowner what their policy will or won't pay.
- Promise approval or a specific payout ("we'll get your claim approved," "we'll get you a new roof paid for").
- Say anything about their deductible — no "we waive it," "we absorb it," "it disappears." Promising to eat a deductible is insurance fraud in many states.
- Advertise a "free roof."
A roofer in Texas learned a version of this the hard way: even advertising yourself as an insurance or claims "specialist" has been treated as crossing into public-adjusting territory. Check your own state's department of insurance rules, and have counsel review any claims-adjacent copy before it goes to print.
What you can say on a storm mailer is plenty powerful and completely clean:
"A hailstorm came through your neighborhood on April 14. We'll inspect your roof, document what we find with photos, and give you an honest written estimate. If there's storm damage, you'll have the facts to take to your insurer — you file, they decide. No cost for the inspection."
That captures the entire reason a homeowner opens a storm postcard — "did my roof get hit, and what now" — and answers it on the documentation-and-estimate side, where you're allowed to operate. You document thoroughly, you write an accurate, Xactimate-aligned repair estimate, and you hand it to the homeowner. The homeowner files; the insurer decides coverage. Keep your copy on that side of the line and you get the response without the regulatory risk.
Mining your own data: the highest-return list you own
If you do nothing else, do this. The single most profitable roofing mailing list almost never gets mailed: your own past customers and old estimates. It is found money sitting in your CRM and your invoicing software, and it costs you only postage.
Think about who's in there:
- Past customers whose neighbors saw your crew and your sign, and who trust you.
- Old estimates that never closed — people who wanted a roof, got a number, and stalled. Some bought from a competitor; many did nothing and still have the aging roof.
- Repair customers you patched two or three years ago whose roof is now genuinely due for replacement.
- Referral sources — past customers who'll send you their neighbor if you stay in front of them.
Worked example: what's hiding in a five-year-old estimate file
Suppose you've been in business eight years and you write 600 estimates a year. That's roughly 4,800 estimates. If your close rate is 30%, then about 3,360 of those people did not buy from you. A good chunk bought elsewhere — but in residential roofing a large share simply stalled and never did anything. Those stalled estimates from 3–6 years ago are now people with a roof that's even older, who already know you and already got a number from you.
Mail 1,500 of those for the cost of postage and a postcard, with a message that acknowledges the history ("We quoted your roof a few years back — it's only gotten older. Here's a fresh look, no charge"), and your response rate will embarrass any cold list. There's no targeting problem to solve: they self-identified as roof-shoppers by asking for an estimate in the first place.
How to pull your own list clean
- Export everything from your CRM, your estimating software, and your accounting system (QuickDuoks/QuickBooks, Jobber, etc.). You want name, property address, mailing address, phone, email, last contact date, job/estimate type, and amount.
- De-duplicate by address. The same homeowner often appears three times across systems.
- Segment by relationship and recency:
- Past full-roof customers (5+ years ago) → roof is mid-life; nurture, ask for referrals, mention maintenance.
- Past repair customers (2+ years ago) → roof may now be due; mail a replacement message.
- Dead estimates (1–6 years ago) → highest priority; they wanted a roof.
- Recent customers (< 2 years) → referral and review asks, not a re-roof pitch.
- Suppress the do-not-contacts — anyone who opted out, complained, or you parted ways with.
- Append roof-age data to the dead-estimate and old-repair segments so you can lead with the strongest cases first. A roof you quoted at 14 years is 19 now.
This is the list to build first. It's the cheapest to assemble, the fastest to mail, and it converts highest. Cold parcel data is how you grow on top of it.
Match the message to the segment
One postcard for the whole list leaves money on the table. The same address deserves a different message depending on how you know them and how old the roof is. A practical map:
| Segment | What they know about you | Roof state | The message that fits |
|---|---|---|---|
| Dead estimate, 3–6 yrs | You quoted them once | Older than when you quoted | "We looked at your roof in [year]. It's only aged since. Here's a fresh, no-charge look." |
| Past repair customer, 2+ yrs | You fixed a leak for them | The patch bought time; roof may be due | "That repair was a band-aid by design. Let's check whether the roof's now at replacement." |
| Past full-roof customer | You did their roof | Mid-life, fine | Referral and review ask; mention a maintenance check, not a re-roof. |
| Cold, old roof, no storm | Nothing | Aging out on age alone | "Roofs in your neighborhood are reaching the age where they fail. Free inspection." |
| Cold, old roof, recent storm | Nothing | Aging and storm-exposed | "A storm came through on [date]. We'll inspect and document — you'll have the facts." |
The production cost of running five versions of a postcard is small with modern variable-data printing; the lift in response is not. At minimum, split your storm-exposed homes from your age-only homes — the two groups open mail for different reasons and the storm group is far more urgent.
Renting vs. buying vs. building your own data
Roofers constantly ask whether they should just buy a list. Here's the honest trade-off.
| Approach | Up-front effort | Cost over time | Quality control | Best when |
|---|---|---|---|---|
| Buy a one-time list from a broker | Low | You re-buy every drop | You trust the broker's filters | You need to mail next week and you'll verify a sample |
| Build from county records yourself | High | Low (your labor) | Total — you see every filter | You have time and one or two counties |
| Subscribe to roof-intelligence data | Low | Recurring, but it carries roof age + storm | High on the signal that matters | You mail regularly and want to stop mailing new roofs |
A bought list is fine as long as you know what's behind the filters. The danger is paying a per-record premium for a list whose "roofing" filter is just "single-family homes built before 2005" — which you could have pulled from the county yourself. Before you buy, ask the broker exactly: Does this account for re-roofs? How do you estimate roof age? Where does the storm data come from, and is it per-roof or per-ZIP? If they can't answer, you're buying year-built parcel data with a markup.
Building from county records is the most control for the least cash, and it's a great fit if you're focused on a tight service area. The labor is real, though — pulling, cleaning, filtering, and deduping a multi-county file is a job.
The subscription path makes sense when the recurring data is carrying the one thing you can't easily get yourself: a per-roof age range plus storm exposure, refreshed over time. That's the layer that keeps you from re-mailing roofs that got replaced since your last drop.
Where RoofPredict fits in your list build
When the bottleneck is the roof-age gap — and for most roofers, it is — that's the specific job RoofPredict does. It takes aerial imagery and weather data per home and gives you, for each address: an estimated roof-age range, a storm history for that specific roof (hail and wind modeled on the roof, rather than the ZIP it sat in), and a resulting priority so a flat list of every house in your area comes back ranked from "due now" to "skip it."
The practical way to use it in a list build:
- Define your area — the subdivisions or ZIPs your crews can service.
- Let it score every roof by age range and storm exposure.
- Mail the top of the list first — old roofs, real storm exposure, owner-occupied — and skip the new roofs you'd otherwise have paid to reach.
- Enrich your own CRM and dead-estimate list with the same roof-age and storm signals, so you lead with the customers whose roofs have aged into replacement.
That's it. It's not a lead service — nobody hands you a homeowner who filled out a form, and it doesn't resell the same prospect to five competitors. It sharpens the outbound you already do by telling you which houses are worth a stamp.
And the honest limits, because a tight trade compares notes:
- Roof age is a range, not a date. It will tell you a roof is roughly 18–22 years old, not that it was installed on a Tuesday in 2004. A range is exactly what you need to decide whether to mail; it is not a substitute for getting on the roof.
- Storm exposure is odds, not proof. Modeling says this roof very likely took damaging hail; it does not prove damage. Only an inspection does. You still climb the ladder.
- It doesn't measure the roof or identify materials — that's a different category of tool. It answers which house, not how many squares.
Used for what it's good at — ranking which roofs are due so you stop paying to mail new ones — it turns a flat mailing list into a targeting list. That's the whole point of the intelligence layer.
Cleaning, formatting, and deduping your list
A great list mailed dirty wastes money on returns and duplicates. Run every list — bought, built, or your own — through this hygiene pass before it goes to the printer.
Standardize the addresses (CASS)
The USPS maintains an address-standardization standard (CASS). Running your list through CASS-certified software (most mail houses do this for you, often for free as part of the job) corrects and standardizes every address to the format the post office expects, flags undeliverable ones, and is what qualifies you for presort postage discounts. Skipping this means paying full first-class rates and mailing pieces that bounce. Ask your mail house to CASS-certify and presort — it pays for itself.
Run NCOA
The National Change of Address (NCOA) database updates addresses for people who've moved and filed with the post office. Running NCOA on an older list — especially your CRM and dead-estimate file — catches the customers who moved. For a roofing list this is double-edged and useful: if your old customer moved, the new owner inherited the aging roof. Either way you want a current, deliverable address.
Dedupe hard
The most common waste in a roofing mailing is the same household getting three pieces because they appear in three source files under slightly different spellings. Dedupe on standardized address, not on name (names vary; a CASS-clean address doesn't). One piece per roof.
Suppress
Maintain a permanent suppression list: opt-outs, complaints, do-not-mails, and addresses where you've already got a signed job. Mailing a re-roof postcard to someone whose roof you're installing next week makes you look like you're not paying attention. Apply suppression on every drop.
A tight pre-mail checklist:
- CASS-standardized and certified
- Presort applied for postage discount
- NCOA run within the last 90 days
- Deduped on standardized address
- Suppression list applied
- Roof-age / storm ranking applied (new roofs removed)
- Owner-occupied / rental decision applied
- Spot-checked a sample of 30 addresses by eye
That last step matters: pull 30 random rows and eyeball them on a map. If five of them are obviously a strip mall or a brand-new subdivision, your filters are wrong and you just caught it before spending $3,000.
Frequency, format, and the offer the list deserves
The list decides who gets mailed; three more decisions decide whether the campaign actually books jobs. They're worth getting right because a clean list mailed once with a weak offer still underperforms.
Mail more than once
A single drop almost never tells you whether direct mail works for your shop. Homeowners ignore the first piece, half-notice the second, and call on the third or fourth — often when their roof finally leaks. Brand recognition compounds: the company whose name they've seen four times this year is the one they call when the ceiling stains. A realistic cadence for a target neighborhood is one touch every four to six weeks across a season, not a one-time blast. Budget for the sequence, not the single piece, and judge results over a quarter.
This is also where roof-age ranking pays off twice. Because you've removed the new roofs, you can afford to mail the same qualified list repeatedly instead of constantly buying new names. You're nurturing a finite set of due roofs until they convert, which is far cheaper than chasing fresh cold data every month.
Pick a format that matches the message
| Format | Cost | Best use |
|---|---|---|
| Standard postcard (6x9 / 6x11) | Lowest | Repeat awareness touches across a neighborhood |
| Oversized postcard | Low–mid | First touch where you want to stand out in the stack |
| Letter in an envelope | Mid | Storm follow-up or dead-estimate re-engagement that should feel personal |
| Handwritten-style note | Higher | Past customers and referral asks, low volume |
A jumbo postcard gets noticed; a letter feels personal and is right for storm and CRM re-engagement, where you want the homeowner to feel addressed rather than blasted. Test format against your best segment, not your whole list.
Make the offer concrete
The job of the postcard is one thing: get a worn-out roof a phone call or a booked inspection. That argues for a single, low-friction offer:
- A genuinely free, no-obligation inspection — make sure it's actually free with no strings the homeowner doesn't expect (the FTC cares about this).
- A reason to act tied to the specific roof or storm, not generic urgency. "Roofs on your street are reaching the age where they fail" beats "Spring special!"
- One clear way to respond — a phone number and a short URL or QR code — and nothing else competing for attention.
Resist the urge to put your whole service menu on the card. A worn-out roof, a free inspection, and a phone number outperform a cluttered piece every time. The list got the piece to the right house; the offer's only job is to convert the open into a call.
Staying legal and deliverable
Direct mail to homeowners is one of the least-regulated channels you can use, which is part of why it works for roofing. But there are real rules, and a few that roofers trip over.
Mail is the safe channel; phone and text are not
Physical mail to a residential address is broadly permissible. Cold calling and especially cold texting are a different legal world — the Telephone Consumer Protection Act (TCPA) and the FTC's rules carry serious per-violation penalties, and "I bought the list" is not a defense. If you're tempted to text the same list you mail, stop and get specific legal advice first. The data you build for mail is not automatically safe to call or text.
Truth-in-advertising on the postcard
The FTC requires advertising to be truthful and not misleading. For roofers that means:
- Don't invent storm dates or claim damage you haven't seen.
- Don't promise an insurance outcome (per the claims rules above).
- If you offer a "free inspection," make sure it's actually free with no strings the homeowner doesn't expect.
- Honor any opt-out promptly and keep the suppression list current.
Data sourcing
Public property records are public, and using them for mail is standard. If you buy data, your contract with the broker should make clear the data is licensed for marketing use. Keep the paperwork.
Storm copy, one more time
Because it's the easiest place to get hurt: document and estimate, never adjust or promise. "We'll inspect and document, you file, the insurer decides" is your safe lane. Anything that sounds like handling the claim, interpreting coverage, promising a payout, or touching the deductible needs to come off the postcard.
Putting it together: a 30-day list build
Here's the whole thing as a sequence you can run starting this week.
Week 1 — Mine what you already own. Export your CRM, estimating software, and accounting system. Dedupe by address. Build three segments: dead estimates (1–6 years), old repair customers (2+ years), past full-roof customers (5+ years). This list costs you nothing and converts highest. Get it to a mail house and drop the dead-estimate segment first.
Week 2 — Define and pull the cold geography. Write down your service area as specific subdivisions and ZIPs, filtered to neighborhoods 15–30 years old. Pull parcel data from your county GIS or request an extract. Filter to single-family, owner-occupied, in your year-built window.
Week 3 — Close the roof-age gap. This is the step that decides whether the cold mail makes money. Layer roof-age and storm data onto the parcel list so you can rank it and remove the new roofs. Pull recent re-roof permits where your county publishes them and suppress those addresses. If you're using roof-intelligence data, this is where it does its work — ranking every house by age range and storm exposure. Drop the bottom of the list entirely.
Week 4 — Clean, suppress, and mail. Run the combined list through CASS, presort, NCOA, dedupe, and your suppression list. Spot-check 30 addresses on a map. Mail the top of the ranked list. Track response by segment so next quarter you mail more of what worked and less of what didn't.
Then do it again. A roofing mailing list is not a one-time purchase; it's an asset you maintain. Roofs age into your target band every month, storms reshuffle the rankings, and your own customer book grows with every job. Refresh the data, re-rank, suppress the roofs you've since done, and mail again.
What pros get wrong
A few mistakes show up over and over, even with experienced operators:
- Mailing by ZIP instead of by roof. A ZIP code is not a target. Within one ZIP you have new construction, rentals, and 22-year-old roofs all mixed together. Rank by roof, not region.
- Ignoring the dead-estimate file. It's the highest-converting list in the building and most roofers never mail it. Fix that before you spend a dollar on cold data.
- Treating year-built as roof age. The mistake that quietly wastes a third of every cold budget. Year built is a ceiling on roof age, nothing more.
- Buying a list without auditing the filters. If the broker can't explain how they handle re-roofs, you're paying a markup for county data.
- Mailing dirty. No CASS, no dedupe, no suppression — paying full postage to mail the same house three times and bounce a tenth of the batch.
- Crossing the claims line on storm mail. Promising approvals, touching deductibles, calling yourself a claims specialist. The cleanest storm copy — document, estimate, you file, they decide — also performs the best.
- Mailing once and judging the channel. Direct mail compounds with frequency and brand recognition. One drop tells you almost nothing.
Get the list right and a modest, honest postcard mailed to the right roofs will out-earn a beautiful one blasted to a whole county. The roofs that are due are already out there on your streets and already sitting in your old estimate file. The job is to find them and stop paying to talk to everyone else.
If the roof-age gap is your bottleneck, that's the exact problem RoofPredict was built to close: a roof-age range and real storm exposure per address, so your mail goes to the houses that are due and skips the ones that aren't. Hand it an area you know — or a roof you've already inspected — and judge for yourself whether it nails the call.
FAQ
Where do roofers get the data to build a mailing list?
Three sources, usually blended. First, public county property records (assessor/recorder offices) give you every address, owner, mailing address, year built, and last sale — the free foundation. Second, your own CRM, old estimates, and past-customer files — the cheapest and highest-converting list you own. Third, a layered intelligence source that adds per-roof age and storm exposure so you can rank the list and remove new roofs. Most profitable lists use all three.
Can I just use the year a house was built to find old roofs?
No, and this is the most expensive mistake in roofing direct mail. Year built tells you the roof is at most that old, but it can't see re-roofs. In a 25-year-old neighborhood, some homes are on the original roof and some were replaced after a storm five years ago — the county record looks identical for both. Year built is a ceiling on roof age, not the roof age itself.
Should I buy a roofing list or build my own?
Building from county records gives you the most control for the least cash and suits a tight service area, but the cleaning and filtering is real labor. Buying a one-time list is fine if you audit the filters — specifically ask how the broker handles re-roofs and whether storm data is per-roof or per-ZIP. A recurring roof-intelligence subscription makes sense when you mail regularly and want the roof-age and storm signal refreshed so you stop re-mailing roofs that got replaced.
How do I find homes that took storm damage without breaking the law?
You can absolutely target by storm exposure: use public NOAA/NWS storm reports for dates and footprints, and per-roof storm modeling to rank which specific roofs likely took hail or wind. The legal line is in your copy and your offer. You may inspect, document, and write an estimate. You may not handle, negotiate, or interpret the insurance claim, promise approval or a payout, say anything about the deductible, or advertise a free roof. Safe framing: 'We inspect and document, you file, the insurer decides.'
What's the most profitable roofing list I'm probably not mailing?
Your dead-estimate file. People who asked you for a quote and never bought are self-identified roof shoppers who already trust you and already have your number. Their roofs have only gotten older since. Mailing them costs only postage and converts at multiples of cold data. Pull every estimate from the last one to six years, dedupe, and mail that segment before you spend a dollar on cold lists.
How does RoofPredict help build a roofing mailing list?
It takes aerial imagery and weather data per home and returns, for each address, an estimated roof-age range, that roof's storm history (hail and wind modeled on the specific roof, rather than the ZIP), and a resulting priority — so a flat list of every house in your area comes back ranked from 'due now' to 'skip it.' You mail the top first and stop paying to reach new roofs. It also enriches your own CRM and dead-estimate list with the same signals. It is not a lead service and doesn't resell homeowners; it sharpens the outbound you already do.
What does it cost to mail the wrong list?
Roughly: if an all-in mailer runs $0.55 a piece and you blast 15,000 homes where only about 40% have a roof old enough to replace, you're effectively paying around $1.38 to reach each home that can actually buy. Filter by roof age first, mail 4,000 homes where 85% are reachable, and your effective cost drops to about $0.65 per reachable home — a quarter of the spend in front of more qualified houses. Same postcard, very different return.
Do I need to clean my list before mailing, and how?
Yes. Run it through CASS standardization (corrects addresses and qualifies you for presort postage discounts), NCOA (updates people who moved), dedupe on the standardized address so one roof gets one piece, and apply a suppression list of opt-outs and jobs you've already booked. Most mail houses do CASS and presort as part of the job. Then spot-check 30 random addresses on a map to catch bad filters before you spend the budget.
Are permit records a good way to find old roofs?
They're good for removing recently-done roofs, not for finding old ones. Where your jurisdiction requires and publishes re-roof permits, a permit pulled in 2021 tells you that roof is new — suppress it. But the absence of a permit doesn't prove a roof is old, because plenty of re-roofs (especially storm and rural work) happen without a pulled permit. Use permits to subtract new roofs, and use roof-age data to find old ones.
Is it legal to text or call the list I built for direct mail?
Not automatically, and you should treat phone and text as a separate legal world from mail. Physical mail to a residence is broadly permissible. Cold calling and texting fall under the TCPA and FTC rules with serious per-violation penalties, and buying the list is not a defense. If you want to call or text the same homeowners, get specific legal advice first — the data being safe to mail does not make it safe to dial or text.
The Roofline by RoofPredict
Stay Ahead of Roofing Market Changes
Join The Roofline by RoofPredict for weekly roofing intelligence: material price signals, storm demand, insurance and regulatory updates, sales tactics, and local contractor opportunities.
Sources
- National Roofing Contractors Association (NRCA) — nrca.net
- Insurance Institute for Business & Home Safety — Hail — ibhs.org
- NOAA Storm Prediction Center — spc.noaa.gov
- National Weather Service — Storm Reports — weather.gov
- USPS — Move Update & CASS Certified Address Standardization — postalpro.usps.com
- USPS — National Change of Address (NCOALink) — postalpro.usps.com
- FTC — Advertising and Marketing Basics — ftc.gov
- FTC — Telemarketing Sales Rule — ftc.gov
- FCC — Telephone Consumer Protection Act (TCPA) Rules — fcc.gov
- U.S. Census Bureau — American Housing Survey — census.gov
- Texas Department of Insurance — Public Insurance Adjusters — tdi.texas.gov
- National Association of Insurance Commissioners (NAIC) — naic.org
- International Code Council — International Residential Code (IRC) — iccsafe.org
- RoofPredict — roofpredict.com
Related Articles
How to Build an Aged Roof Mailing List by Address (Without Burning Your Postage Budget)
A practical playbook for roofing contractors who want to mail only the houses with old roofs, address by address, instead of carpet-bombing whole ZIP codes and praying.
The Best Mailing List for Roofing Contractors Is the One You Build From Roof Age and Storm Data
Most roofing mailing lists are just county property dumps with a pretty cover. Here is how to build one that targets roofs the storm wore out and the roofs aging out, then mail it so the phone rings.
How to Build a Storm Damage Mailing List for Roofers That Actually Converts
A practitioner's playbook for building a storm damage mailing list that puts your mail in the right boxes after a hail or wind event, instead of carpet-bombing a ZIP code.