Skip to main content

How to Target Old Roofs With Direct Mail (Without Burning Your Budget on New Ones)

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

Most roofing direct mail fails for one boring reason: it goes to roofs that don't need replacing yet. You buy a list by ZIP code or income band, you drop 10,000 postcards, and a chunk of those land on houses with five-year-old shingles. The homeowner glances at the card, thinks "my roof is fine," and tosses it. You paid full freight to mail a customer who won't call you for another decade.

The whole game in roofing mail is the opposite of what most printers and list brokers sell you. It is not about reach. It is about hitting the houses where the roof is genuinely near the end of its service life, then mailing those houses enough times that your name is the one the homeowner remembers when a shingle finally blows off or a neighbor gets a new roof and they start looking around their own street.

Below is the full operational playbook a contractor can actually run: how roof age works and why public records lie about it, how to build a list that skews old, how to design and write the piece, how many times to mail, how to measure response so you know what's working, and the legal lines you do not cross when you fold in storm and insurance angles. There are worked numbers throughout, because "send more mail" is not a strategy and a cost-per-acquisition you can't calculate is not a budget.

Why "old roof" is the only targeting variable that matters

Walk any residential street and the roofs are a mix. Some were replaced two years ago after a hailstorm. Some are original to a 1998 build and on borrowed time. Some are 2009 re-roofs that are right in the replacement window now. The income of the household, the home value, the length of the driveway — none of that tells you which roof is due. Roof age does.

Asphalt shingle is the dominant residential roof in the United States, and a typical architectural (dimensional) asphalt shingle has a real-world service life in the range of roughly 20 to 30 years depending on climate, ventilation, and install quality. Three-tab shingles run shorter, often 15 to 20 years. That spread is your entire opportunity map. A roof installed 22 years ago in a hot, sun-baked region is a live prospect. The same roof in a mild climate might have a few years left. A roof installed 6 years ago is not your customer no matter how nice the house is.

So the targeting question reduces to a single thing you can actually act on:

Which addresses on my mailing route have a roof old enough to be near or inside the replacement window?

Everything else in a roofing mail program — the design, the offer, the cadence, the tracking — is downstream of getting that list right. Get the list wrong and the best postcard in the world is mailing into the void.

What "old enough" actually means by roof type

Don't treat "old" as one number. The replacement window depends on the material and the environment. Use these ranges as a working frame, not a guarantee — install quality and ventilation move them by years in either direction.

Roof material Typical service life When it becomes a real prospect
3-tab asphalt shingle 15-20 years 12+ years, especially in high-UV / high-heat climates
Architectural/dimensional asphalt 20-30 years 16+ years; accelerate in hail and heat regions
Wood shake 20-30 years 18+ years, faster if poorly maintained
Metal (standing seam) 40-70 years rarely a mail target on age alone
Tile (clay/concrete) 50+ years (underlayment 20-30) underlayment-driven, not surface-driven

The practical takeaway: an asphalt-shingle neighborhood built or last re-roofed 15 to 25 years ago is the sweet spot. Newer subdivisions and metal-heavy areas are a waste of mail. Knowing the housing stock age of a tract is a crude first filter, but it is only a first filter, because re-roofs are invisible in the records most people use.

The data trap: why public records lie about roof age

Here is the mistake almost everyone makes. They pull a list filtered by "year built" from a county assessor feed, a list broker, or a property data site, and they treat year built as roof age. It is not.

Year built tells you when the house was constructed. It says nothing about whether the roof was replaced since. A home built in 1995 may have a brand-new roof from a 2019 hailstorm. A home built in 2004 may still be on its original roof and be a perfect prospect. If you mail off year built alone, you will hit a wall of houses that were re-roofed years ago — and you'll skip newer homes that are quietly aging into the window.

The same applies to the data behind real-estate sites. The roof information you see on a listing portal, where it exists at all, is usually pulled from the year built or from a listing agent's optional field. Re-roofs that happened between sales simply don't show up. A re-roof rarely generates a clean, queryable public record. Some jurisdictions pull a permit for a re-roof; many homeowners and contractors skip the permit entirely, especially for repairs and smaller jobs, so permit data is patchy and biased toward the work that got pulled.

