How Many Times to Mail a Roofing Prospect (And When to Stop)
On this page
Ask ten roofing owners how many times they mail a prospect and you'll get ten answers, most of them wrong in the same direction. The shop that mailed a neighborhood once and quit because "direct mail doesn't work" is making the same mistake as the shop that hammers the same list nine times in six weeks and burns through a year of postage budget by March. Both treated mail like a coin flip instead of a sequence.
The honest answer is a range, and it depends less on a magic number than on three things you control: who's on the list, how far apart the pieces land, and whether you have any way to follow up off the mailbox. A worn-out 22-year-old roof three streets from a job you just finished does not need the same number of touches as a 9-year-old roof in a subdivision that hasn't seen a hailstone in a decade. Treat them the same and you'll overspend on one and underspend on the other.
What follows is the cadence math the way a sales manager actually has to think about it: touch counts that hold up, the gap between drops, the point where another postcard is just lighting money on fire, and the part nobody likes hearing, which is that mailing the right roofs five times beats mailing the whole ZIP twelve times. We'll get into worked numbers, a 12-week calendar you can run, the response-rate ranges to expect, and how to decide when an address comes off the list for good.
The short answer, then the real answer
If you want a number to start with: plan on 4 to 6 mailings to a qualified roofing prospect over a 90-to-120-day window, then re-qualify before you spend a seventh. That's the band where most residential re-roof and storm-restoration programs see their cost-per-appointment bottom out.
Now the real answer, because the number alone will lead you astray.
That 4-to-6 range assumes the list is qualified, meaning the homes on it have a plausible reason to need you in the next 12 to 18 months. If your list is just "every single-family home in the ZIP," the same six touches will perform worse, cost more per response, and teach you the wrong lesson about mail. The number of touches and the quality of the target are not independent variables. People treat cadence as the lever because it's the one printed on the invoice, but targeting is the lever that moves the cost.
Think about it as a simple identity:
Total cost to book a job = (pieces per prospect) × (cost per piece) × (prospects mailed) ÷ (jobs booked)
You can attack that number from the cadence side, mailing each prospect fewer times, or from the targeting side, mailing fewer prospects who convert at a higher rate. The roofers who win on direct mail attack it from the targeting side first, then dial cadence second. Most beginners do the reverse, crank up the frequency on a bad list, and conclude mail is dead.
So the structure of the answer is: get the touch count roughly right (the rest of the article), but understand that the touch count is doing maybe a third of the work. The list is doing the other two-thirds.
Why one mailing almost never works (and why nine is too many)
There are two failure modes and they're mirror images.
Failure mode one: the one-and-done. A shop drops 5,000 postcards, gets three calls, runs the math, and decides direct mail is a scam. The problem isn't the medium. It's that a single touch lands during a window when almost nobody is in-market. At any given moment, only a small slice of homeowners are actively thinking about their roof. Most people don't think about a roof until it leaks, a neighbor gets one done, a storm rolls through, or an insurance letter arrives. A single mailer has to catch the prospect inside one of those windows by luck. The whole point of a cadence is to still be in the mailbox, in the memory, and on the fridge when the window opens, rather than betting everything on the day the postcard happens to land.
Here's the part beginners miss: response to a sequence isn't the sum of independent coin flips. The third piece performs better than the first not only because it catches more people in-window, but because it's the third time they've seen your name. Familiarity lowers the perceived risk of calling a stranger to climb on their house. A name they've seen four times reads as "the local roofer," a name they've seen once reads as junk mail.
Failure mode two: the over-mail. The opposite shop mails the same list every two weeks for five months. By the fourth or fifth piece, the people who were going to respond mostly have, and you're now paying full freight to reach a residual list that has actively decided not to call you. Worse, tight-interval over-mailing reads as desperation. A roofer who hits the same mailbox six times in ten weeks looks like a company that can't get work, which is exactly the signal a homeowner uses to screen you out. Frequency without spacing erodes the credibility that frequency is supposed to build.
The sweet spot exists because two curves cross. Cumulative response keeps climbing with each touch but the marginal response per touch falls off fast. Meanwhile cumulative cost climbs in a straight line. The gap between those curves, your profit, is widest somewhere in the middle. Mailing past that point isn't "more aggressive," it's just negative-margin volume.
The cadence math, with real numbers
Let's put numbers to it so you can run your own version. These are illustrative figures to show the method — plug in your own market's costs and your own measured response, don't treat my placeholders as benchmarks for your shop.
Say a 5.5" × 11" jumbo postcard costs you, all-in (design amortized, print, postage at the USPS Marketing Mail rate, list/processing), about $0.70 per piece delivered. Say your average collected job is worth $1,400 in gross profit after materials and labor. And say you mail a qualified list of 1,000 homes.
Watch how the touches stack up. The percentages below are a plausible shape of a decaying-response curve, not a promise — the point is the shape, not the digits:
| Touch | Cumulative response rate | Net new responses (per 1,000) | Pieces sent | Cumulative spend | Responses to date | Cost per response |
|---|---|---|---|---|---|---|
| 1 | 0.40% | 4.0 | 1,000 | $700 | 4.0 | $175 |
| 2 | 0.85% | 4.5 | 1,000 | $1,400 | 8.5 | $165 |
| 3 | 1.30% | 4.5 | 1,000 | $2,100 | 13.0 | $162 |
| 4 | 1.65% | 3.5 | 1,000 | $2,800 | 16.5 | $170 |
| 5 | 1.90% | 2.5 | 1,000 | $3,500 | 19.0 | $184 |
| 6 | 2.05% | 1.5 | 1,000 | $4,200 | 20.5 | $205 |
| 7 | 2.15% | 1.0 | 1,000 | $4,900 | 21.5 | $228 |
Read the last column, cost per response. It falls through touch three, flattens across four, then starts climbing. That U-shape is the whole game. The minimum here sits around touches 2–4, and by touch six or seven you're paying more per response than you did on touch one. Every roofer's table looks a little different, but the U-shape is nearly universal: cost per response drops, bottoms out in the middle, and climbs as you exhaust the responsive portion of the list.
Now convert responses to dollars. Say one in four responses becomes an inspection and one in three inspections becomes a signed job, so roughly 1 job per 12 responses (you should measure your own ratios — these move a lot by market and by how good your closer is). After six touches you've generated 20.5 responses, call it 1.7 jobs, on $4,200 of spend. At $1,400 gross profit per job that's about $2,380 of gross profit against $4,200 spent. On this hypothetical list, six touches is underwater.
Which is exactly the lesson. The arithmetic doesn't say "mail more" or "mail less" in the abstract. It says: find where your cost-per-response curve bottoms out, mail to roughly there, and fix the response rate (through targeting) before you fix the touch count. If you could double that cumulative response rate by mailing a sharper list, the same six touches would be comfortably profitable and you wouldn't have changed your cadence at all.
Run the math for your own shop
You don't need a data scientist. You need four numbers and a spreadsheet:
- All-in cost per piece. Print + postage + design (amortized over the run) + list cost. Get this exact; estimates hide losses.
- Average gross profit per collected job. Not revenue. Profit after materials, labor, and commission.
- Response-to-job ratio. Out of every X responses, how many sign? If you don't know, your first season's job is to find out by tracking it.
- Measured response by touch. Use a distinct phone number, QR code, or offer code per drop so you can attribute which mailing pulled the call.
With those, build the table above for your numbers and look for the cost-per-response minimum. That's your cadence. It will probably land in the 4-to-6 band, but now you'll know instead of guessing, and you'll re-check it every season because postage and your close rate both drift.
A worked example you can copy line by line
Let's run one fully so the method is concrete. Suppose you serve a metro where your average collected residential re-roof leaves $1,600 in gross profit. Your all-in jumbo-postcard cost lands at $0.72 delivered. You've measured, over two prior seasons, that it takes about 14 responses to produce one signed job (one in 3.5 responses books an inspection, one in 4 inspections signs). You build a qualified 1,500-home list, skewed toward roofs near end of life, and run five touches at a 3-week interval.
Work it through:
- Five touches × 1,500 pieces × $0.72 = $5,400 total spend.
- Say the sequence pulls a cumulative 2.4% response on this sharper list, that's 36 responses.
- 36 responses ÷ 14 per job ≈ 2.6 signed jobs.
- 2.6 jobs × $1,600 = $4,160 gross profit against $5,400 spent.
That's underwater, and it's a useful kind of underwater because it shows you exactly which dial to turn. You do not turn the cadence dial, a sixth and seventh touch on this list, per the cost-per-response math, would lose money faster. You turn the list dial. Suppose tighter targeting (suppressing the re-roofed and young homes, leaning into roofs the imagery and storm model flag as worn) lifts cumulative response from 2.4% to 4.0% on the same 1,500 homes:
- 4.0% of 1,500 = 60 responses.
- 60 ÷ 14 ≈ 4.3 signed jobs.
- 4.3 × $1,600 = $6,880 gross profit against the same $5,400 spend.
Same postcards. Same cadence. Same budget. The program went from a loss to a $1,480 gain purely on list quality. That is the entire argument for targeting over cadence in one example: the cadence was never the problem, and adding touches would have made the loss worse, not better.
Reading your own response curve
A practical wrinkle: you usually can't see the per-touch curve cleanly because responses lag. Someone gets touch 3, sits on it for two weeks, then calls after touch 4 lands. Your tracking will credit touch 4. That's fine, as long as you're consistent, attribute to the touch whose code or number they used and accept that the curve you measure is the as-credited curve, not a laboratory-clean one. Over a season the noise averages out and the U-shape in cost-per-response still shows up. What you're looking for is the touch number where the cumulative cost-per-response stops falling and starts rising. Mail to about there. Don't over-engineer it; you need the inflection, not three decimal places.
How far apart should the mailings be?
Frequency is half the equation; spacing is the other half. Same six touches, different intervals, completely different result.
Too tight (every 7–10 days) and the pieces blur together, you look desperate, and you spend your whole budget before the slow-developing prospects, the ones whose roof starts leaking in week 9, ever get a chance to come in-market. Too loose (every 8–10 weeks) and you lose the familiarity benefit; by the time piece three lands they've forgotten pieces one and two, so each touch performs like a cold first touch and you never build recognition.
The workable band for roofing is roughly every 18 to 30 days between pieces during an active sequence. That's frequent enough to compound recognition, spaced enough to look like a steady local presence rather than a fire sale, and it stretches a 5-to-6-touch sequence across a 90-to-150-day window, which is long enough to catch a meaningful share of the homes that drift into market during the season.
A practical default that's easy to run operationally: one drop every 3 weeks. It's clean to schedule, it spaces six touches across about four months, and 3 weeks is short enough that recognition holds. Adjust off that based on what your tracking shows.
A few spacing nuances that matter in roofing specifically:
- After a storm, compress the front of the sequence. When a verified hail or high-wind event hits a defined area, the in-market window opens fast and other crews are mailing the same streets. Tightening the first two or three touches to 10–14 days for storm-affected addresses is reasonable because the homeowner's clock is running and you want recognition built before the door-knockers arrive. Just don't compress the whole sequence; revert to normal spacing once the acute window passes. (More on the legal lines around storm and claims language below — there are words you must not put on a storm mailer.)
- Respect the seasons. In most of the country, re-roof intent peaks spring through fall. If your sequence is going to run through deep winter in a cold climate, either pause it and resume in spring or accept lower response on the winter touches and don't count them against the channel.
- Don't reset the clock on a responder. The moment someone calls, requests an inspection, or scans your code, they leave the mail cadence and enter your sales follow-up. Continuing to mail a person who already raised their hand wastes postage and looks like you're not paying attention.
A 12-week mailer calendar you can actually run
Here's a concrete sequence for a qualified residential list, built around a 3-week interval with a planned re-qualification gate at the end. Treat the "piece" descriptions as the job each mailing does, not a rigid script.
Week 0 — Touch 1: Introduce + relevance. The piece that says who you are and why this house. Local, specific, credible. If you have a roof-age or storm reason this address made the list, lead with the category of reason ("Roofs in [neighborhood] from the early 2000s build-out are reaching the end of their service life") without overclaiming. Clear photo of real work, a real local address or phone, a license number where required.
Week 3 — Touch 2: Proof + offer. Now that they've seen your name once, give them a reason to act. A genuinely useful offer (a free, no-obligation inspection with a written condition report) plus proof you do good work, a before/after from a nearby job, a short line about being insured and local. This is usually one of your strongest pullers.
Week 6 — Touch 3: Education / problem-awareness. A piece that helps the homeowner self-diagnose: the signs a roof is near end of life (granules in the gutters, curling or cupping shingles, daylight in the attic, repeated small leaks). You're not selling, you're making the in-market window open in their head. This is where you out-help the competitor whose mailer just says "FREE ESTIMATE."
Week 9 — Touch 4: Social proof + neighborhood. "We just finished a roof on [nearby street]." People trust a roofer their neighbors used. If you genuinely did work nearby, say so honestly and specifically. A small map graphic of recent local jobs (only ones you actually did) is powerful and true.
Week 12 — Touch 5: Direct ask + light urgency. A clean, direct "It's time, here's how to book" piece. Honest urgency only, scheduling fills up in season, prices on materials move, getting ahead of winter. Never fake a deadline; roofers who invent "this week only" pricing train homeowners to ignore them.
End of Week 12 — Re-qualify gate. Before you authorize touch 6+, ask: did this address respond to anything (call, scan, web visit, door answer)? Did anything change (a storm, a visible tarp, a permit pulled next door)? If yes, keep them in an active, possibly tightened track. If a home has had five well-built touches and shown zero signal, it goes to a long-cycle list, one or two touches a year, not the active sequence. That's not giving up; it's reallocating budget to addresses more likely to convert.
The gate is the part most shops skip, and it's the most valuable step on the calendar. It's the difference between a program that gets more efficient each season and one that just gets more expensive.
Coordinating mail with the rest of your outbound
Mail rarely works hardest alone. The cadence above gets sharper when the touches aren't all postcards. A few combinations that pull more than mail-only without much added cost:
- Mail + door-knock on the same list. When a canvasser knocks a street you've already mailed three times, the homeowner has seen your name and the door opens warmer. The mail does the recognition work; the knock does the conversation. This is why a green canvasser working a pre-mailed, pre-qualified street outperforms a veteran cold-knocking a random one, the door is half-opened before he rings it.
- Mail + a branded digital touch. A QR code on the postcard that leads to a one-page homeowner-facing roof report (their address, the category of reason it made your list, your real local proof) turns a passive piece into a measurable click and gives the homeowner something concrete. It also lets you retarget the visitors who scanned but didn't call.
- Mail + a follow-up call to responders only. Never cold-call the whole mailed list, that's a different (and more regulated) channel. But the instant someone scans or calls, a fast human follow-up while they're still in-window converts far better than waiting for the next drop.
The rule that ties these together: the mailed list is the spine. Every other channel hangs off it and targets the same qualified addresses. You don't want one list for mail, a different one for knocking, and a third for digital. One qualified list, several coordinated touches, attributed back to the source.
What the postcard itself has to do
Cadence and list get most of the credit they deserve, but a piece that fails the basics wastes the whole sequence. The non-negotiables, kept short because the internet is full of design advice and most of it is noise:
- One job per piece. Each touch in the sequence has a single purpose (introduce, prove, educate, social-proof, ask). Cramming all five jobs onto one postcard means none lands.
- Real, local, specific. A real local phone, a real address or service area, a license number where your state requires it, and photos of your actual work, not stock roofs. Homeowners screen hard for "is this a real local company or an out-of-town swarm."
- A clear, honest offer. "Free inspection with a written condition report" beats "FREE ESTIMATE" because it tells them what they actually get. Never an offer you can't legally make (see the storm section).
- One obvious next step. Call this number, scan this code, or book here. Two competing calls-to-action cut response.
- Big enough to survive the mailbox. A jumbo or oversized format survives the sort-and-toss better than a #10 envelope that reads as a bill or a standard postcard that vanishes in the stack. Test format, but start oversized.
None of this beats targeting. A beautiful postcard to a new roof is still a wasted touch. But an ugly postcard to a worn roof is also a wasted opportunity, so clear the bar on creative, then put your energy into the list.
What a realistic response rate looks like
Let's set expectations honestly, because unrealistic benchmarks cause good programs to get killed.
The Association of National Advertisers / Data & Marketing Association response-rate research has, across industries, put direct mail response in the low single digits for house lists and below 1% for cold prospect lists, with mail consistently out-pulling email on a per-message basis. That's a useful anchor, but it's an industry-wide average, not a roofing number, and your result depends heavily on list quality, offer, creative, and how concentrated your in-market homes are.
For roofing specifically, here's how to think about it without fooling yourself:
- A cold, broad list (every home in a ZIP) will pull low, often well under 1% even cumulatively, which is why broad mail feels like it doesn't work.
- A qualified list (homes selected for a real reason, roof age, storm exposure, neighborhood age cohort) can pull meaningfully better cumulatively across a full sequence, because you've concentrated the in-market population.
- A warm list (your past customers and old estimates, people who already know you) typically pulls the best of all and costs the least to reach, because the familiarity work is already done.
The single biggest determinant of your response rate isn't the postcard design or the headline. It's what fraction of the list is actually in or near market. Mailing a list that's 8% in-market beats mailing a list that's 1.5% in-market by a margin no creative tweak can touch. This is the whole reason targeting beats cadence.
One more honest note: measure cost per booked job, not response rate. A flashy 2% response rate on tire-kickers who never sign is worse than a 0.9% response rate on homeowners with failing roofs who close. Response rate is a proxy; collected gross profit is the scoreboard.
Targeting beats cadence: mail the right roofs, not more roofs
Everything above assumes a qualified list, and that assumption is carrying most of the weight. So let's deal with it directly.
The default roofing mailing list is some flavor of "single-family homes, owner-occupied, in these ZIPs, in this home-value band." That's a demographic list. It tells you nothing about the roof. And the roof is the thing you sell. You can have two identical houses, same value, same owner profile, side by side, where one was re-roofed three years ago and the other is on original 23-year-old shingles. The demographic list mails both. You pay to reach the new roof, learn nothing, and conclude your response rate is low.
The fix is to qualify by attributes that actually predict a near-term roof job:
- Roof age. The single strongest predictor. A roof in the back half of its service life is dramatically more likely to need replacement soon than a young roof. The catch: the public records most people reach for, the county "year built" and the Zillow/portal data, tell you when the house was built, not when the roof was last replaced. Re-roofs are invisible to year-built data. A 1998 house with a 2019 re-roof looks 26 years old in the records and is actually 6. Mailing it as an old roof wastes the touch.
- Storm exposure, modeled per roof. Not "this ZIP got hail" but "this specific roof took meaningful hail or wind." A hail swath is not uniform; one street can get golf-ball stones while the next street over got pea-sized. Mailing a whole storm ZIP treats every roof as equally damaged, which is both inefficient and, frankly, not true.
- Neighborhood build cohorts. Subdivisions built in a tight window age out together. A development that went up in 2002–2004 with builder-grade 3-tab shingles is reaching end-of-life as a cohort, which makes the whole neighborhood a credible target around year 18–22, adjusting for re-roofs.
- Your own book. Past customers, old estimates that never closed, homes where you did a repair years ago. These are warm, cheap to reach, and frequently the highest-ROI mail you'll send. Most roofers sit on a goldmine of old estimates and never mail them.
The problem is operational: getting roof age and per-roof storm exposure for thousands of addresses by hand is impossible, and the easy public data is wrong in the exact way that hurts you (re-roofs invisible, storm exposure ZIP-wide instead of per-roof).
This is the gap RoofPredict is built to close. It reads aerial imagery and weather data per home and returns, for each address, a roof-age range (not an exact date, a range, because you cannot read an exact install date off a photo) plus per-roof storm history, hail and wind modeled on that roof rather than smeared across the ZIP. Practically, that lets you do two things: build a mailing list that skews toward roofs actually nearing end of life and roofs a storm genuinely wore out, and suppress the young and recently re-roofed homes you'd otherwise pay to mail. Enrich your existing list or your old CRM book with those two signals and the same cadence, the same postcards, the same budget, lands on a higher-intent population, which is the lever that moves cost per job more than any cadence tweak.
Honest limits, because a tight trade compares notes: a range is a range, not a guarantee, a 16–20-year-old roof might have five good years left or be failing today, you're playing odds, not certainties. Modeled storm exposure is the likelihood a roof took a hit, not proof of damage, the inspection still decides that. And no data product books the job; it just stops you mailing the new roofs and points the same postcards at the doors more likely to need you. Used that way, it turns the targeting lever, the two-thirds of the equation, instead of the cadence lever everyone fixates on.
Why your mail list is wrong (the re-roof problem in detail)
Worth slowing down on, because it silently wrecks more roofing mail programs than bad creative ever has.
When you pull a list filtered by "home age 18+ years," you believe you're targeting old roofs. You're not. You're targeting old houses. The two diverge every time a roof gets replaced, which, over an 18-plus-year span, is a large share of the homes. Consider what that does to a 1,000-home "old roof" list:
- Some meaningful fraction have been re-roofed in the last several years. Those roofs are young. Mailing them as old roofs is a wasted touch, and worse, when one of them calls annoyed that "my roof's only four years old," your list reads as careless.
- Some homes had partial repairs or insurance replacements after past storms, again resetting the roof clock the records don't see.
- A few were re-roofed with premium materials that bought decades, so even an old install isn't near end of life.
Flip it the other way and the same blindness hides opportunity: a house built in 2010 looks young in the records, but if its builder-grade shingles failed early and it took hail in 2021, it might be more in-market than the 1995 house next door that got a premium re-roof in 2018. Year-built data can't see any of that. It mails exactly backwards on those two homes.
This is why "roof age range from imagery" and "per-roof storm history" beat "year built" for list-building. You're targeting the variable you actually sell against (the condition and age of the roof) instead of a proxy (the age of the structure) that's wrong in a large, systematic chunk of cases, and wrong in the direction that costs you money on both ends, paying to mail new roofs while skipping old ones the records mislabeled as young.
Storm-season mailing: cadence and the lines you can't cross
Storm restoration changes the cadence and adds a compliance layer most mailer templates get dangerously wrong. Handle both.
Cadence after a storm. When a verified hail or wind event hits a defined area, the in-market window opens fast and competition spikes, including out-of-town crews. So for storm-affected addresses specifically: compress the first two or three touches to roughly 10–14 days to build recognition before door-knockers swarm, then revert to normal spacing. Pair the mail with door-knocking and route the two off the same list. The reason per-roof storm modeling matters here is that it tells you which streets actually took the hit, so you compress the cadence on the homes that warrant it instead of blanketing a whole ZIP at storm-urgency frequency and cost.
The compliance lines. This is where roofers get themselves in trouble, and it's not optional. In most states, a roofing contractor may inspect a roof, document damage with photos, and prepare an honest repair estimate for their own scope of work, and state facts about that scope to a carrier. A roofer may not, for a fee, negotiate or "handle" the insurance claim, interpret the homeowner's policy or what's covered, promise a specific payout or that a claim will be approved, promise the deductible will be waived, absorbed, or made to disappear, advertise a "free roof," or represent the homeowner against their insurer. That last cluster is unlicensed public adjusting, and several states will fine you or worse for it. The deductible-waiver promise specifically is illegal in many states and is insurance fraud, do not put it on a mailer, a yard sign, or a door hanger.
So here's the do-not-say list for any storm or claims mailer:
- "Free roof" / "$0 out of pocket" / "we cover your deductible" / "deductible waived."
- "We handle your insurance claim" / "we deal with the adjuster for you" / "we negotiate with your insurance."
- "Your claim will be approved" / "guaranteed approval" / "we get every claim paid."
- Anything that interprets coverage ("this is definitely covered," "your policy pays for a full replacement").
And here's what you can say, which is plenty and converts fine:
- "Free inspection with a written, photo-documented condition report."
- "We document storm damage thoroughly and write an accurate, Xactimate-aligned repair estimate."
- "We hand you the documentation and estimate; you file with your insurer, and your insurer decides coverage."
- "Recent storms hit [area], if your roof took damage, get it documented before the season's repairs book up."
The safe frame is simple and it's also the honest one: you document and estimate, the homeowner files, the insurer decides. Build every storm mailer on that frame, capture the homeowner's real intent (they're worried about damage and money) by helping them on the documentation side, and leave the claim itself entirely to them and their carrier. It keeps you legal, it builds more trust than the deductible-waiver crowd, and it ages well when the state DOI starts auditing mailers, which they increasingly do after big events.
Track it or you're guessing
None of the cadence math works if you can't see what's happening. The roofers who think "direct mail doesn't work" almost always can't actually attribute a single job to a single mailing. Fix that first.
- Unique response paths per drop. A distinct phone number (call-tracking numbers are cheap), a distinct QR code, or a distinct offer/promo code on each touch. Now when a call comes in, you know whether it was touch 2 or touch 5 that pulled it.
- Ask every inbound how they heard about you, and log it. Imperfect, but combined with tracking numbers it triangulates well.
- Track to the booked job, not the call. Carry the source code from the mailer all the way through to the signed contract in your CRM. The number you care about is cost per collected job per list and per cadence, not calls.
- Hold a control. When you test a sharper list or a different cadence, keep a slice of the old approach running so you're comparing against something, not against your memory of last year.
- Re-measure every season. Postage rates change, your close rate changes, the market changes. The cadence that bottomed out at five touches last spring might bottom out at four this spring. Rebuild the cost-per-response table each season.
Without tracking, every number anyone quotes you, including mine, is just a story. With tracking, you'll find your own numbers inside a season or two, and they'll beat any benchmark because they're yours.
Working your own book: the cheapest, warmest list you already own
Before you spend a dollar mailing strangers, look at the list you already paid to build: your past customers and your dead estimates. Most roofing shops treat the CRM as a graveyard. It's closer to a savings account.
Past repair customers. You fixed a leak on a 16-year-old roof four years ago. That roof is now 20 and squarely in replacement territory, and the homeowner already trusts you, you've been on their roof, you didn't overcharge, you came back when you said you would. A mailing to past repair customers whose roofs have aged into replacement range is among the highest-converting mail you can send, and it costs you only postage because the relationship is already built. The familiarity work that takes a stranger four touches is already done.
Old estimates that never closed. Every shop has a pile of bids that went cold, the homeowner who got three quotes and stalled, the one who said "after the holidays," the one whose spouse wasn't ready. A meaningful share of those roofs still need the work, and the homeowner already knows your name and your number. A two-or-three-touch sequence to dead estimates, timed to the season, regularly outperforms cold prospecting per dollar by a wide margin. The trick is enriching that old list so you mail the ones whose roof is now genuinely due, not all of them indiscriminately, which is exactly where a roof-age range layered onto your CRM earns its keep: it tells you which of those cold estimates aged into a real job.
The mechanics. Pull your CRM. Segment into past customers and dead estimates. Layer on roof-age and storm signals so you can sort by likely-due. Run a separate, shorter cadence for these (they need fewer touches, the recognition is already there, often 2 to 3 well-timed pieces). Track it separately from cold mail so you can see, plainly, that your warm list is carrying a higher ROI, which it almost always is, and fund it first.
The reason this section sits next to the cadence math: the right answer to "how many times do I mail" is fewer times for a warm contact and more for a cold one, and most shops invert that, over-mailing strangers and never mailing the people who already bought from them.
A quick word on regulations and lists
Two compliance notes so a good program doesn't create a bad headache.
Mailed lists are lighter-regulated than calls and texts, but not unregulated. Physical direct mail isn't governed by the Do-Not-Call rules the way phones are, which is part of why mail remains a workhorse for roofers. But the claims you print are governed, by the FTC's truth-in-advertising standard at the federal level and by your state's contractor and insurance statutes locally. Don't print a price or a guarantee you won't honor. Don't imply an endorsement you don't have. Don't manufacture a deadline. The same discipline that keeps storm copy legal keeps ordinary copy honest, and honest copy ages better with the neighbors who compare notes across the fence.
Suppress before you mail. Run your list against the basics every season: remove the deceased, the recently sold (new owners may have just re-roofed or have different intent), the addresses that asked you to stop, and any home you can identify as recently re-roofed. Suppression is unglamorous and it's pure margin, every piece you don't send to a dead address is postage redirected to a live one.
Common mistakes that waste your postage
A quick field-guide to the errors that show up over and over:
- Mailing once and quitting. The single most common and most expensive mistake. You paid the full setup and list cost and bailed before the sequence could compound.
- Over-mailing a dead list. The mirror image, hammering the same addresses past the point of diminishing returns instead of re-qualifying. Negative-margin volume.
- No spacing discipline. Random intervals, or all-too-tight intervals that read as desperation. Pick a cadence (3 weeks is a fine default) and hold it.
- Demographic list masquerading as a roof list. "18+ year-old homes" is not "old roofs." The re-roof problem silently fills your list with young roofs you pay to mail.
- Mailing the whole storm ZIP at storm urgency. Blanketing streets that didn't actually take the hit, at compressed (expensive) cadence. Model the storm per roof and compress only where it landed.
- No tracking. Can't attribute, can't optimize, can't defend the budget when the owner asks if mail is working.
- Ignoring the warm list. Old customers and dead estimates are cheap to reach and convert best, and most shops never mail them. This is free money sitting in your CRM.
- Illegal storm copy. "Free roof," deductible-waiver, "we handle your claim." Converts a few homeowners and exposes you to fines and fraud liability. Not worth it, and the safe frame converts fine.
- Resetting urgency with fake deadlines. "This week only" pricing you don't honor trains homeowners to ignore you and burns trust with the neighbors who compare notes.
- Never re-qualifying. Skipping the gate at the end of the sequence, so your program gets more expensive every cycle instead of sharper.
Putting it together: a default program
If you want a starting point to run this season and then tune with your own data, here it is in one place:
- List: Qualify hard. Skew toward roofs actually near end of life (roof-age range, not year-built) and roofs a storm genuinely wore out (per-roof exposure, not ZIP-wide). Suppress young and recently re-roofed homes. Add your past customers and old estimates as a separate warm track.
- Cadence: 5 touches over ~12 weeks at a 3-week interval, with a re-qualification gate at the end before any touch 6+. Compress the first 2–3 touches to 10–14 days for verified storm-affected addresses, then revert.
- Sequence of jobs: introduce + relevance → proof + offer → education/self-diagnose → neighborhood social proof → direct ask. Keep storm copy strictly on the document-and-estimate side; never promise payout, never touch the deductible, never "handle the claim."
- Tracking: unique number/code per drop, source carried to the signed job, cost-per-collected-job per list and per cadence, re-measured every season with a control.
- The decision rule: mail to roughly where your cost-per-response curve bottoms out (usually 4–6 qualified touches), and improve the list before you add touches. Targeting is two-thirds of the result; cadence is the last third.
Do that and the original question, how many times to mail a roofing prospect, mostly answers itself: enough times to catch them when their window opens (4 to 6 for a qualified home), spaced so you build recognition instead of looking desperate, and never so many that you're paying to reach people who've already decided no. The roofers who win aren't the ones who found a secret touch count. They're the ones who put their postage on the right roofs and then counted everything.
FAQ
How many times should I mail a roofing prospect?
For a qualified list (homes selected because they have a real near-term reason to need a roof), plan on 4 to 6 mailings over a 90-to-120-day window, then re-qualify before spending more. That's where cost per response usually bottoms out. The exact number depends on your costs and close rate, so track each drop and find your own minimum. And remember the touch count is only about a third of the result, list quality is the other two-thirds.
How far apart should roofing mailers be?
Roughly every 18 to 30 days during an active sequence, with a clean 3-week interval as an easy default. Tighter than ~2 weeks reads as desperation and burns budget before slow-developing prospects come in-market; looser than ~8 weeks loses the familiarity benefit so each touch performs like a cold first touch. For verified storm-affected addresses, compress the first 2-3 touches to 10-14 days, then revert to normal spacing.
Is one roofing postcard ever enough?
Almost never. At any moment only a small slice of homeowners are actively thinking about their roof, so a single mailer has to catch the prospect inside that window by luck. A cadence keeps you in the mailbox and in mind until the window opens, and later touches also benefit from name familiarity, which lowers the perceived risk of calling a stranger to work on the house. One-and-done is the most common reason roofers wrongly conclude direct mail doesn't work.
When should I stop mailing an address?
After about 5 well-built touches with zero signal (no call, scan, web visit, or door answer), move the address from your active sequence to a long-cycle list of one or two touches a year, rather than continuing to mail it at full frequency. Use a re-qualification gate at the end of each sequence: if anything changed (a storm, a tarp, a permit next door) or the home responded, keep it active; if not, reallocate that budget to higher-intent addresses.
What response rate should I expect from roofing direct mail?
Industry-wide direct mail research puts response in the low single digits for house lists and below 1% for cold prospect lists. For roofing, a cold whole-ZIP list pulls low (often under 1% even cumulatively), a qualified list pulls meaningfully better, and your own past customers and old estimates pull best and cost least. The biggest driver is what fraction of the list is actually in or near market, not the postcard design. Measure cost per booked job, not response rate.
Why does targeting matter more than how many times I mail?
Total cost to book a job equals pieces-per-prospect times cost-per-piece times prospects-mailed divided by jobs-booked. You can attack that from the cadence side (mail each prospect fewer times) or the targeting side (mail fewer, higher-intent prospects who convert better). The list typically does about two-thirds of the work. Mailing a list that's 8% in-market beats one that's 1.5% in-market by a margin no creative or cadence tweak can match, so fix the list before adding touches.
Why isn't a 'homes built 18+ years ago' list a good roofing list?
That filter targets old houses, not old roofs. Over an 18-plus-year span a large share of homes have been re-roofed, and those replacements are invisible to county year-built and portal data, so a 1998 house with a 2019 re-roof still looks 26 years old in the records when the roof is actually 6. You pay to mail young roofs and skip old ones the records mislabel as young. Target roof-age range from imagery and per-roof storm history instead of structure age.
How does RoofPredict help with mailing the right roofs?
It reads aerial imagery and weather data per address and returns a roof-age range (a range, not an exact date, since you can't read an install date off a photo) plus storm history modeled on that specific roof rather than smeared across the ZIP. You use those two signals to skew your mailing list toward roofs near end of life and roofs a storm genuinely wore out, and to suppress young and recently re-roofed homes. It doesn't book the job or prove damage; it points the same postcards at the doors more likely to need you.
Can I mention insurance or a free roof on a storm mailer?
No to 'free roof' and deductible-waiver language, that's illegal in many states and can be insurance fraud, and no to 'we handle your claim' or 'guaranteed approval,' which is unlicensed public adjusting in most states. You can offer a free inspection with a written, photo-documented condition report, document damage thoroughly, and write an accurate Xactimate-aligned repair estimate. The safe frame: you document and estimate, the homeowner files, the insurer decides coverage. It's legal, it converts, and it builds more trust than the deductible crowd.
How do I know if my roofing mail is actually working?
Track it or you're guessing. Put a unique phone number, QR code, or offer code on each drop so you can attribute calls to a specific touch, ask and log how every inbound heard about you, and carry the source code through to the signed contract so you measure cost per collected job (rather than calls or response rate) per list and per cadence. Keep a control when you test changes, and rebuild your cost-per-response table every season because postage and your close rate drift.
Should I compress my cadence after a storm?
Yes, but only for the addresses that actually took the hit. After a verified hail or wind event the in-market window opens fast and out-of-town crews swarm, so tightening the first 2-3 touches to 10-14 days builds recognition before the door-knockers arrive. Don't blanket a whole storm ZIP at that compressed (expensive) cadence, model the storm per roof so you compress only where it landed, and revert to normal spacing once the acute window passes.
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
- USPS Direct Mail and Marketing Mail Pricing — usps.com
- USPS Every Door Direct Mail (EDDM) — usps.com
- Federal Trade Commission: Truth in Advertising — ftc.gov
- NOAA Storm Prediction Center — spc.noaa.gov
- National Weather Service Storm Events Database (NCEI) — ncdc.noaa.gov
- Insurance Institute for Business & Home Safety (IBHS) — ibhs.org
- National Roofing Contractors Association (NRCA) — nrca.net
- Texas Department of Insurance: Roofing Contractors and Storm Claims — tdi.texas.gov
- National Association of Insurance Commissioners (NAIC): Public Adjusters — naic.org
- U.S. Census Bureau: American Housing Survey — census.gov
- Bureau of Labor Statistics: Roofers Occupational Outlook — bls.gov
- Association of National Advertisers / Data & Marketing Association Response Rate Research — ana.net
- International Code Council: International Residential Code (IRC) — iccsafe.org
- RoofPredict — roofpredict.com
Related Articles
How to Close a Roofing Inspection at the Kitchen Table
The kitchen table is where a roof inspection turns into a signed agreement. Here is the exact sequence, the documents, the words, and the compliance lines that decide whether you walk out with a job.
How to Stop Relying on Storms for Roofing Revenue (Build a Year-Round Pipeline)
Storms pay well and then vanish for two years. Here is how working roofers build a pipeline that produces jobs whether or not it hails.
How to Stop Losing Roofing Jobs on Price (Without Becoming the Cheapest Bid)
Most roofing jobs aren't lost on price. They're lost on framing, timing, and who you bid to in the first place. Here's the operational fix.