How to Build a Targeted Mailing List by Neighborhood for Roofing
On this page
Most roofing mail programs fail for a boring reason: the list is wrong. A crew will spend weeks tuning a postcard headline, A/B testing a yellow background against a blue one, and arguing about whether to lead with the phone number or the QR code, while every single one of those cards drops into the same 9,000-home ZIP code regardless of whether the roof is two years old or twenty-eight. You can have the best postcard in the county and still lose money if it lands on driveways where nobody needs a roof for another decade.
The fix is not a better postcard. It's a tighter list. A targeted mailing list built at the neighborhood level — and then filtered down to the individual roofs most likely to be due — changes the math of the whole campaign. When the roofs you mail are actually aging out or actually got worked over by the last hailstorm, your response rate climbs, your cost per appointment drops, and your reps stop wasting Saturdays knocking on doors that were re-roofed in 2019.
This is a working playbook for building that list. It covers where the data comes from, how to filter it down to the streets and structures that matter, how to keep your list clean and legal, what to actually print, and how to run the whole thing as a repeatable system instead of a one-off blast you regret three weeks later when the call log is empty. The numbers and workflows here come from how residential and storm-restoration shops actually run direct mail, not from a vendor brochure.
Why neighborhood-level beats ZIP-level (and why most lists are neither)
There are roughly three altitudes you can target at, and most contractors operate at the wrong one.
ZIP-code blasting is the default. You buy or rent a list of every residential address in a ZIP, or you use a saturation product that drops to every active address on a postal route, and you mail. It's cheap per piece and brain-dead simple to execute. It's also the lowest-yield approach there is, because a ZIP code is an arbitrary postal boundary that can hold a 1960s ranch subdivision, a 2018 new-build community, and a stretch of apartments all at once. You're paying to reach thousands of roofs that have no chance of converting this year.
Neighborhood-level targeting draws the boundary around a subdivision, a platted development, or a cluster of streets that were built around the same time, share a builder, and therefore share a roof. This is where the real leverage lives. Asphalt shingle roofs in a tract built in 2004 are all hitting the back third of their service life at roughly the same moment. If one house on Maple Court is showing granule loss and curling, the forty houses around it built by the same crew with the same 3-tab or architectural shingle are on the same clock. Targeting the neighborhood lets you ride that shared timeline.
Structure-level targeting is the top altitude: you target individual roofs based on what you actually know or can estimate about each one — its likely age, its slope and size, whether it sits in a footprint that took hail, whether the property records suggest a re-roof permit was pulled. This is where a neighborhood list becomes a targeted list. You start with the neighborhood, then you carve out the homes that were obviously redone last year and the homes too new to matter, and you mail the remainder hard.
The goal is to operate at neighborhood altitude for sourcing and at structure altitude for filtering. Get both right and a 500-piece drop can outperform a 5,000-piece saturation blast on total appointments booked, at a fraction of the print and postage spend.
A quick gut-check on the economics
Direct mail response rates vary wildly, but for roofing a useful planning band is 0.5% to 2% on a cold, reasonably targeted list, and higher on storm-triggered drops into a fresh-damage footprint. Here's why list quality matters so much in raw dollars. Assume a postcard program costs roughly $0.55 to $0.90 all-in per piece for a 6x9 or 6x11 card at modest volume (print + postage + list), and assume your average job nets you $3,000 in gross margin.
| Scenario | Pieces | Response rate | Leads | Close rate | Jobs | Gross margin | Mail cost @ $0.75 | Net |
|---|---|---|---|---|---|---|---|---|
| ZIP saturation, untargeted | 10,000 | 0.4% | 40 | 20% | 8 | $24,000 | $7,500 | $16,500 |
| Neighborhood, age-filtered | 2,500 | 1.4% | 35 | 30% | 10.5 | $31,500 | $1,875 | $29,625 |
| Storm footprint, fresh | 1,200 | 3.0% | 36 | 35% | 12.6 | $37,800 | $900 | $36,900 |
The untargeted blast mailed four times as many pieces and booked fewer jobs at nearly double the cost. The close rate climbs too, because a rep walking into a neighborhood of genuinely aging roofs has an easier conversation than one trying to sell a roof to someone who doesn't need one. None of these numbers are guarantees — your market, season, and offer move them around a lot — but the shape holds everywhere: fewer, better-targeted pieces win.
The data that actually makes a list "targeted"
A mailing list is just names and addresses until you attach signals to it. The signals that matter for roofing fall into four buckets. The more of these you can layer, the tighter your targeting.
1. Roof age (the single most valuable signal)
If you could attach one number to every address, it would be roof age. A roof's odds of needing replacement climb steeply in the last third of its service life. Standard architectural asphalt shingles are commonly warranted for 25 to 30 years but realistically deliver something less than that depending on climate, ventilation, and install quality; 3-tab shingles run shorter. The replacement sweet spot — where homeowners are most receptive — tends to be roofs in roughly the 12-to-22-year range, plus anything visibly failing.
Material matters when you set the target band, because service life isn't uniform. A rough field guide for setting your age filter by likely material:
| Roof material | Typical service life | Practical target band for mail |
|---|---|---|
| 3-tab asphalt shingle | ~15–20 years | 10–18 years |
| Architectural asphalt shingle | ~22–30 years | 14–24 years |
| Wood shake | ~20–30 years | 16–26 years |
| Metal (standing seam) | ~40–60 years | rarely worth cold mail on age alone |
| Tile/slate | 50+ years | target underlayment/flashing failures, not the field |
These are planning ranges, not promises — install quality, ventilation, and climate move them by years in either direction. The point is to set your age filter against the material the neighborhood was likely built with. A 2003 tract of architectural-shingle ranches and a 1980s neighborhood of wood-shake homes are on completely different clocks, and a single blanket age filter would misfire on one of them.
The honest problem: you almost never know the exact install date of a stranger's roof. What you can get is a defensible range. The two practical sources are:
- Property and permit records. County assessor data gives you the year the house was built, which for an original roof is a usable proxy. Building-permit records, where a jurisdiction publishes them, can show a re-roof permit and its date — that's the cleanest possible signal that a roof was redone (or, conversely, that it hasn't been touched since construction). Permit coverage is wildly inconsistent by county; some publish a clean searchable feed, many don't.
- Aerial and satellite imagery analysis. Newer roofs look different from old ones from above — color uniformity, granule coverage, the presence of streaking or moss, patching. Tools that analyze aerial imagery can estimate a roof-age range per address from those visual cues. This is an estimate, not a birth certificate; treat it as a range and a probability, never a fact you assert to a homeowner.
The practical move is to combine them: year-built as a floor, permit data to catch re-roofs, and imagery to refine and to catch the homes where the records are stale.
2. Storm exposure
For restoration shops, the second signal is whether a given roof actually sat under significant weather. Not "was there a storm in the county" — did this specific roof's footprint take hail of a damaging size or wind above a damaging threshold. The National Weather Service and the Storm Prediction Center publish storm reports and hail/wind swaths; NOAA's storm event database archives them. Hail around 1 inch and up starts to matter for asphalt shingles, and the relationship between hail size, wind, roof age, and actual damage is messy — a 15-year-old roof and a 2-year-old roof in the same swath are not equally hurt.
The key discipline here: storm exposure is a probability, not proof of damage. A hail swath tells you which neighborhoods are worth getting on a roof to inspect, not which homes have a claim. We'll come back to how to talk about that honestly and legally, because this is exactly where contractors get themselves in trouble.
3. Homeownership and tenure
You want owner-occupied homes. Renters can't authorize a roof. Skip-trace and property data can flag owner-occupied versus absentee/rental, and length of ownership. Length of residence matters because a homeowner who's been in the house 10+ years is more likely to be on the original roof and more likely to be thinking about it.
4. Home and roof characteristics
Square footage, number of stories, roof slope and complexity, and likely roofing material all affect job size and your ability to price. A simple gable ranch and a cut-up two-story with multiple valleys are very different jobs. Some of this comes from assessor data; roof geometry can be estimated from aerial measurement tools. You don't need this to mail, but it helps you prioritize the high-value structures and prep accurate conversations.
The demographic overlay (use lightly)
List vendors will happily sell you income, age, and lifestyle overlays. These have some value — financing conversations differ by income band — but they are a distant fifth signal for roofing. A roof needs replacing based on its physical condition, not the household's Prizm cluster. Don't let a vendor talk you into paying a premium for demographic selects while ignoring roof age, which is the variable that actually predicts the sale.
How the signals stack in practice
The reason to layer signals rather than rely on any single one is that each covers a different blind spot. Year built misses re-roofs. Permit data is incomplete in most counties. Imagery can be fooled by a roof that was cleaned or by poor image resolution. Storm data tells you about exposure, not damage. Owner-occupancy flags can lag a recent sale. No single source is clean enough to bet a campaign on by itself.
Stacked together, they cover each other's gaps. Picture three homes on the same street, all built in 2005:
- Home A: year built 2005, no re-roof permit, imagery reads as a 16–20 year roof showing streaking, owner-occupied 14 years. Every signal points the same direction — this is a prime A-tier target.
- Home B: year built 2005, but a re-roof permit shows 2022 and imagery confirms a clean, uniform roof. The year-built proxy would have mailed it; the permit and imagery suppress it. Money saved.
- Home C: year built 2005, no permit on record, but imagery reads as a recently replaced roof. Permit data was incomplete for this parcel; imagery caught what the records missed. Suppressed.
That's the entire argument for stacking: any one signal would have made an expensive mistake on at least one of these three homes. Together they sort the street correctly. The more independent the sources, the fewer wasted pieces.
Where to source the raw list
You have four realistic sourcing routes, and most mature shops use more than one.
Route 1: USPS Every Door Direct Mail (EDDM)
EDDM lets you mail to every address on a chosen postal carrier route without buying a list or even knowing the names. You pick routes off a USPS map, hit a reduced per-piece postage rate, and drop bundled mail at the post office. It's the cheapest postage path and requires no list at all.
The catch: EDDM is saturation by design. You mail everyone on the route — every renter, every brand-new build, every house that re-roofed last spring. You can choose routes by overlaying them against neighborhoods you know are aging, and you can filter to residential-only, but you cannot suppress individual addresses. EDDM is a neighborhood-altitude tool with no structure-level filtering. It's a fine choice when an entire platted subdivision is genuinely uniform and on the same roof clock; it's wasteful when the route is mixed.
Route 2: Purchased/rented targeted lists
List brokers and data platforms sell address lists you can filter by geography plus the overlays above (owner-occupied, year built, home value, length of residence). You pay per record, you can mail first-class or standard, and you can suppress and dedupe. This is the workhorse for age-targeted residential programs because you can actually filter by year built and owner-occupancy before you spend a dime on print.
The catch: the depth and accuracy of the filters vary by vendor, and "year built" is not "roof age" — it misses every re-roof. You're also renting in many cases, meaning one-time use; read the license.
Route 3: Build your own from public records
County assessor and recorder data, and where available permit feeds, are public. A motivated shop can pull parcel data, filter by year built and owner-occupancy, and assemble an address list with no broker markup. Some counties offer bulk data exports or open GIS portals; others make you scrape or request records.
The catch: it's labor. Data hygiene, deduping, address standardization, and keeping it current are real work. But the cost per record approaches zero, and you own the asset.
Route 4: Roof-condition and storm-intelligence data
This is the newest route and the one that turns a neighborhood list into a structure-targeted one. Instead of (or on top of) year-built, you attach an estimated roof-age range per address from aerial imagery, and a storm-exposure model per roof from weather data. Now you're not mailing "every house built before 2010" — you're mailing "the houses whose roofs read as 14-to-20 years old and sit inside last month's hail swath, owner-occupied, minus the ones with a recent re-roof permit."
This is where a platform like RoofPredict fits. It estimates a roof-age range per address from aerial imagery and models storm physics per roof, then lets you rank and enrich a list — including your own existing mailing list or CRM — by which roofs are most likely due. The honest framing matters: roof age comes back as a range, not a date, and storm exposure comes back as odds, not a confirmed claim. You use it to decide which doors and routes to prioritize and which to suppress, not to make promises about any individual roof. More on exactly how that slots into the workflow below.
Sourcing routes at a glance
| Route | Targeting altitude | Cost per piece tendency | Filters by roof age? | You own the list? |
|---|---|---|---|---|
| EDDM | Neighborhood (route) | Lowest postage | No | No (no list) |
| Purchased/rented list | Structure (by year built) | Medium | Proxy only (year built) | Often rented |
| DIY from public records | Structure | Lowest data cost, high labor | Proxy only (year built + permits) | Yes |
| Roof/storm intelligence | Structure (by roof condition) | Data adds cost, cuts waste | Yes (estimated range) | Enriches your own list |
A step-by-step workflow to build the list
Here's the actual sequence. Run it the same way every time and it becomes a repeatable system you can hand to a marketing coordinator.
Step 1: Define the geography
Start with neighborhoods, not ZIPs. Pull up a map of your service area and mark the subdivisions you already know are aging — the ones where you've already sold a few roofs, where your crews report seeing curling and granule loss, where the original builds are 12 to 22 years old. Your own past-job map is gold here: jobs cluster, and the houses around a roof you replaced last year are statistically due.
Draw boundaries around 5 to 15 candidate neighborhoods. Note the approximate build era of each if you know it. This is your sourcing frame.
Step 2: Pull the raw addresses
For each neighborhood, get every residential address inside the boundary. Use a list vendor with polygon/radius selection, a public-records pull, or EDDM route maps. At this stage you want completeness — every door — because you'll filter down next.
Step 3: Attach signals and score
Now enrich. At minimum, attach owner-occupancy and year built. If you can, attach an estimated roof-age range and storm-exposure flag per address. Then score each address. A simple, effective scoring model:
- Roof-age range (highest weight): peak score for the 12–22 year band; lower for younger; high again for anything reading as failing/older.
- Storm exposure (restoration programs): bump anything inside a recent damaging hail/wind swath.
- Owner-occupied: required; renters get dropped, not scored.
- Length of residence: mild bump for long tenure.
- Re-roof permit on record: hard suppress if recent.
You don't need machine-learning sophistication. A weighted sum that sorts addresses into A/B/C tiers is enough to mail the A's first.
Step 4: Suppress the obvious misses
This is the step most contractors skip, and it's where half the waste lives. Suppress:
- Recent re-roofs. Permit data, a visible new roof in imagery, or a job you did yourself. Mailing a brand-new roof a "your roof may be aging" postcard burns money and credibility.
- New construction too young to matter.
- Renters and absentee-owned addresses.
- Your own past customers — unless you're running a deliberate referral or maintenance touch, in which case they get a different piece, not the acquisition card.
- Do-not-mail and prior complainers. Keep a permanent suppression file.
- Vacant and undeliverable addresses (run NCOA/CASS — see the hygiene section).
Step 5: Standardize, dedupe, and validate addresses
Run the file through address standardization (CASS) and move-update processing (NCOA) so you're not mailing to people who moved and not paying postage on undeliverable junk. Dedupe by household so a two-owner home gets one card, not two. This step alone routinely shrinks a raw list by 5–15% and saves real postage.
Step 6: Tier and schedule
Split the surviving list into A/B/C tiers. Mail the A tier (best roof-age + storm fit) first and on the tightest cadence. Plan a sequence — direct mail rarely works as a single touch.
Step 7: Mail, track, and feed results back
Mail with a trackable response mechanism (more below), log every response against the address, and feed outcomes back into your scoring. Over a few cycles you'll learn which neighborhoods and which roof-age bands actually convert in your market, and the list gets smarter each round.
Where RoofPredict fits in this workflow
The two steps above that are hardest to do well by hand are Step 3 (attach roof-age and storm signals) and Step 4 (suppress recent re-roofs and rank by likelihood). Year-built data is a blunt instrument: it tells you nothing about the 30% of homes in an aging subdivision that already re-roofed, and nothing about which homes in a storm's path actually sat under the worst of it.
RoofPredict is built to fill exactly that gap. It looks at aerial imagery to estimate a roof-age range for an address, and it models storm physics per roof so a hail or wind event is scored against each individual footprint rather than smeared across a whole county. You can feed it your own existing mailing list or CRM and get it back enriched with those signals, then rank addresses by which roofs are most likely due and suppress the ones that clearly aren't. In practice that turns Step 2's raw neighborhood pull into a Step 6 tiered list with a lot less manual record-chasing.
What it does not do, and where you should keep your expectations honest:
- It returns a roof-age range, not an install date. You'll see something like an estimated band, with a confidence that varies by image quality and roof type. Treat it as "this roof reads as likely 14–19 years old," never "this roof is 17 years old."
- Storm modeling produces odds, not a confirmed claim or damage finding. It tells you which roofs are worth getting eyes and a ladder on, not which roofs are damaged. The only way to know if a roof is damaged is to inspect it.
- It ranks and enriches; it does not write your postcard, knock the door, or close the job. It makes the list sharper. The selling is still on you.
Used that way — as the enrichment-and-ranking layer between a raw neighborhood pull and a printed drop — it does the part of the work that's genuinely hard to do by hand at scale, and it leaves the parts that should stay human (the conversation, the inspection, the estimate) to your team.
Storm restoration lists: do this without crossing the legal line
Storm work supercharges direct mail because the trigger is fresh and the urgency is real. It's also the single fastest way for a roofing company to get a cease-and-desist, a state complaint, or a reputation problem — because the temptation is to write copy that promises things you are not allowed to promise. Build the list aggressively; write the message carefully.
Building the storm list
When a damaging hail or wind event hits, the sequence is:
- Get the swath. Pull the storm reports and hail/wind footprint from the National Weather Service / Storm Prediction Center and NOAA's storm database. Map it.
- Intersect with your roof data. The addresses that matter are inside the damaging-size swath and have roofs old enough that damage is plausible and worth claiming. A brand-new roof in the swath is far less likely to be a viable inspection than a 16-year-old one. This is exactly the roof-age + storm-physics intersection a tool like RoofPredict is built to compute per roof.
- Suppress and tier as usual. Owner-occupied, no recent re-roof, prioritized by the intersection score.
- Mail fast. Storm response decays. The first credible contractor in the neighborhood with a clean, honest message wins disproportionately.
The do-not-say list (memorize this)
A roofer may inspect a roof, document damage with photos and measurements, and prepare an accurate repair estimate for their own scope of work. The homeowner files their own claim; the insurer decides coverage. What a roofer may not do — for a fee — is act as a public adjuster. Concretely, your mail piece and your reps must never:
- Promise or imply a specific payout, approval, or that a claim will be covered. You don't decide coverage; the carrier does.
- Promise the deductible is waived, absorbed, eaten, or "gone." Offering to cover a customer's deductible is illegal in many states and is insurance fraud framing everywhere. Don't say it, don't imply it, don't wink at it.
- Advertise a "free roof." It's not free; the homeowner has a deductible and a policy. "Free roof" copy is both misleading and a magnet for complaints.
- Negotiate, adjust, "handle," or "fight" the claim on the homeowner's behalf for a fee, or represent the homeowner against their insurer. That's unlicensed public adjusting in most states.
- Interpret the policy or tell the homeowner what their coverage means. You can describe what you found and what your repair scope costs; you cannot opine on coverage.
What you CAN say (and it's plenty)
The safe, effective frame is documentation and estimate, with the homeowner and insurer in their proper roles:
- "Recent storms moved through [area]. We provide free, no-obligation roof inspections and will document what we find."
- "If we find storm damage, we'll give you a detailed, photo-documented report and a written estimate to repair it, aligned to standard industry pricing."
- "You keep the report and estimate. If you choose to file a claim with your insurer, you'll have thorough documentation to provide."
- "We'll meet your adjuster on-site to show them exactly what we found in our scope."
That language captures every bit of the homeowner's real intent — did my roof get hurt, and what do I do — while keeping you firmly on the documentation-and-estimate side. You inspect, you photograph, you write an Xactimate-aligned estimate for your scope, you hand it over. The homeowner files. The insurer decides. Teach this to every rep, and put it in writing in your training, because one cowboy with a "we'll get your deductible waived" line can cost the whole company.
A note on Xactimate-aligned estimating
When you document and estimate, align your repair scope and pricing to the standard estimating platform the carrier's adjuster is using (commonly Xactimate). You're stating facts about your scope — these shingles, this square footage, this flashing, this underlayment, at these line-item prices. That's your lane and you should own it: thorough photos, accurate measurements, line-item estimates. Supplementing your own estimate with items the original scope missed (proper flashing, code-required items, accessories) is part of accurate estimating. Arguing the homeowner's coverage with the carrier is not.
What to actually print and mail
The list does most of the work, but the piece still has to convert. A few hard-won rules.
Format and size
For roofing, a larger postcard (6x9 or 6x11) generally beats a standard 4x6 — it survives the mail-sort-over-the-trash-can moment better and gives room for a real before/after roof photo. Postcards beat letters for cold acquisition because they get read without being opened. Heavy stock signals legitimacy. If you're running EDDM, design to the EDDM size and weight rules.
The message hierarchy
On a roofing postcard, in order of importance:
- Relevance signal — something that says this is about your roof, your street, right now. "Roofs in [neighborhood] built in the early 2000s are reaching the age where granule loss and curling show up." Or for storm: "Hail hit [area] on [date]." Specificity is the whole game.
- The offer — a free, no-obligation inspection and written report/estimate. Low-friction, no-pressure.
- Proof — a real local photo, a license number, years in business, a genuine review count. No fabricated stats, no fake urgency.
- One clear call to action — phone number and a QR code to a simple booking page. Make the response mechanism trackable.
- Trust footer — license, insurance, manufacturer certifications, BBB if you have it.
Personalization
Variable-data printing lets you drop the neighborhood name, sometimes the street, even a relevant detail onto each card. "A note for homeowners on [Street Name]" outperforms generic copy because it reads as not-junk. Don't over-creep it — referencing the specific roof age of a stranger's house can feel invasive and, in the storm context, can stray toward implying a damage finding you haven't made. Neighborhood and street are the safe, effective level of personalization.
Honest copy, always
Never fabricate a statistic, never invent a fake deadline, never imply a payout or a free roof. Beyond the legal exposure, your best long-term customers — the ones who refer — are the ones who trusted the card because it was straight. Write like a competent neighbor, not a carnival barker.
Cadence: one drop is a wasted drop
Single-touch direct mail underperforms because timing is everything and you can't predict the week a given homeowner decides to deal with their roof. The fix is a sequence, not a blast.
A workable residential cadence into an age-targeted A-tier neighborhood:
| Touch | Timing | Piece | Angle |
|---|---|---|---|
| 1 | Week 0 | 6x9 postcard | Neighborhood + roof-age relevance; free inspection offer |
| 2 | Week 3 | 6x9 postcard | Different headline/photo; same offer; light social proof |
| 3 | Week 7 | Postcard or letter | Seasonal hook (before winter / before storm season) |
| 4 | Week 12 | Postcard | "We've been working in [neighborhood]" + recent local job |
For storm programs the cadence compresses hard — first drop within days of the event, a follow-up 7–10 days later, because the window closes fast and competitors are mailing the same swath.
The principle: 3–4 touches over a quarter to the same well-targeted list will out-pull the same budget spread thin across one touch to four times as many homes. Concentrate.
Why concentration works mathematically
There's a real reason concentration beats spread, and it's worth understanding so you can defend the budget call to a partner who wants to "reach more people." Direct mail response is partly a function of recognition. The second time a homeowner sees your name on a card, you're no longer a stranger; by the third, you're the roofer who keeps showing up in the neighborhood, which reads as established and local. Spreading one touch across four times the homes means every recipient sees you exactly once, as a cold stranger, with zero recognition compounding.
Work a rough example. Suppose a single cold touch into a good list pulls 0.8%, and each repeat touch into the same list adds another 0.6% (with some decay). Mail 2,500 homes four times and you might pull cumulative responses in the range of 0.8% + 0.6% + 0.5% + 0.4% across the sequence — call it 2.3% of the list responding at some point, or roughly 57 leads from 10,000 total pieces. Mail 10,000 different homes once at 0.8% and you get about 80 leads but at a far worse close rate, because three-quarters of those homes weren't filtered as tightly and many don't need a roof. The concentrated program also builds neighborhood reputation you can't buy with a single drop, and it's the version that produces referrals. Spread looks better on a "homes reached" report and worse on a profit report.
Keeping the list legal and clean
Direct mail is far less regulated than calls, texts, and email — there's no national do-not-mail registry the way there is a Do Not Call registry — but you are not in a free-for-all, and sloppiness costs money even when it's legal.
Postal and deliverability hygiene
- CASS standardization corrects and formats addresses to USPS standards so they actually deliver and qualify for automation discounts.
- NCOA (move update) processing flags people who filed a change of address; required for certain postage rates and it stops you paying to mail empty houses. Run it within the timeframe your postage class requires.
- DSF2 / deliverability scrubbing catches vacants and undeliverable addresses.
- Maintain a permanent suppression file: opt-outs, complainers, past customers you don't want acquisition mail going to, and known bad addresses. Honor removal requests promptly — it's both courteous and good practice.
Truth-in-advertising
The FTC's truth-in-advertising rules apply to your mail. Claims must be truthful and substantiated. "Free inspection" must actually be free with no hidden hook. Don't misrepresent affiliations, certifications, or government connection (no mailers dressed up to look like official notices). For storm mail, the do-not-say list above is your real exposure — most storm-mail complaints to state regulators are about deductible/payout/free-roof claims, not about mailing itself.
Data licensing
If you rented a list, you usually licensed it for a defined number of uses. Don't quietly load a one-time-use rented list into your CRM as a permanent asset — that's a license violation. Lists you build from public records or own outright are yours to keep and re-mail.
Measuring whether it worked
If you can't measure it, you'll repeat your mistakes. Track at minimum:
- Response rate = responses ÷ pieces mailed, per drop and per neighborhood. Use unique phone numbers (call tracking), unique QR/landing pages, or a code customers mention.
- Cost per lead = total campaign cost ÷ leads.
- Cost per appointment and cost per sold job — the numbers that actually matter. A drop with a mediocre response rate but a great close rate (because the roofs were genuinely due) can be your best performer.
- Revenue and gross margin per drop, against total cost (print + postage + list + data).
- By-neighborhood and by-roof-age-band performance. This is the feedback that compounds. After a few cycles you'll know that, say, the 1999–2006 builds in the north-side subdivisions convert at triple the rate of the newer east-side tracts, and you'll shift budget accordingly.
A simple tracking sheet per drop:
| Field | Example |
|---|---|
| Drop ID / date | NW-Subdiv-A / 2026-04-10 |
| Neighborhood | Northwood Estates |
| Roof-age band targeted | 14–20 yrs |
| Pieces mailed | 480 |
| Total cost | $360 |
| Leads | 7 |
| Appointments | 5 |
| Jobs sold | 3 |
| Revenue | $34,500 |
| Cost per job | $120 |
Run that sheet on every drop and the program stops being a guess.
Common mistakes that quietly kill mail programs
- Mailing ZIPs instead of neighborhoods. Covered at length above; it's the number-one waste.
- Using year-built as if it were roof age. It ignores every re-roof. In an aging subdivision, a meaningful share of homes already replaced — mail those a generic "aging roof" card and you look uninformed.
- Skipping suppression. No NCOA, no re-roof suppression, no past-customer scrub. You pay postage to annoy people who can't or won't buy.
- One-and-done drops. Then concluding "direct mail doesn't work" after a single touch. It works as a sequence.
- No tracking mechanism. A postcard with just your main office number and no code, QR, or unique line means you can't attribute anything and can't improve.
- Crossing the storm line. "Free roof," "we waive your deductible," "we'll get your claim approved." Fast path to complaints, fines, and a torched reputation.
- Beautiful card, terrible list. Spending the design budget and starving the list/data budget. The list is 70% of the result.
- Mailing renters. They can't authorize a roof. Owner-occupied filter, every time.
- No feedback loop. Not logging which neighborhoods and age bands converted, so every campaign starts from zero.
A 30-day rollout plan
If you're starting from scratch, here's a concrete month.
Week 1 — Define and source. Map your service area, mark 8–12 aging neighborhoods using your past-job clusters and crew intel. Pull raw residential addresses for each (vendor, public records, or EDDM routes). Decide your budget and target pieces.
Week 2 — Enrich and score. Attach owner-occupancy and year built. Layer roof-age range and storm exposure where you can (this is the step where a tool like RoofPredict earns its keep — feed it your raw pull, get back ranked, age-and-storm-scored addresses). Score into A/B/C tiers. Suppress re-roofs, renters, new builds, and past customers.
Week 3 — Hygiene and design. Run CASS + NCOA, dedupe by household, finalize the A-tier file. Design a 6x9 postcard with neighborhood-specific copy, a free-inspection offer, real proof, and a trackable CTA (call-tracking number + QR to a simple booking page). For storm work, scrub the copy against the do-not-say list.
Week 4 — Drop and measure. Mail the A tier. Stand up call tracking and a one-question "how'd you hear about us" capture. Log every response against the address in your tracking sheet. Schedule touch 2 for three weeks out. Review cost-per-appointment by neighborhood, and let those results pick where touch 2 and the next neighborhoods go.
Then repeat, and let the feedback loop tighten the targeting each cycle. Within two or three rounds you'll have your own market-specific map of which neighborhoods and which roof-age bands actually pay — and that map, not any single postcard, is the real asset you're building.
A targeted mailing list isn't a one-time purchase; it's a system you sharpen. Start at the neighborhood, filter to the roofs that are genuinely due, suppress the obvious misses, mail honestly and repeatedly, measure everything, and feed the results back in. Do that and your mail spend stops being a hopeful gamble and starts being one of the most predictable channels you run.
FAQ
What's the difference between a neighborhood mailing list and just buying a ZIP code list?
A ZIP code is an arbitrary postal boundary that mixes brand-new builds, aging tracts, apartments, and rentals together, so most of the pieces reach roofs that won't convert this year. A neighborhood list is drawn around a specific subdivision or cluster of streets built around the same time, which means the roofs share an age and are on the same replacement clock. You then filter the neighborhood down to the individual homes most likely to be due. Fewer, better-targeted pieces routinely book more jobs at lower cost than a large untargeted ZIP blast.
How do I find the roof age of houses I want to mail?
You usually can't get an exact install date for a stranger's roof, but you can get a defensible range. Year built from county assessor data is a usable proxy for an original roof. Building-permit records, where a jurisdiction publishes them, can reveal re-roofs and their dates. Aerial and satellite imagery analysis can estimate a roof-age range from visual cues like color uniformity, granule coverage, streaking, and patching. Combining year-built, permit data, and imagery gives the tightest estimate. Always treat it as a range and a probability, never a fact you assert to a homeowner.
Is EDDM good enough for targeted roofing mail?
EDDM is excellent for postage cost and requires no list, but it's saturation by design — you mail every address on a postal route with no ability to suppress individual homes. That makes it a neighborhood-altitude tool with no structure-level filtering. It works well when an entire platted subdivision is genuinely uniform and on the same roof clock. It wastes money when the route mixes new builds, recent re-roofs, and rentals. For tighter targeting, a purchased or self-built list you can filter and suppress will usually outperform EDDM on cost per job.
What response rate should I expect from a roofing mailing list?
A useful planning band for cold, reasonably targeted roofing mail is roughly 0.5% to 2%, with storm-triggered drops into a fresh damage footprint often running higher. Response rate alone is misleading, though. A well-targeted list of genuinely aging roofs tends to also produce a higher close rate, because the conversation is easier when the roof actually needs replacing. Track cost per appointment and cost per sold job rather than response rate alone, and expect your numbers to shift with market, season, and offer.
Can I mail a storm list right after a hailstorm?
Yes, and storm-triggered mail is one of the highest-yield drops you can run because the trigger is fresh and the urgency is real. Get the hail or wind swath from the National Weather Service, Storm Prediction Center, and NOAA's storm database, intersect it with roofs old enough that damage is plausible, suppress renters and recent re-roofs, and mail fast — storm response decays within days. The critical discipline is the copy: keep it on the inspection-and-documentation side and avoid any promise about payout, approval, deductibles, or a free roof.
What can I legally say on a storm restoration postcard?
You can offer a free, no-obligation roof inspection, promise to document what you find with photos and measurements, and provide a written repair estimate aligned to standard industry pricing that the homeowner keeps and can submit if they choose to file a claim. You can offer to meet the adjuster on-site to show what you found in your scope. You cannot promise a specific payout or approval, say the deductible is waived or absorbed, advertise a free roof, negotiate or handle the claim for a fee, or interpret the homeowner's policy or coverage. Document and estimate; the homeowner files and the insurer decides coverage.
How many times should I mail the same neighborhood?
Plan for a sequence of three to four touches over a quarter rather than a single drop. Homeowners decide to deal with their roof on unpredictable timing, so multiple touches catch more of them at the moment they're ready. A workable residential cadence is touches at week 0, week 3, week 7, and week 12 with rotating headlines and photos. Storm cadence compresses hard — a first drop within days of the event and a follow-up about a week later, because the window closes fast and competitors are mailing the same swath.
How do I keep my mailing list clean and deliverable?
Run the file through CASS standardization to format addresses to USPS standards, NCOA move-update processing to drop people who moved and qualify for postage rates, and deliverability scrubbing to catch vacants and undeliverable addresses. Dedupe by household so one home gets one card. Maintain a permanent suppression file for opt-outs, complainers, past customers, and known bad addresses. This hygiene typically shrinks a raw list by several percent, saves postage, and protects your reputation.
Should I pay extra for income and demographic data on a roofing list?
Use it lightly. Income and demographic overlays have some value for financing conversations, but a roof needs replacing based on its physical condition, not the household's demographics. Roof age is the variable that actually predicts the sale, followed by storm exposure and owner-occupancy. Don't let a vendor sell you a premium demographic select while you ignore roof-age targeting — spend your data budget on the signals that predict whether the roof is due.
How does RoofPredict help build a targeted list?
RoofPredict estimates a roof-age range per address from aerial imagery and models storm physics per individual roof, then lets you rank and enrich a list — including your own existing mailing list or CRM — by which roofs are most likely due. That helps with the two hardest steps in list-building: attaching roof-age and storm signals, and suppressing recent re-roofs while ranking the rest. The honest limits matter: roof age comes back as a range, not an install date, and storm exposure comes back as odds, not a confirmed claim. It sharpens the list; the inspection, estimate, and selling stay with your team.
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.net
- Insurance Institute for Business & Home Safety (IBHS) — ibhs.org
- NOAA Storm Prediction Center — spc.noaa.gov
- NOAA National Centers for Environmental Information — Storm Events Database — ncdc.noaa.gov
- National Weather Service — weather.gov
- USPS Every Door Direct Mail — usps.com
- Federal Trade Commission — Truth In Advertising — ftc.gov
- U.S. Census Bureau — American Housing Survey — census.gov
- International Code Council — International Residential Code — iccsafe.org
- Occupational Safety and Health Administration — Roofing — osha.gov
- Texas Department of Insurance — Hail and Roof Damage — tdi.texas.gov
- USPS Move Update (NCOALink) Standard — postalpro.usps.com
- U.S. Bureau of Labor Statistics — Roofers — bls.gov
- RoofPredict — roofpredict.com
Related Articles
How to Reduce Wasted Roofing Marketing Spend (Without Cutting the Spend That Works)
Most roofing companies don't have a marketing budget problem. They have a measurement problem. Here's how to find the wasted dollars, kill them, and reinvest where the roofs actually are.
How to Qualify Roofing Leads Without a Roof Inspection
Every truck roll to an unqualified roof costs you money. Here is how sharp contractors sort leads by roof age, storm exposure, and ownership signals before anyone gets on a ladder.
How to Find Commercial Buildings With Aging Roofs: A Field Playbook for Contractors
The practical methods commercial roofers use to find buildings whose roofs are quietly aging out, before the property manager calls three competitors.