That leaves you with three honest options for estimating which roofs are actually old:

  1. Drive it and eyeball it. A trained eye can read a roof from the street — granule loss, curling, streaking, patched sections, moss, a sag. This is accurate but it does not scale. You cannot eyeball 8,000 addresses to build a mail list.
  2. Use permit data where it exists. If a county or city has good electronic re-roof permits, you can subtract recently permitted addresses from your list so you stop mailing fresh roofs. It is incomplete but it is real signal, and the subtraction is the valuable part.
  3. Estimate roof age from aerial and overhead imagery. Current and historical aerial imagery can show roughly when a roof's appearance changed — a re-roof usually changes color, texture, and reflectivity in overhead views. Comparing imagery over time gets you a roof-age estimate that is independent of year built and catches re-roofs that records miss.

The third option is where the targeting actually gets good, and it is the core of what tools like RoofPredict do — more on that below. The key mental shift: stop trusting year built as roof age. It is the single biggest reason roofing mail underperforms.

A quick reality check on roof-age estimates

No method gives you an exact install date for every roof short of pulling a permit or asking the homeowner. Be honest with yourself about precision. What you can realistically get is a range — "this roof is roughly 18 to 22 years old" — and that range is plenty to make a mail decision. You are not certifying anything. You are sorting addresses into "probably old enough to mail" and "probably not worth the stamp." A range that's right far more often than year built is a massive upgrade over what most contractors mail on today.

Building the list: from a whole ZIP to the right doors

Let's build a target list from scratch. Assume you serve a metro area and want a repeatable monthly mail program. Work it in layers, narrowing at each step.

Layer 1 — Geography you can actually service

Start with the area your crews can reach profitably. Drive time matters more than ZIP boundaries. A route that clusters jobs within a 20-minute radius keeps your crews productive and your install costs down. Map the neighborhoods you already work and the ones adjacent to them. Don't mail where you can't show up next week.

Layer 2 — Housing stock age (the crude filter)

Pull the median year built for each neighborhood or subdivision. You want tracts built or substantially developed 15 to 30 years ago. This is your first cut: it tells you where the opportunity density is highest. Skip subdivisions under ~8 years old entirely — those roofs aren't due, full stop. Treat this layer as "where to look," not "who to mail."

Layer 3 — Roof age estimate per address (the real filter)

This is the layer that separates a profitable program from a wasteful one. Within your candidate tracts, estimate roof age per address using aerial-imagery analysis and, where available, permit subtraction. Now you can rank addresses:

  • Tier A — estimated 18+ year-old roof, no recent re-roof permit. Mail these first and most often.
  • Tier B — estimated 12-18 years. Mail on a slower cadence; they're entering the window.
  • Tier C — under ~10 years. Suppress. Don't mail. (Exception: a documented severe storm event, covered later.)

Layer 4 — Suppression

Remove what wastes mail or creates problems:

  • Addresses you've already done work on (unless re-engaging for a different reason).
  • Recently permitted re-roofs.
  • Rentals and absentee-owner properties if your conversion data shows they convert poorly (test this — it varies by market).
  • Do-not-mail requests and any addresses flagged for compliance reasons.

Layer 5 — Enrich for the message, not only the cut

The same data that built your cut can power the message. If you know a roof is roughly 20 years old, the postcard can speak to a 20-year-old roof instead of a generic "need a new roof?" If you know the property took a verified hail event, the mail can reference documented storm activity in the area. Enrichment is what turns a list into a targeted campaign. We'll use it heavily in the copy section.

Worked example: how much the filter saves you

Say your service area has 40,000 single-family homes. A naive "mail the ZIPs" approach might blanket 12,000 of them at a blended cost of about $0.60 per piece for a printed-and-delivered postcard. That's $7,200 per drop.

Now filter to old roofs. Suppose roughly 18% of those 12,000 homes have a roof estimated at 16+ years and no recent re-roof — that's about 2,160 strong addresses. Mailing only those at the same $0.60 per piece is $1,296 per drop.

The blanket approach spends $7,200 to reach 2,160 good prospects buried in 9,840 poor ones. The filtered approach spends $1,296 to reach the same good prospects. Same prospects, one-fifth the cost — or, more usefully, the same budget now lets you mail the good prospects five times instead of once. In direct mail, repetition is what drives response. Reallocating waste into frequency is the whole point.

The economics of roofing direct mail (run the numbers before you print)

Never commit to a mail program without a model. You don't need it to be perfect; you need it to be honest. Here is the full chain from drops to dollars, with realistic placeholder numbers you should replace with your own.

