How to Reduce Wasted Roofing Marketing Spend (Without Cutting the Spend That Works)
On this page
Most roofing companies don't have a marketing budget problem. They have a measurement problem. The money is spent fine. It's just that nobody can tell you, with a straight face, which half of it produced revenue and which half lit on fire. So every spring the budget gets bumped because last year felt busy, the same vendors get renewed because nobody wants to be the one who cancelled the thing that might have been working, and the cycle repeats. Five years of that and a $15,000-a-month marketing spend has a $4,000-to-$6,000 dead zone baked into it that nobody can see.
That dead zone is the target. You don't need a bigger budget to grow. In most shops you need to find the 30 to 40 percent of spend that produces nothing, cut it cleanly, and move that cash into the channels and addresses that already convert. Done right, you lower cost per acquired job, free up cash, and your closers stop wasting windshield time on tire-kickers — all without raising the top-line number.
What follows is the actual work: how to instrument your marketing so waste becomes visible, how to read the numbers without fooling yourself, the channel-by-channel math, the targeting decisions that quietly waste the most money, and the operational habits that keep waste from creeping back in. It's written for the owner or sales manager who signs the checks, not for a marketing agency trying to sell you a retainer.
What "wasted" actually means in roofing marketing
Waste isn't "money I spent that I wish I hadn't." That's hindsight, and hindsight makes every channel look bad on a slow month. Waste has a specific definition you can act on:
Wasted spend is money that produced no measurable progress toward a sold, profitable job — and that you can't distinguish from spend that did.
The second clause matters as much as the first. A channel can be quietly profitable and still count as functionally wasted if you have no way to prove it, because you'll eventually cut it on a hunch or keep it out of fear. The goal of the whole exercise is to convert as much spend as possible from "unknown" to "known," and then act on what you learn.
There are four distinct kinds of waste, and they have different fixes. Mixing them up is why most cost-cutting efforts fail.
| Type of waste | What it looks like | The fix is mostly about |
|---|---|---|
| Untracked spend | You genuinely cannot say what a channel produced | Instrumentation and attribution |
| Mistargeted spend | You're reaching the wrong roofs, neighborhoods, or buyers | Data and list targeting |
| Underconverted spend | Good leads come in and die in your office | Speed-to-lead and sales process |
| Redundant spend | Multiple channels paying to reach the same person | Channel mix and de-duplication |
Most owners assume their problem is channel choice ("is Google better than mail?"). It almost never is. The problem is usually that they can't measure any channel cleanly, so the channel debate is unwinnable. Fix measurement first. Everything else gets easier.
Start with the one number that exposes everything: fully-loaded cost per acquired job
Forget cost per lead for a minute. Cost per lead is the most over-quoted, least useful number in roofing marketing because a lead is not a job and a cheap lead can be the most expensive thing you buy. The number that exposes waste is cost per acquired job, fully loaded.
Here's the formula and, more importantly, what "fully loaded" means:
Cost per acquired job = Total acquisition cost / Jobs sold from that channel
Total acquisition cost includes:
- Media spend (the ad / mailer / list / platform cost)
- Agency or management fees attributable to the channel
- Sales labor to chase those leads (appointments run × loaded hourly × hours)
- Tools/software allocated to that channel
- Inspection / estimate costs you eat on no-sale appointments
The sales-labor line is the one everybody leaves out, and it's the one that turns "cheap" channels into money pits. A lead source that costs you $40 a lead but converts at 4 percent and forces your closers to drive to twelve appointments for one sale is far more expensive than a $300 lead that converts at 1-in-3. The cheap channel is burning your most expensive resource — a salesperson's day — and that cost never shows up on the marketing invoice.
A worked example
Two channels, same month, same shop. Average sold job: $14,000 revenue, $4,200 gross profit.
| Shared-lead service | Targeted direct mail | |
|---|---|---|
| Spend | $4,000 | $4,000 |
| Leads / responses | 100 | 44 |
| Cost per lead | $40 | $91 |
| Set-to-run appointments | 38 | 31 |
| Sales-labor hours (set, drive, run, follow up) | 95 | 70 |
| Loaded sales cost ($55/hr) | $5,225 | $3,850 |
| Jobs sold | 4 | 8 |
| Close rate (lead→job) | 4% | 18% |
| Fully-loaded cost per job | $2,306 | $981 |
| Gross profit produced | $16,800 | $33,600 |
| Marketing-and-sales-cost-to-GP ratio | 55% | 23% |
On cost per lead, the shared service wins by a mile — $40 versus $91. On the number that actually pays your bills, the mail beats it more than two to one, produces twice the gross profit, and does it without exhausting your sales team. If you were optimizing for cost per lead, you'd double down on the worse channel. This is the single most common, most expensive mistake in the trade.
You cannot reduce wasted spend until you measure spend this way. So that's job one.
Step 1: Instrument everything so waste becomes visible
You can't cut what you can't see. Before you change a single dollar of spend, spend two weeks making your marketing measurable. This is unglamorous plumbing work and it's where the real money is.
Give every channel its own phone number
Call tracking numbers are cheap (a few dollars a month each) and they're the backbone of roofing attribution because so many of your leads still call. Assign a unique tracked number to:
- Each direct-mail campaign or drop
- Your yard signs / door hangers
- Each paid search campaign
- Your Google Business Profile
- Truck wraps and vehicle signage
- Each referral or partner source
Route them all to the same line, but now every call carries a source. A good call-tracking setup also records calls, which does double duty: it tells you which channels produce real buying calls versus wrong numbers, vendors, and "are you hiring" calls. A surprising amount of "lead volume" on cheap channels evaporates the moment you listen to ten recordings.
Build a single source of truth for every lead
Every lead, from every channel, enters one system — your CRM — with a required source field. No source, no lead. Make it impossible to save a record without it. This is a discipline problem more than a software problem; the best CRM in the world is useless if your office manager picks "Other" 60 percent of the time because it's faster.
The minimum fields you need on every lead to measure waste:
- Source / channel (specific: "Mail — March hail drop, zip 75070" not "mail")
- First-touch date and time
- First-contact-attempt date and time (so you can measure speed-to-lead)
- Appointment set? (Y/N + date)
- Appointment run? (Y/N)
- Outcome (sold / lost / no-decision) with a reason
- Contract value and gross margin when sold
- Address (you'll use this for geographic and roof-level analysis later)
If you can't currently run a report that shows close rate and cost per job by specific campaign, you don't have an attribution system — you have a list of names. Fix that before optimizing anything.
Account for the long tail: multi-touch reality
Here's the honest complication. A homeowner sees your truck wrap in February, gets your mailer in April after a storm, searches your name on Google in May, reads two reviews, and calls. Which channel "gets" the sale? Last-touch attribution gives it all to Google. First-touch gives it all to the truck. Both are wrong, and chasing perfect multi-touch attribution will drive you insane and cost more than the waste you're hunting.
The practical answer for a roofing company: use last-touch as your default for cutting decisions, but add a single "how did you hear about us?" question at the appointment and log the answer. When last-touch and "how did you hear" disagree systematically — say, branded Google searches keep crediting search when customers say "I got your mailer" — that's your signal that an upper-funnel channel (mail, wraps, signs) is doing real work that last-touch is stealing. Don't cut a channel that customers consistently name at the door just because the click data is quiet. This is the most common way contractors accidentally kill a profitable channel.
Step 2: Read the numbers without lying to yourself
Once you're measuring, the temptation is to over-react to small samples and seasonal noise. Roofing volume swings violently with weather, and a single hailstorm can make a mediocre channel look brilliant for 60 days. Discipline here is what separates real cost reduction from random budget-thrashing.
Use a rolling window and a minimum sample
Never make a kill-or-keep decision on a channel with fewer than ~30 leads or one full sales cycle of data, whichever is longer. For most retail roofing the sales cycle (first touch to signed contract) runs two to six weeks; for insurance-driven storm work it can stretch to several months because the homeowner is waiting on their carrier's process. Judging a storm channel on 30 days will always make it look like a loser because the jobs haven't closed yet.
Use a rolling 90-day window for most retail channels and a rolling 6-month window for storm/insurance channels. Compare a channel to itself over time, not to other channels in a single hot month.
The four metrics that actually drive the decision
For each channel, every cycle, you need exactly these:
| Metric | What it tells you | Common waste signal |
|---|---|---|
| Set rate (leads → appointments) | Lead quality and office responsiveness | Below ~30% means junk leads or slow callbacks |
| Run-and-close rate (appointments → sold) | Whether the channel attracts real buyers | Below ~25% suggests wrong audience or price mismatch |
| Fully-loaded cost per job | The bottom line | Above your target ratio means the channel is bleeding |
| Gross profit per dollar spent | The actual return | Below ~$2 of GP per $1 spent is a yellow flag |
That last metric — gross profit returned per marketing dollar — is the cleanest single yardstick across wildly different channels. A channel returning $5 of gross profit for every $1 spent is healthy. One returning $1.20 is treading water once you load in sales labor and overhead, and is a candidate for cutting or fixing.
Watch for the "volume hides waste" trap
When times are good — big storm, busy season — waste hides because total revenue is up. The mediocre channel rides the wave and looks fine. The discipline is to run the per-channel math especially in good months, because that's when you can afford to cut the dead weight without panic, and when the contrast between great and merely-okay channels is clearest. Cutting waste during a drought is emotionally hard and operationally risky. Cutting it during a boom is easy money.
Step 3: Fix targeting — where the biggest, most invisible waste lives
Untracked spend is the obvious waste. Mistargeted spend is the bigger waste, and it hides because the tracking looks fine — you mailed 10,000 pieces, you got responses, the report has numbers in it. The problem is you mailed the wrong 10,000 roofs.
This is where roofing is different from almost every other home-services trade, and where most marketing dollars quietly die. A plumber's customer can be anyone with a clogged drain. A roofer's customer is specifically: a property whose roof is worn out, recently storm-damaged, or aging into replacement range — owned by someone who can decide and pay. Spray-and-pray marketing ignores three of those four filters and pays full price to reach roofs that have fifteen good years left.
The targeting waste nobody calculates
Walk through a typical "saturation" mail campaign. You blanket a zip code: 12,000 homes. But of those 12,000:
- Roughly a third are rentals or have an owner who won't be the decision-maker on a roof.
- A large share have roofs under 8–10 years old — nowhere near replacement, no recent damage. These homeowners are not in market and won't be for years.
- Some are in HOAs or building types you don't service.
- A meaningful slice were just re-roofed (sometimes by you).
If only 15–25 percent of the addresses you paid to reach are even plausibly in the market for a roof, you didn't run a marketing campaign — you ran a 75-percent-waste campaign with a tracking report on top. The response numbers looked acceptable only because the small in-market fraction responded. Imagine those same response numbers if you'd mailed only the in-market homes: same revenue, a quarter of the spend, four times the return.
That's the core move in reducing roofing marketing waste: stop paying to reach roofs that aren't due.
How to actually narrow to roofs that are due
There are three signals that separate a roof worth marketing to from one that isn't. The more you can stack, the less you waste.
1. Roof age. A roof's remaining life is the single strongest predictor of whether a homeowner is a buyer. The catch is that you usually can't get a precise install date — and you should be suspicious of anyone who claims to. What you can responsibly estimate, from current and historical aerial imagery and property records, is an age range for a roof: this roof was most likely replaced sometime in a window, putting it in (or out of) typical replacement territory for its material. A range is honest and it's enough. "This asphalt roof is likely 18–24 years old" is a great mailing target. "This roof is 4–7 years old" tells you to spend that dollar somewhere else.
2. Storm exposure. Hail and high wind don't hit a zip code evenly. Within a single "damaged" zip, one street took golf-ball hail on the exposed slope and the next street over saw pea-size that did nothing. Marketing to the whole zip after a storm wastes most of the spend on roofs that weren't meaningfully hit. The fix is storm intelligence modeled at the property level — wind and hail exposure estimated per roof, not per region — so you mail and knock the streets that actually got worn out. Remember the legal line here: storm exposure tells you which roofs are worth documenting and inspecting, not which roofs will get an insurance approval. More on that below.
3. Ownership and decision-ability. Owner-occupied, length of ownership, and the basics of who can say yes. You don't need a dossier; you need to stop paying to mail rental units where the resident can't authorize a roof.
Stack those three and your mailable, knockable universe shrinks dramatically — and that shrink is the savings. You're not spending less because you got cheap; you're spending less because you stopped buying impressions against roofs that will never buy.
Where RoofPredict fits — and where it doesn't
This property-level targeting is exactly what RoofPredict is built to do, so a plain description is fair here. RoofPredict scores the roofs in your service area on the two signals that are hardest to get yourself: a roof-age range per address estimated from aerial imagery, and storm physics modeled per individual roof (the hail and wind a specific property likely absorbed, not a county-wide warning polygon). It then ranks doors, routes, and mailing lists so your crews and your mail hit the roofs that the storm wore out plus the roofs aging out of their service life. You can also feed it your existing CRM or mailing list and have it enriched with those roof-age and storm signals, so you're prioritizing the contacts you already paid to acquire instead of re-buying them.
What it doesn't do, and what you should be wary of any vendor claiming: it doesn't hand you an install date (it's a range — an estimate), it doesn't promise a specific home will convert, and a storm score is odds, not proof. A high storm-exposure score means this roof is worth getting on and documenting; it is not a statement that the roof is damaged or that any insurance claim will be approved. Used honestly, it shrinks the wasted portion of a mail drop or a canvassing route by pointing your finite dollars and your crew's finite hours at the roofs most likely to be in market. Used as a magic-bullet "these will all close" promise, it'll disappoint you — because no data set can know what's under the shingle until someone inspects it.
Step 4: Stop the leak between marketing and sales (underconverted waste)
You can have perfect targeting and clean attribution and still waste a third of your spend — by generating good leads and then letting them rot. This is underconverted waste, and it's brutal because you already paid full price for the lead. Every lead that dies in your office is 100 percent wasted spend on top of the salary of whoever let it die.
Speed-to-lead is the highest-ROI fix in the building
The research on lead response time is blunt and it has held up for years: the odds of reaching and qualifying a lead drop off a cliff within minutes, and they keep dropping by the hour. A homeowner who fills out a form or calls after a storm is also contacting two or three of your competitors. The first one to respond intelligently usually wins the appointment, and the appointment is most of the battle.
Concrete targets that actually move close rates:
- Inbound call answered live, every time, during business hours. A missed call from a tracked-number campaign is the most expensive thing in your business — you paid to make the phone ring and then didn't pick it up. Track your missed-call rate by channel. If your "low-converting" channel has a 30 percent missed-call rate, the channel isn't the problem.
- Web leads contacted within 5 minutes. Not 5 hours. Five minutes. Automate the first text/call trigger if you have to.
- A defined follow-up cadence for leads that don't answer the first time: most sales come after multiple contact attempts, yet most shops quit after one or two. A simple, enforced cadence (e.g., 6–8 attempts across calls, texts, and email over two weeks) routinely doubles the yield from the same leads. That's a pure-savings move — more jobs, zero additional marketing spend.
Before you spend another dollar acquiring new leads, run this report: of last quarter's leads, how many were never contacted, contacted once, or contacted after an hour? Whatever revenue those represent is money you already paid for and threw away. Recovering it is cheaper than buying more.
Qualify on the phone to protect the most expensive resource
Your closer's day is the scarcest, most expensive thing in your marketing funnel — see the worked example earlier where sales labor dwarfed media cost. A channel that sets lots of unqualified appointments isn't cheap; it's a tax on your best people. Build a short phone-qualification step (decision-maker present? realistic about timeline and that this is a paid repair/replacement? roof actually in question?) so closers run fewer, better appointments. Fewer windshield hours per sold job is reduced cost per acquisition, even though nothing changed on the marketing invoice.
Step 5: De-duplicate your channel mix (redundant waste)
The fourth waste type: paying multiple channels to reach the same person. After a storm, a single homeowner might be inside your mail radius, your geo-fenced ads, your canvassing route, and a shared-lead service you bought them back from. You can pay four times to acquire one customer and never notice because each channel reports its own "win."
The tell is in your attribution data: when "how did you hear about us?" and last-touch disagree, and when the same addresses show up across multiple channel reports. To de-duplicate sensibly:
- Map each channel to a funnel job. Wraps, signs, and brand mail build familiarity (upper funnel). Targeted mail and canvassing to due roofs create demand (mid funnel). Search and your Google profile capture demand that already exists (lower funnel). You need some of each, but you don't need three lower-funnel channels all bidding on the same in-market homeowner.
- Be very skeptical of shared-lead services where you're competing against three other roofers for the same homeowner. These often look cheap per lead and land in the money-pit quadrant once you load in the dismal close rate and the sales hours wasted on a homeowner who's price-shopping four bids. They can have a place for filling a slow week, but they're rarely a foundation, and they're the first thing to cut when you're trimming waste.
- Don't pay to re-acquire people you already own. Past customers and quoted-but-not-sold leads are sitting in your CRM. Marketing to them (a database reactivation: a roof-age-aware mailing or call to past inspections now aging into replacement range) is nearly free compared to net-new acquisition, and it's the most overlooked source of cheap jobs in the trade.
A practical 30-day waste-reduction workflow
Here's the sequence, start to finish, that an owner can run without hiring anyone.
Week 1 — Instrument.
- Put a unique tracking number on every channel; route them to your main line with recording on.
- Make "source" a required, specific field on every CRM lead. Train the office: no source, no save.
- Pull the last 12 months of jobs and tag each with its real source as best you can reconstruct it. Imperfect history beats no history.
Week 2 — Measure. 4. Build one table: per channel, spend, leads, set rate, run-and-close rate, jobs, revenue, gross profit, and fully-loaded cost per job (include sales labor). 5. Add the gross-profit-per-marketing-dollar column. 6. Add a missed-call-rate and average-response-time column per channel from your call recordings and CRM timestamps.
Week 3 — Decide. 7. Rank channels by gross profit per dollar. Quadrant them: keep-and-scale, fix, watch, and cut. 8. For every "cut" candidate, check the "how did you hear" data first — make sure it isn't an upper-funnel channel doing quiet work. Cut the ones that are truly dead. 9. For every "fix" candidate, identify whether the problem is targeting (wrong roofs), conversion (slow callbacks, weak follow-up), or both.
Week 4 — Reallocate and tighten. 10. Move the cut budget into your top one or two keep-and-scale channels — but only after you've narrowed their targeting to due roofs, so you're scaling efficiency, not waste. 11. Stand up the speed-to-lead fixes: live call answering, 5-minute web-lead contact, an enforced follow-up cadence. 12. Launch one database reactivation to past customers and old quotes aging into replacement range. 13. Set a recurring monthly 30-minute review of the same table. Waste reduction isn't a project; it's a habit.
Channel-by-channel: where roofing dollars typically leak
No two markets are identical, but the leak patterns repeat. Use these as hypotheses to test against your numbers, not as gospel.
Direct mail
Still one of the most effective channels in roofing when targeted, and one of the most wasteful when not. The leak is almost always the list: saturating zips instead of mailing due roofs. The fix is targeting, covered above. A tightly targeted drop to aging/storm-exposed, owner-occupied roofs can outperform a saturation drop at a quarter of the cost. Track each drop with its own number and zip-level codes. Mail to roofs, not to maps.
Paid search (Google Ads / LSAs)
Captures existing demand, which is gold after a storm and steady year-round for "roof repair near me." The leaks: bidding on broad informational terms that attract researchers and DIYers, no negative keywords (so you pay for "how to repair a roof yourself"), and weak landing pages that don't answer the searcher's actual question. Local Services Ads (the "Google Guaranteed" pack) tend to be more efficient because you pay per lead and they're high-intent — but you must dispute junk leads to keep cost honest. Watch your missed-call rate here ruthlessly; LSA and search leads call, and a missed call is a paid-for lead handed to a competitor.
Google Business Profile and reviews
Nearly free and consistently the highest-ROI "channel" most roofers under-invest in. The leak here is neglect, not overspend: an unclaimed or stale profile, slow review-gathering, and ignored questions. Spending an hour a week here returns more per dollar than almost anything. It's also the channel customers name at the door even when last-touch credits something else.
Canvassing / door-knocking
Labor-intensive but powerful after storms — if you knock the right doors. The waste is sending crews down random streets. Knocking is the channel where property-level roof-age and storm targeting pays the most, because every hour a canvasser spends on a 6-year-old roof or a roof the storm missed is an hour not spent on a due roof two streets over. Route your knockers by roof signal, not by convenience. And keep canvassers strictly on documentation-and-inspection talk, never on claims promises (next section).
Shared / aggregated lead services
The classic money-pit quadrant: low cost per lead, low close rate, high sales-labor drain, you're one of four roofers calling the same homeowner. Useful as a tactical gap-filler for a slow week; dangerous as a strategy. When you trim waste, this is usually the first cut.
Social and brand awareness
Hard to attribute, easy to overspend on "engagement" that never becomes a roof. Keep it lean and treat it as upper-funnel brand support, judged on whether customers start naming you at the door, not on vanity metrics. Don't let an agency sell you "impressions" as if they were leads. The one social tactic that consistently earns its keep is posting real before-and-after work from local neighborhoods customers recognize — that doubles as social proof when a homeowner is checking you out after a mailer or knock, which is where it actually influences a sale.
Yard signs, wraps, and door hangers
The cheapest per-impression channel you have, and the most under-tracked. A vehicle wrap that's parked at a job site for three days is hundreds of impressions in exactly the neighborhood you want — the one where you're already working a due roof. Put a tracked number on the wrap and on yard signs so you can see the calls they generate. The waste here isn't overspend; it's leaving money on the table by not deploying signs and hangers systematically around every active job, where the surrounding roofs are often the same age as the one you're replacing.
The compliance line that keeps storm marketing from becoming a liability
If any part of your marketing touches storms, hail, or insurance — and for most restoration roofers it's the core — there's a line you cannot cross in your messaging, and crossing it is both a legal risk and, ironically, a source of wasted spend (leads that come in expecting things you can't deliver are leads that won't close and may complain).
Here's the safe frame, and it's worth teaching your whole team and putting in your marketing copy:
What a roofing contractor MAY do: inspect the roof, thoroughly document damage with photos and measurements, prepare an accurate repair estimate (Xactimate-aligned is ideal so it speaks the carrier's language), and state plain facts about their own scope of work to the homeowner. You hand that documentation and estimate to the homeowner.
What a roofing contractor MAY NOT do (this is unlicensed public adjusting in most states, and you should treat this as your do-not-say list in ads, door scripts, and mailers):
- Do not, for a fee, negotiate, adjust, or "handle" the homeowner's claim.
- Do not interpret the homeowner's policy or tell them what is or isn't covered.
- Do not promise a specific payout, approval, or that the claim "will go through."
- Do not promise the deductible will be waived, absorbed, eaten, or made to disappear.
- Do not advertise a "free roof" or "no out-of-pocket."
- Do not represent the homeowner against their insurer.
The homeowner files the claim. The insurer decides coverage. Your job ends at thorough documentation and an honest estimate. This isn't just ethics; it's spend efficiency. Marketing that promises "we handle your whole claim" and "free roof, deductible covered" attracts homeowners shopping for a free roof, draws regulatory attention, and produces leads that crater the moment reality arrives. Marketing that promises "a free, no-obligation roof inspection and a clear, documented estimate you can take to your insurer" attracts homeowners who actually need a roof and respects the law. The compliant message is also the more profitable message.
Where targeting data fits this cleanly: storm-exposure modeling tells you which roofs are worth getting on and documenting after an event. It points your free-inspection offer at the homes most likely to have something to document — which is honest, legal, and efficient. It never tells a homeowner their claim will be approved, because nothing can.
Edge cases and what pros get wrong
"My close rate looks fine, so my marketing must be fine." Close rate hides targeting waste. If you only count the leads that came in, you never see the 75 percent of a saturation mail drop that went to roofs with no business getting a mailer. Measure cost per job against total spend, not close rate on the leads that happened to respond.
Cutting the channel that feeds the channel you keep. Upper-funnel brand work (wraps, signs, brand mail, reviews) often makes your lower-funnel capture (search, LSAs) cheaper and higher-converting, because people search your name instead of "roofers near me." Kill the brand layer and watch your branded-search volume and your close rate quietly drop two months later. Check "how did you hear" before cutting anything upper-funnel.
Seasonal panic-cutting. Cutting marketing during the slow season to save cash is the classic death spiral — you go dark right before the next storm season ramps and you're invisible when demand returns. Reduce waste year-round; don't reduce presence out of seasonal fear. The waste-finding work in this piece lets you cut the dead 30 percent and keep spending on what works, even in a lean month.
Chasing the cheapest lead. Re-read the worked example. The cheapest lead is frequently the most expensive job once you load in sales labor and a 4 percent close rate. Optimize for fully-loaded cost per acquired job and gross profit per dollar — never cost per lead in isolation.
No-sale appointment cost ignored. Every estimate you run and lose still costs you: the drive, the salesperson's hours, sometimes a drone flight or a measurement report you paid for. Channels that generate lots of run-but-lose appointments are more expensive than they look. Track set-to-close, not only set rate.
Treating attribution as a one-time setup. Sources drift, the office gets sloppy with the source field, a campaign's tracking number gets reused. Audit your attribution monthly. Pull ten random recent leads and verify their source field is right and specific. Dirty data quietly re-hides the waste you worked to expose.
Over-engineering the measurement. You do not need a data scientist or a $2,000/month attribution platform to fix a roofing marketing budget. A tracking number per channel, a disciplined source field, a "how did you hear" question, and one spreadsheet you update monthly will surface 90 percent of the waste. Spend your energy on cutting and reallocating, not on building a perfect dashboard.
Blaming the channel when the offer is the problem. Two roofers can mail the identical list and get wildly different results because one offers "a free, no-pressure roof inspection with a written, documented estimate" and the other offers a vague "call us for a quote." If a well-targeted channel underperforms, audit the offer and the creative before you blame the medium. A weak offer makes a great list look like a waste of money, and you'll cut the list when you should have rewritten three lines of copy.
Ignoring the back-end value of a job. Cost per acquisition is only half the economics. A neighborhood where you land one roof and then earn three more from the yard sign, the door-knocks of the new roof's neighbors, and the referrals has a far lower effective acquisition cost than the per-job math shows. This is another reason to concentrate spend geographically on streets dense with due roofs rather than spraying scattered addresses — clustered wins compound, scattered wins don't. When you reallocate budget, weight toward tight geographic pockets of aging or storm-worn roofs, rather than toward a channel in the abstract.
Forgetting that your CRM is a marketing asset, not merely a record. Every inspection you ran two, three, four years ago is a roof that's aging on a known schedule, attached to a homeowner who already let you on the property. A quarterly pass through old inspections and lost quotes — re-sorted by which roofs have now aged into replacement range — is close to the cheapest acquisition you can run. Most shops treat the CRM as a graveyard. Treat it as a calendar of roofs coming due.
Putting it together: the math of cutting waste
Return to that $15,000/month shop from the opening. Suppose the audit reveals:
- A shared-lead service eating $3,000/month at a fully-loaded cost per job double the others. Cut it. Save $3,000.
- A saturation mail program at $5,000/month where only ~20 percent of addresses were plausibly in-market. Retarget it to due/storm-exposed owner-occupied roofs, cut the drop volume by 60 percent, hold response roughly steady. New cost: ~$2,500. Save $2,500.
- A 28 percent missed-call rate on paid search. Fix call answering, no budget change, recover the missed jobs. Pure upside.
- Web leads contacted in an average of 90 minutes. Drop to under 5 minutes with an enforced cadence. Same spend, more jobs.
That's $5,500/month of spend freed — over a third of the budget — with more jobs coming out the other end because the kept channels are better targeted and the leak between marketing and sales is plugged. You can pocket the $5,500 as margin, or reinvest it into the keep-and-scale channels now that they're efficient. Either way, you didn't grow the budget. You stopped lighting part of it on fire.
That's the whole game. Make spend measurable, judge it on fully-loaded cost per job and gross profit per dollar, point your dollars and your crew's hours at roofs that are actually due, plug the leak between a paid-for lead and a sold job, and keep your storm messaging on the legal documentation-and-estimate side of the line. Do that and the wasted third of your budget stops being invisible — and once it's visible, it's easy to kill.
If the targeting piece is where you're stuck — if you know you're paying to reach the wrong roofs but you can't tell which roofs are due — that's the specific gap a property-level roof-age range plus per-roof storm modeling closes. RoofPredict scores and ranks the roofs in your service area, and enriches your own list with roof-age and storm signals, so the next dollar you spend lands on a roof that's worn out or aging out instead of one with fifteen good years left. It won't tell you a roof is damaged or a claim will pay — no honest data can — but it will tell you which doors are worth your crew's time and your marketing budget. Start there, and the rest of the waste gets a lot easier to find.
FAQ
What is the single most important metric for finding wasted roofing marketing spend?
Fully-loaded cost per acquired job — not cost per lead. Fully-loaded means you include media spend plus the sales labor to chase those leads (appointments set, driven, and run), tools, and the cost of inspections you eat on no-sale visits. A cheap lead that converts at 4 percent and burns a closer's whole day is far more expensive per sold job than a pricier lead that closes one-in-three. Pair that with gross profit returned per marketing dollar and you can rank every channel honestly.
Why is cost per lead a misleading number for roofing companies?
Because a lead is not a job, and the cheapest leads are often the most expensive to convert. Shared and aggregated lead services typically show a low cost per lead but a low close rate, and they force your salespeople to chase price-shopping homeowners who are talking to three other roofers. Once you load in the wasted sales hours and the dismal close rate, the 'cheap' channel frequently costs more per sold job than a targeted channel that looks expensive on cost per lead.
How much of a typical roofing marketing budget is wasted?
In shops with weak tracking and untargeted lists, it's common for 30 to 40 percent of spend to produce nothing measurable. The biggest single leak is usually targeting — saturation campaigns where only 15 to 25 percent of the addresses reached are even plausibly in market for a roof. The rest is paying full price to reach roofs that have many good years left. The fix is measurement plus narrowing to roofs that are actually due.
How do I figure out which roofs are actually due for replacement?
Stack three signals. First, roof age — estimated as a range (not an exact date) from current and historical aerial imagery and property records; a roof likely 18 to 24 years old is a strong target, one likely 4 to 7 years old is not. Second, storm exposure modeled at the property level, since hail and wind don't hit a zip code evenly. Third, ownership and decision-ability (owner-occupied, can authorize a roof). The narrower your in-market universe, the less you waste. Tools like RoofPredict produce the roof-age range and per-roof storm signals that are hardest to gather yourself.
Is direct mail still worth it for roofing companies?
Yes, when it's targeted, and it's one of the most wasteful channels when it isn't. The leak is almost always the list: saturating zip codes instead of mailing aging and storm-exposed, owner-occupied roofs. A tightly targeted drop to due roofs can match the revenue of a saturation drop at roughly a quarter of the spend, because you stop paying to reach roofs that will never buy. Track each drop with its own phone number and zip-level codes so you can measure it cleanly.
How fast do I really need to respond to a roofing lead?
Inbound calls should be answered live every time during business hours, and web leads should be contacted within about five minutes. Reachability drops sharply within minutes and keeps falling by the hour, and the homeowner is usually contacting competitors at the same time. Just as important, enforce a follow-up cadence of roughly six to eight attempts over two weeks for leads who don't answer the first time — most sales come after multiple attempts, yet most shops quit after one. That recovers revenue from leads you already paid for.
What can I legally say in storm and insurance roofing marketing?
Stay on the documentation-and-estimate side. You may offer a free inspection, thoroughly document damage with photos and measurements, and prepare an accurate repair estimate the homeowner can take to their insurer. You may not, for a fee, negotiate or handle the claim, interpret what the policy covers, promise a specific payout or approval, promise the deductible will be waived or absorbed, advertise a 'free roof,' or represent the homeowner against their insurer — that's unlicensed public adjusting in most states. The homeowner files; the insurer decides coverage.
How long should I run a marketing channel before judging it?
Use a minimum sample of about 30 leads or one full sales cycle, whichever is longer, and never react to a single hot or cold month. Judge most retail channels on a rolling 90-day window and storm or insurance channels on a rolling 6-month window, because storm jobs close slowly while homeowners wait on their carrier's process. Compare a channel to itself over time rather than to other channels in one weather-skewed month.
Should I cut marketing during the slow season to save money?
Cut waste, not presence. Going dark in the off-season is a classic death spiral — you become invisible right before storm season ramps and demand returns. The better move is to use the audit to identify and cut the dead 30 percent of spend year-round while keeping and even improving the channels that work, so you stay visible without overspending. Reduce the wasted dollars, not the effective ones.
Can lead-targeting data tell me a roof is damaged or that a claim will be approved?
No, and be wary of any vendor that claims it can. Roof-age data gives you a range, not an exact install date, and storm modeling gives you odds, not proof. A high storm-exposure score means a roof is worth getting on and documenting — not that it's damaged or that any insurance claim will pay. Coverage decisions belong to the insurer after the homeowner files. Targeting data's honest job is to point your finite marketing dollars and your crew's hours at the roofs most likely to be in market.
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
- NRCA — The Voice and Leading Authority of the Roofing Industry — nrca.net
- Insurance Institute for Business & Home Safety (IBHS) — Hail and Wind Research — ibhs.org
- NOAA National Weather Service — Storm Prediction Center — spc.noaa.gov
- NOAA National Centers for Environmental Information — Storm Events Database — ncdc.noaa.gov
- Federal Trade Commission — Advertising and Marketing Basics — ftc.gov
- Texas Department of Insurance — Public Insurance Adjusters — tdi.texas.gov
- National Association of Insurance Commissioners (NAIC) — Public Adjusters — naic.org
- U.S. Bureau of Labor Statistics — Roofers Occupational Outlook — bls.gov
- U.S. Census Bureau — American Housing Survey — census.gov
- OSHA — Fall Protection in Roofing Operations — osha.gov
- International Code Council — International Residential Code (IRC) — iccsafe.org
- U.S. Small Business Administration — Marketing and Sales Guidance — sba.gov
- FTC Business Guidance — Endorsements, Reviews, and Testimonials — ftc.gov
- RoofPredict — roofpredict.com
Related Articles
How to Get Roofing Jobs Without Door Knocking All Day
Door knocking still works, but it is the most expensive way to find roofs. Here is how to fill a schedule with fewer doors and better odds.
Roofing Inbound Lead Qualification: The Form Questions That Actually Sort Real Jobs From Tire-Kickers
A field-tested set of inbound form questions, scoring logic, and routing rules that separates real roofing jobs from price-shoppers before anyone gets in a truck.
How to Filter Roofing Leads Bought From Lead Vendors Before You Burn a Crew on Them
Most bought roofing leads die in the spreadsheet, not on the doorstep. Here is the filtering system that decides which ones a human ever touches.