Inputs (your numbers will differ):

  • Pieces mailed per drop: 2,160 (filtered old-roof list)
  • Cost per piece, all-in (design amortized, print, postage): $0.60
  • Response rate (call/scan/visit): 1.0% (a reasonable target for a well-targeted roofing postcard; blanket mail often runs far lower)
  • Lead-to-inspection set rate: 60%
  • Inspection-to-sold rate: 25%
  • Average job gross profit: $4,000

Math per single drop:

  • Cost: 2,160 x $0.60 = $1,296
  • Responses: 2,160 x 1.0% = 21.6 leads
  • Inspections: 21.6 x 60% = 13 inspections
  • Jobs sold: 13 x 25% = 3.24 jobs
  • Gross profit: 3.24 x $4,000 = $12,960
  • Cost per acquired job: $1,296 / 3.24 = ~$400
  • Return on the mail spend (gross profit ÷ mail cost): $12,960 / $1,296 = ~10x

That 10x is if your inputs hold. The lever that breaks or makes it is the response rate, and the response rate is driven primarily by list quality and frequency. Watch what happens to the same model if your list is junk and response falls to 0.2%:

  • Responses: 4.3 leads → ~2.6 inspections → ~0.65 jobs → ~$2,600 gross profit on $1,296 spend → 2x.

Still positive in this toy example, but the difference between 10x and 2x is entirely list quality. This is why the work goes into targeting, not into a fancier postcard. A great list with an average postcard beats an average list with a great postcard every time.

Build a tracking sheet you'll actually keep

One row per drop. Columns:

  1. Drop date
  2. Campaign/segment name (e.g., "Maplewood Tier A, hail variant")
  3. Pieces mailed
  4. All-in cost
  5. Unique tracking number / landing URL / QR used
  6. Calls received (from the tracking number)
  7. Form/QR scans
  8. Inspections set
  9. Inspections completed
  10. Jobs sold
  11. Revenue and gross profit
  12. Cost per lead, cost per job, ROI

If you can't tie a response back to a specific drop, you are flying blind and you will keep funding the campaigns that feel good instead of the ones that pay. The tracking number and the unique URL are non-negotiable. More on attribution below.

EDDM vs. targeted mail: when each one wins

Every Door Direct Mail (EDDM) is the USPS program that lets you mail every address on a postal carrier route without buying a mailing list or applying individual addresses. It's cheap per piece and simple. The trade-off is in the name: every door. You cannot suppress new roofs, you cannot target old ones, you mail the whole route.

That puts EDDM in direct tension with the entire premise here. So when does it still make sense?

EDDM can work when:

  • The carrier route maps almost perfectly onto an old, homogeneous subdivision where nearly every roof is the same age and inside the window. If a route is 90% original 2002 roofs, blanketing it is fine — the route is the target.
  • You're brand-building in a tight neighborhood where you already have jobs and want yard-sign-plus-mail saturation.
  • A documented severe storm just hit a defined area and you want fast, broad coverage of the affected route (with strict legal framing — see the storm section).

Targeted (addressed) mail wins when:

  • The route is a mix of roof ages (most suburban routes are).
  • You want to mail the same good prospects repeatedly without paying to hit the bad ones each time.
  • You want to vary the message by roof age or storm exposure.
  • You're measuring cost per acquired job and need the denominator to be good prospects, not every door.

A reasonable hybrid: use EDDM for the handful of routes that are genuinely uniform and old, and use addressed, roof-age-targeted mail everywhere else. Don't let the convenience of EDDM talk you into mailing 1990s logic at 2026 data costs.

Designing the mail piece

List quality gets the card into the right hands. The piece itself decides whether it gets read. A few hard-won principles for roofing specifically.

Format and size

Oversized postcards (around 6x9 or 6x11) outperform standard 4x6 cards for roofing because they survive the mailbox sort — they're physically harder to ignore and they leave room for a real before/after or an aerial visual. The cost per piece is higher, which is exactly why your tight list matters: you can afford a bigger, better card when you're not mailing 10,000 of them.

Don't overlook the simple letter in a hand-addressed-look envelope for high-value segments. A #10 envelope that looks personal gets opened. For a Tier A list of genuinely old roofs, a letter can outperform a postcard despite costing more, because it reads as personal rather than promotional.

What goes on the card

Work top to bottom the way a homeowner's eye moves:

  1. A headline that names their situation, not your company. "Roofs in [Neighborhood] built around 2003 are reaching the end of their life" beats "ABC Roofing — Quality You Can Trust." Lead with them.
  2. A relevant visual. An aerial of their own neighborhood, a clean before/after, or a simple roof-age graphic. Avoid stock photos of smiling families. Show roofs.
  3. One clear, specific reason to act now. Age, a recent area storm (documented), an upcoming season, a financing option. One reason, not five.
  4. Social proof that's local. "We've replaced 40+ roofs in [Neighborhood] this year" is far stronger than a generic five-star claim — and only say it if it's true.
  5. A single, frictionless call to action. A free roof inspection, a roof-age check, a no-obligation estimate. One CTA.
  6. Multiple response paths. A tracked phone number, a short URL, and a QR code. Different homeowners respond differently; give them options and track each.
  7. Trust markers. License number, local address, years in business, manufacturer certifications. Roofing buyers are wary; remove the "are these guys real?" friction.

The QR code earns its place

A QR code that lands on a page about their roof — their neighborhood, their roof-age range, a simple "is your roof due?" check — converts better than a QR to your homepage. It also gives you clean attribution: every scan is tied to that drop. If you can personalize the landing page by segment (the hail-area variant lands on a storm-documentation page; the age variant lands on a roof-age page), the QR becomes a measurement and a message tool at once.

Copy that respects the reader

Homeowners are not stupid and they've seen a hundred roofing cards. Plain, specific, honest copy beats hype. Some patterns that work:

  • Name the age. "If your roof was installed in the early 2000s, you're in the replacement window. We can tell you how much life is left — free, no obligation."
  • Acknowledge the skepticism. "Not sure if you actually need a roof? Good — neither are most of your neighbors. That's exactly why we do a free, honest inspection and tell you the truth, even if the truth is 'wait three years.'"
  • Make the small ask. The first yes isn't "buy a roof." It's "let us look." Lower the bar.

Avoid anything you can't back up. Don't promise a free roof. Don't promise insurance will pay. Don't promise to make a deductible disappear. Beyond being illegal in many states (covered next), those claims read as scammy to exactly the careful homeowners who buy the biggest jobs.

Cadence: why one drop is a waste of money

The single most common direct-mail mistake in roofing is the one-and-done drop. A contractor mails 5,000 cards once, gets a handful of calls, decides "mail doesn't work," and quits. Mail didn't fail. Frequency did.

Direct mail compounds. A homeowner needs to see your name several times before it registers, and roofing has a long consideration window — the person who tosses your card in March may be the one whose roof starts leaking in September. The job of a mail program is to be the name they already recognize when the need finally arrives.

A workable cadence for a targeted old-roof list:

Touch Timing Angle
1 Month 0 Introduction + roof-age awareness
2 Month 1 Local social proof ("jobs we did nearby")
3 Month 2 Seasonal urgency (before winter / before storm season)
4 Month 4 Free inspection offer, stronger CTA
5 Month 6 Financing / payment options angle
6 Month 8-9 Re-introduction + new local proof

Six touches over roughly nine months to the same tight list is a fundamentally different program than six separate one-off blasts to six different big lists. The first builds recognition and compounding response; the second builds nothing. This is the real argument for ruthless list filtering: a small, accurate list is the only kind you can afford to mail six times.

Tie cadence to triggers, not only the calendar

The calendar cadence above is your baseline. Layer event triggers on top:

  • A roof crosses an age threshold (your 12-18 Tier B address ages into Tier A) — bump it up in priority.
  • A documented severe storm hits the area — trigger a fast, legally-careful storm drop to affected addresses.
  • A neighbor buys a roof from you — mail the immediate surrounding houses ("we're working on your street"). Proximity mail off a live job is some of the highest-converting mail you can send.

Using RoofPredict to build and enrich the list

Everything above hinges on one hard part: knowing which roofs are actually old, address by address, without year-built lying to you and without driving every street yourself. That's the specific problem RoofPredict is built to solve.

RoofPredict scans an area and, from aerial imagery, estimates a roof-age range per address — not a year-built guess, an actual read on the roof itself, which catches the re-roofs that public records miss. It pairs that with storm physics modeled per roof: rather than just telling you a hailstorm passed through a ZIP, it models hail and wind impact on each individual roof and scores how hard that specific roof likely got hit. The output is a ranked view of a street or area — which roofs are aging out, which ones a storm likely wore down, and therefore which doors are worth your mail.

For a mail program, that does three concrete things:

  1. It builds the Tier A/B/C cut for you. Instead of mailing a ZIP, you mail the ranked addresses where the roof is genuinely old or storm-worn, and suppress the new ones. This is the difference between the $7,200 blanket drop and the $1,296 targeted drop from the earlier example.
  2. It enriches your message. Because each address carries a roof-age range and a storm signal, your card can speak to a 20-year-old roof or reference documented area storm activity instead of running one generic message to everyone.
  3. It enriches a list you already own. If you have an old CRM full of past estimates and customers, those addresses can be scored the same way — surfacing the past not-yet bids whose roofs have now aged into the window. That's mailing money that's already in your book.

The honest limits matter, because overpromising loses the careful buyer. Roof age comes back as a range, not an exact install date — you'll see "roughly 18 to 22 years," not "installed June 14, 2004." The storm model gives you odds, not proof — it tells you which roofs were most likely affected, not a certified damage report. You still send a crew to actually inspect and document. What the data does is make sure the crew is knocking on, and the mail is landing on, the right doors in the first place — so you stop paying to reach roofs that don't need you. It's not a lead service that resells the same homeowner to five competitors; it sharpens the outbound you already run on your own streets and your own list.

Storm activity is a legitimate and powerful targeting and messaging layer. A roof that's 18 years old and took a documented hail event is your strongest possible mail target. But the moment your mail touches insurance, you are in regulated territory, and crossing the line is both illegal in many states and a fast way to lose the careful homeowners who buy the biggest jobs. Get this right.

What a roofing contractor may do

  • Inspect a roof and document damage thoroughly with photos, measurements, and notes.
  • Prepare an accurate, Xactimate-aligned repair estimate for the work you would perform.
  • State facts about your own scope to a carrier — what you found, what you'd repair, what it costs.
  • Hand the documentation and estimate to the homeowner, who then decides what to do with it.
  • Reference documented, factual storm activity in an area in your marketing ("a hail event was recorded in this area on [date]").

What a roofing contractor may NOT do (the do-not-say list)

This is the part to print and tape to the wall for your sales team and your mail copywriter:

  • Do not negotiate, adjust, or "handle" the claim for the homeowner for a fee. That is public adjusting, and it requires a license you almost certainly don't have.
  • Do not interpret the policy or coverage. You don't tell the homeowner what is or isn't covered.
  • Do not promise a specific payout, approval, or that "insurance will pay for it." You can't know that, and promising it is deceptive.
  • Do not promise the deductible is waived, absorbed, eaten, or gone. Offering to cover a deductible is illegal in many states and a red flag everywhere.
  • Do not advertise a "free roof." It implies the deductible disappears and that the claim is a sure thing — neither is yours to promise.
  • Do not represent the homeowner against their insurer. That's the homeowner's role and the licensed public adjuster's role, not yours.

The safe frame is simple and it still wins business: you document thoroughly, you write an accurate repair estimate for your scope, and you hand it to the homeowner. The homeowner files the claim. The insurer decides coverage. Your value is the quality of the documentation and the estimate, plus knowing which roofs likely qualify on age and storm exposure — not handling anyone's claim.

How this shapes the mail copy

You capture the storm intent without crossing the line. Compliant, effective storm-angle copy looks like:

  • "A hail event was documented in [area] on [date]. If your roof is 15+ years old, storm exposure can shorten its life. We do a free, honest inspection and give you full documentation of what we find — so you have the facts."
  • "We don't handle insurance claims, and we won't promise what your policy covers. What we do is document your roof's condition thoroughly and give you a clear repair estimate you own and control."

Notice what that copy does: it names the documented storm, it ties it to roof age, it offers documentation and an estimate, and it explicitly does not promise a payout, erase a deductible, or offer a free roof. That's the line. Teaching your homeowners the do-not-say list — "any roofer who promises your deductible disappears is breaking the law, walk away" — is itself a trust-builder that positions you as the honest operator on the street.

Attribution: knowing which mail actually worked

You cannot improve what you can't measure, and roofing mail is notoriously hard to attribute because the response lag is long and homeowners forget where they saw your name. Build attribution into the piece from the start.

Unique tracking numbers per campaign

Use a distinct trackable phone number for each segment or variant. When a call comes in on the "Maplewood hail variant" number, you know exactly which drop earned it. This is the single most reliable attribution method in roofing mail because phone is still the dominant response path for roof buyers. A call-tracking line per campaign is cheap relative to what you spend on the drop.

Unique URLs and QR codes

Give each segment its own short URL and QR code landing on a segment-specific page. Scans and form fills tie cleanly to the drop. Bonus: a personalized landing page (their neighborhood, their roof-age range) converts better than a generic homepage.

"How did you hear about us?" — necessary but not sufficient

Ask it on every inbound, but don't rely on it. Homeowners misremember; they'll say "online" when a postcard prompted the search. Use it as a cross-check against your tracked numbers and URLs, not as your primary data.

The metrics that actually matter

Don't drown in vanity numbers. Track these per campaign:

  • Cost per lead = drop cost ÷ tracked responses.
  • Cost per acquired job = drop cost ÷ jobs sold from that drop. This is the number that matters most.
  • Return on mail spend = gross profit from the drop ÷ drop cost.
  • Response rate by segment — so you learn whether your Tier A list, your hail variant, or your proximity mail pulls hardest, and you shift budget toward the winner.

Give each campaign a fair window before you judge it. Roofing response trickles in over weeks and months, not days. A drop that looks dead at two weeks may be your best performer at twelve. Set a standard evaluation window (say, 90 days) and compare campaigns on equal footing.

Common mistakes that quietly kill roofing mail programs

A field guide to the failures that look like "mail doesn't work" but are really execution problems.

Mistake 1 — Targeting on year built

Covered above and worth repeating because it's the biggest one. Year built is not roof age. Re-roofs are invisible in it. Targeting on year built guarantees you mail a wall of fresh roofs. Fix: estimate roof age from imagery and subtract recent permits.

Mistake 2 — One-and-done drops

Mailing once, getting modest response, and quitting. Mail compounds; a single drop never gets to compound. Fix: commit to a multi-touch cadence to a tight list before you judge results.

Mistake 3 — Mailing too big a list too thin

Spreading the budget across 12,000 addresses once instead of 2,000 addresses six times. The thin-and-wide approach feels like more reach; it's actually less response because no household sees you enough to remember you. Fix: narrow the list, increase the frequency.

Mistake 4 — No attribution

No tracking numbers, no unique URLs, so you can't tell which drop worked. You end up funding campaigns on gut feel. Fix: tracked number + unique URL + QR per segment, every time.

Mistake 5 — Company-centric copy

Leading with your logo and "quality you can trust" instead of the homeowner's situation. Fix: lead with their roof, their neighborhood, their age range.

Mistake 6 — Crossing the insurance line

Promising a free roof, a waived deductible, or that "insurance will pay." Illegal in many states, and it repels the careful buyers. Fix: document-and-estimate framing only; teach the do-not-say list as a trust signal.

Mistake 7 — Ignoring the list you already own

Pouring money into cold lists while a CRM full of old estimates and past customers sits untouched. Those addresses have roofs that have aged since you last bid them. Fix: re-score your own book by roof age and mail the ones that have aged into the window — that's the cheapest list you'll ever "buy."

A 30-day plan to launch a targeted old-roof mail program

Concrete steps, in order. Adapt the timeline to your shop, but keep the sequence.

Week 1 — Define the territory and pull the data

  • Map your serviceable area by drive time, not ZIP lines.
  • Identify candidate neighborhoods built or last developed 15-30 years ago.
  • Pull or generate a roof-age estimate per address within those tracts.
  • Pull recent re-roof permits to subtract fresh roofs.

Week 2 — Build and tier the list

  • Cut to Tier A (18+ years, no recent permit), Tier B (12-18), suppress Tier C.
  • Apply suppressions (past customers, do-not-mail, poor-converting segments).
  • Enrich with any storm signal and roof-age range for messaging.
  • Re-score your own CRM and fold qualifying past-bid addresses into the list.

Week 3 — Design, write, and set up tracking

  • Design an oversized card (or letter for Tier A) led by the homeowner's situation.
  • Write age and storm variants, staying strictly inside the legal frame.
  • Stand up a unique tracking number, short URL, and QR per segment.
  • Build segment-specific landing pages (roof-age check / storm-documentation).

Week 4 — Drop, then schedule the cadence

  • Send drop 1 to Tier A.
  • Schedule drops 2-6 on the cadence calendar; set the event triggers (age thresholds, documented storms, proximity-to-live-jobs).
  • Set up the per-drop tracking sheet.
  • Set a 90-day evaluation window and a calendar reminder to review cost per job by segment.

After the first full cycle, you'll have real numbers — response rate, cost per lead, cost per job by segment — and you can shift budget toward the variants and tiers that actually pull. That feedback loop, run honestly, is what turns roofing direct mail from a hopeful expense into a predictable channel you own.

Timing the drops around season and weather

Roof age tells you who to mail. Season and recent weather tell you when a given drop will land hardest. The two stack.

Residential roofing demand is not flat across the year. Homeowners think about their roof when the weather makes them — after a storm, before winter, when a neighbor's crew is on the next roof over. Use that.

  • Late summer into fall is prime in most regions. People want the roof handled before winter, and there's enough daylight and dry weather to install. A free-inspection drop in August or September often outpulls the same drop in January.
  • Right after a documented storm window is the highest-intent moment for affected addresses — homeowners are already looking up at their roofs. The trick is moving fast while staying inside the legal frame: a documentation-and-estimate offer, never a payout promise.
  • Late winter / early spring is a quieter, cheaper time to plant the introductory touches so your name is already familiar when peak season arrives. Cheaper mail timing for the low-urgency touches, peak timing for the strong-CTA touches.

A practical pattern: schedule the introductory and social-proof touches in the off-season to build recognition cheaply, and concentrate the strong free-inspection and urgency touches into the run-up to peak demand. You're not mailing more — you're mailing the right message at the moment it's most likely to convert.

One caution on storm timing: "fast" never means "loose." The pressure to get mail out after a storm is exactly when contractors drift into illegal claim language. Pre-write your compliant storm template now, in calm weather, so that when a storm hits you're dropping approved copy, not improvising promises about deductibles and payouts under deadline pressure.

Testing and iterating: treat mail like a controllable system

The contractors who win at mail over years treat it as a system they tune, not a gamble they re-roll. Once your tracking is clean, you can test deliberately. Change one variable at a time so you actually learn something.

Variables worth testing, roughly in order of impact:

  1. The list cut. Tier A vs. Tier B response. Old-roof-only vs. old-roof-plus-storm. This is the highest-leverage test because list quality drives everything downstream.
  2. The offer. Free inspection vs. free roof-age check vs. no-obligation estimate. Different offers pull different intent levels.
  3. The format. Oversized postcard vs. letter for your Tier A segment. Letters cost more and sometimes earn it.
  4. The headline angle. Age-led vs. storm-led vs. social-proof-led. Run two variants to two matched halves of a segment.
  5. The cadence depth. Whether touch 5 and 6 still pay or whether response flattens after touch 4 for your market.

Keep an A/B discipline: split a segment into two matched halves, change exactly one thing, send both at the same time with different tracking numbers, and read cost per acquired job — not raw call volume — after a full evaluation window. A variant that drives lots of calls but few sold jobs is worse than one with fewer, better calls.

Write down what you learn after every cycle in one place. Over a year, that log becomes the most valuable marketing asset your shop owns: a documented, market-specific map of which lists, offers, and angles actually turn into roofs. That is the difference between renting a hope and owning a channel.

The bottom line

Targeting old roofs with direct mail comes down to one discipline most contractors skip: figure out which roofs are actually old before you spend a dollar on postage. Year built won't tell you; re-roofs hide from it. Estimate roof age from the roof itself, layer in documented storm exposure, suppress the fresh roofs, and mail the resulting tight list repeatedly with a piece that speaks to the homeowner's situation and stays clean of any insurance promise you can't legally make.

Do that, and the same budget that used to paper a whole ZIP once now hits the right doors six times — and the response rate, the cost per job, and the ROI all move in your favor. That's the entire difference between mail that works and mail you give up on. The data to build that list — roof-age ranges per address and storm modeled per roof — is exactly what RoofPredict exists to give you, so your mail lands on the roofs that are genuinely due and skips the ones that aren't.

FAQ

How do I find old roofs by address for a mailing list?

Don't rely on year built from county or listing data — it ignores re-roofs and will send you to fresh roofs. Estimate roof age from current and historical aerial imagery (a re-roof changes a roof's color and texture in overhead views), and subtract addresses with recent re-roof permits where that data exists. That gives you a per-address roof-age range that catches the re-roofs records miss. Tools like RoofPredict do this scan automatically and rank addresses by roof age so you can mail the genuinely old ones.

What's a realistic response rate for roofing direct mail?

Blanket, untargeted roofing mail often runs well below half a percent. A tightly targeted old-roof list mailed repeatedly can do meaningfully better — 1% is a reasonable working target for a well-targeted, multi-touch program, with proximity mail off a live job converting higher. The biggest lever on response is list quality and frequency, not the postcard design. Always measure your own rate per segment rather than trusting any benchmark.

Is EDDM or targeted mail better for roofing?

EDDM (Every Door Direct Mail) is cheap and simple but mails every door on a route, including new roofs you can't suppress. It only makes sense when a carrier route maps onto a uniformly old subdivision, for tight neighborhood saturation around existing jobs, or for fast coverage after a documented area storm. For typical mixed-age suburban routes, addressed roof-age-targeted mail wins because you only pay to reach genuinely old roofs and can mail them repeatedly.

Why shouldn't I just target by year built?

Year built tells you when the house was constructed, not when the roof was last replaced. A 1995 home may have a 2019 roof; a 2004 home may still be on its original roof and be a perfect prospect. Re-roofs rarely create a clean public record, so year-built lists send a large share of your mail to roofs that were already replaced. Targeting on roof age estimated from imagery fixes this.

How many times should I mail the same list?

Plan on at least 5-6 touches over roughly 6-9 months to the same tight list, not one big blast. Mail compounds — homeowners need to see your name several times, and roofing has a long consideration window, so the card someone ignores in spring may matter when their roof leaks in fall. A small, accurately targeted list is the only kind you can afford to mail that often, which is the real argument for ruthless filtering.

Can I mention insurance or storm damage in roofing mail?

You can reference documented, factual storm activity ("a hail event was recorded in this area on [date]") and offer a free inspection with full documentation and a repair estimate. You may not promise that insurance will pay, that a deductible will be waived or absorbed, or advertise a free roof — those are illegal in many states and read as scammy. The safe frame: you document the damage and write an accurate estimate; the homeowner files the claim and the insurer decides coverage.

What is a roofer legally not allowed to do with claims?

A roofing contractor may inspect, document damage, prepare an accurate repair estimate for their own scope, and state facts about that scope to a carrier. A roofer may not, for a fee, negotiate or handle the claim, interpret policy or coverage, promise a specific payout or approval, promise the deductible is waived or gone, advertise a free roof, or represent the homeowner against the insurer — that's unlicensed public adjusting. Hand the documentation to the homeowner; they file and the insurer decides.

How do I track which mail piece generated a job?

Put a unique tracking phone number, a unique short URL, and a QR code on each segment or variant, each pointing to a segment-specific landing page. Calls, scans, and form fills then tie cleanly to a specific drop. Ask "how did you hear about us?" as a cross-check but don't rely on it — homeowners misremember. Track cost per lead and, most importantly, cost per acquired job by segment, and give each drop a 90-day window before judging it.

How much does roofing direct mail cost per job?

It depends entirely on list quality and your close rates. With a well-targeted list, an all-in cost around $0.60 per oversized piece, a 1% response rate, a 60% inspection-set rate, and a 25% close rate, you might land near $400 cost per acquired job. The same model with a junk list at a 0.2% response rate produces a far worse number. Build the math with your own inputs before you print, and let measured cost per job by segment redirect your budget.

Can RoofPredict tell me the exact age of a roof?

No — and you should be wary of any tool that claims it can without a permit or the homeowner telling you. RoofPredict returns a roof-age range (for example, roughly 18-22 years) estimated from aerial imagery, plus storm exposure modeled per roof as odds rather than proof. That range is more than enough to decide whether an address is worth mailing, and it catches re-roofs that year-built data misses. You still inspect and document on-site to confirm condition.

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. Asphalt Roofing Manufacturers Association — Shingle Service Life and Performanceasphaltroofing.org
  2. National Roofing Contractors Association (NRCA)nrca.net
  3. Insurance Institute for Business & Home Safety (IBHS) — Roof and Hail Researchibhs.org
  4. NOAA National Centers for Environmental Information — Storm Events Databasencdc.noaa.gov
  5. NOAA Storm Prediction Center (SPC)spc.noaa.gov
  6. USPS — Every Door Direct Mail (EDDM)usps.com
  7. Federal Trade Commission — Truth in Advertisingftc.gov
  8. Texas Department of Insurance — Public Insurance Adjusterstdi.texas.gov
  9. U.S. Census Bureau — American Housing Survey (housing stock age)census.gov
  10. International Code Council — International Residential Code (IRC) Roofingiccsafe.org
  11. Occupational Safety and Health Administration (OSHA) — Roofing Safetyosha.gov
  12. U.S. Bureau of Labor Statistics — Roofers Occupational Outlookbls.gov
  13. National Weather Service — Hail Informationweather.gov
  14. RoofPredictroofpredict.com

Related Articles