What percentage of revenue should a roofer spend on marketing?
The blunt rule of thumb across home-service trades is 5 to 15 percent of gross revenue. Roofing sits in the middle of that band for most owners, but the number moves for real reasons, not vibes.
If you are a known name in your county with a review moat and a full crew calendar, you can defend a low number, 5 to 7 percent, because word of mouth and repeat storm work carry you. If you are three years in, unranked on "roof replacement near me," and buying every lead you can find, you are probably at 12 to 15 percent and it hurts. That is normal. Getting found is expensive until it is not, and the goal is to shift spend from rented leads (aggregators, paid clicks) to owned channels (your site, your map listing, your reviews) that keep working after you stop paying.
Here is a rough map by revenue, assuming a growth posture, not coasting:
| Annual revenue | Marketing at 8% | Marketing at 12% | Monthly range |
|---|---|---|---|
| $1,000,000 | $80,000 | $120,000 | $6,700 - $10,000 |
| $2,500,000 | $200,000 | $300,000 | $16,700 - $25,000 |
| $5,000,000 | $400,000 | $600,000 | $33,300 - $50,000 |
Read the percentage as a decision, not a law. A single re-roof ticket can top $15,000, so one extra booked job a month can cover a serious chunk of your budget. The question is never "what does everyone spend," it is "what does it cost to book a job I want, and how many of those do I need."
One caution on the percentage math: it is a floor for the mature shop and a ceiling for the panicked one. Owners who cut marketing hard the moment a slow quarter hits usually pay for it two seasons later, when the pages that would have ranked never got built and the map listing slid out of the top 3. Marketing spend in roofing behaves like roof maintenance: skip it in the good years and the bill comes due, larger, in the bad ones. Set a percentage you can hold through a slow stretch, not one that only survives a busy one.
What does a roofing lead actually cost by channel?
Cost per lead is where roofers get burned, because the cheap-looking number often hides the worst close rate. A $30 shared aggregator lead that six roofers also bought is not cheaper than a $200 lead that calls you first and books. Judge channels on cost per booked job, not cost per phone number.
Rough 2026 ranges we see across roofing markets, wide because storms and metro size swing everything:
| Channel | Cost per lead | Who owns the lead | Notes |
|---|---|---|---|
| Lead aggregators (shared) | $25 - $75 | They do | Sold to multiple roofers, race to call first |
| Google Ads / LSAs | $75 - $300+ | You do | High intent, storm season spikes bids |
| Local SEO / map pack | Low over time | You do | Slow to build, compounds, top-3 is the prize |
| Organic SEO (your site) | Low over time | You do | 4-9 months for competitive terms, then durable |
| Referrals / repeat | Near zero | You do | Best close rate, capped by past volume |
The pattern is simple: rented channels bill you every month forever and the lead quality is what it is. Owned channels cost more up front in time and build, then keep producing. A roofer who only ever buys leads is renting a business. A roofer who builds a ranked site, a top-3 map listing, and a review engine owns one.
There is a second trap: the seasonal price swing. Google Ads and Local Services Ads for roofing terms cost more the week claims open after a storm, because every roofer in the metro is bidding at once. A click that runs $12 in a quiet month can run $40 the week after hail. If your whole strategy is paid clicks, storm season is exactly when your cost per lead is worst and your competition is heaviest. That is the case for owned channels in one sentence: the traffic you rank for organically does not surge-price on you when demand spikes.
Aggregators deserve their own warning. A shared lead is sold to several roofers, so speed to first call decides everything, and the homeowner has already told the same story four times before you dial. Close rates on shared leads run a fraction of what organic and referral leads close at. They are a fine way to fill an empty calendar this week. They are a terrible foundation for a business, because you never own the customer, the relationship, or the pricing, and the rate can rise anytime.
We teach the mechanics of paid roofing traffic in the Google Ads and lead-generation guides. Here the point is budget allocation, not campaign setup.
How should storm work versus retail change the budget?
Roofing marketing does not behave like plumbing or HVAC, and the budget has to respect that. Your demand is spiky. A hail or wind event dumps a flood of homeowners into the market for a few weeks, then it flatlines. Retail re-roofs and repairs trickle in year round. How you split spend depends on which of those two engines you are building.
If your book leans insurance and storm restoration, your marketing has to be ready to catch a surge and go quiet between events. That means always-on visibility (a ranked site, a map listing homeowners find at 9pm the night of the storm) plus the ability to pour money into paid search the week claims open. Homeowners in crisis check reviews and drone footage, then call several roofers the same afternoon. Speed and proof win. Budget for a reserve you can deploy fast, not a flat monthly spend.
If your book leans retail replacement and repair, the game is steadier and cheaper per lead over time. Retail buyers plan, compare, and read. They reward strong organic content, financing pages, warranty clarity, and before-and-after galleries. You can run a leaner, more predictable budget and lean harder on SEO and reviews.
Most roofers are a blend. A workable split for a blended shop:
- 40 to 50 percent to owned, always-on visibility: your site, local SEO, reviews, AI-search presence. This is the base load that catches storm traffic for free and feeds retail year round.
- 30 to 40 percent to paid acquisition: Google Ads and LSAs, dialed up in storm season and after events, dialed down when the pipeline is full.
- 10 to 20 percent to brand and retention: yard signs, truck wraps, past-customer touch, referral incentives.
The insurance angle matters here too. Supplement and claim intent ("does insurance cover roof replacement," "storm damage roof inspection") is high-value traffic a generalist agency ignores. Owning those searches is cheaper than bidding on them forever.
Where does the money go inside a real roofing budget?
"Marketing budget" is not one line item. When a roofer says they spend $15,000 a month and cannot tell where it goes, that is the problem, not the number. Break it into buckets so you can cut what is dead and feed what books jobs.
A representative monthly budget for a roofer around $2.5M in revenue, spending roughly 10 percent:
| Bucket | Monthly | What it buys |
|---|---|---|
| Website + technical SEO | $1,500 - $3,500 | Fast site, ranking pages, schema, hosting |
| Local SEO + map pack | $1,000 - $2,500 | Map listing, citations, review engine |
| AI-search visibility | $500 - $1,500 | Getting cited in ChatGPT / AI answers |
| Google Ads / LSAs | $3,000 - $10,000+ | Media spend, storm-season surge |
| Content + reviews | $500 - $1,500 | Blog, project pages, review requests |
| Brand + retention | $500 - $2,000 | Wraps, signs, referral program |
The paid-media line is the loudest and the easiest to over-fund. It is also the one that stops the day you stop paying. The site, the map listing, and the content are the lines that compound. A ranked roofing site can run 94 or more cluster pages covering every roof type, storm scenario, neighborhood, and insurance question a homeowner searches, and those pages keep pulling leads for years.
Notice what the table is really telling you. The bottom four buckets combined (local SEO, AI-search, content, brand) often cost less than the single paid-media line, and they are the ones that stay yours. A roofer who flips that ratio over two or three years, growing the owned lines and shrinking the rented one, ends up with a lower blended cost per job and a business that does not go dark the day an ad account gets suspended or an aggregator raises rates.
The AI-search line is new and easy to skip, and skipping it is a mistake in roofing. Homeowners in crisis increasingly ask an AI assistant "who does storm damage roof inspections near me" or "does insurance cover a roof replacement" before they ever open a search results page. Getting your shop cited in those answers is cheaper now, while few roofers are doing it, than it will be once the whole market catches on. It is the same land-grab logic that made early map-pack ranking so valuable.
The discipline is quarterly review. Pull the buckets, tag every booked job to its source, and move money toward whatever booked the jobs you actually wanted. Roofers who never do this end up funding a channel that stopped working two seasons ago.
How do you know if your roofing marketing budget is working?
Spend without measurement is just hope with a receipt. The number that matters is not leads, impressions, or clicks. It is cost per booked job and the value of that job. A roofer needs to know: for every dollar in, how many re-roofs and repairs came out, and from where.
Track these, at minimum, per channel:
- Cost per booked job. Total spend on a channel divided by jobs it actually closed. A channel with expensive leads that close beats a cheap channel that never books.
- Close rate by source. Referral and organic leads close far higher than shared aggregator leads. If you are not tagging source at intake, start today.
- Average ticket by source. Some channels bring $800 repairs, others bring $18,000 full replacements. Budget toward the tickets you want.
- Return on marketing spend. Revenue booked from marketing divided by marketing cost. A healthy roofing shop wants several dollars back for every dollar in, and more from owned channels than rented.
The long sales cycle in roofing makes this harder. Insurance jobs run weeks while adjusters and mortgage checks clear, so a lead in January may not book revenue until March. Do not judge a channel on 30 days. Judge it on a full season, and keep the attribution honest, tag the lead source at first contact, before the job closes and everyone forgets where it came from.
Watch out for the vanity dashboard. Agencies love to report impressions, clicks, and "leads," because those numbers always go up and none of them pay for a truck. A form fill from a tire-kicker who wanted a $200 patch is not the same lead as a homeowner with a full hail claim and a mortgage-backed check on the way. If your reports never tie back to booked revenue and average ticket, you are being sold activity, not results. Ask for cost per booked job by channel, every quarter, in writing.
One more discipline: separate rented from owned in your reporting. If 80 percent of your bookings still come from paid leads after two years, your owned visibility is underfunded and you are exposed the day ad costs spike or an aggregator raises rates. The point of a roofing marketing budget is to keep buying yourself out of that dependency.
When should a roofer spend more, and when should they hold?
The budget is not a thermostat you set and forget. It flexes with the calendar, the market, and your crew capacity. Spending more when you cannot staff the work just books jobs you botch and reviews you regret.
Spend more when:
- A storm just hit your market and claims are opening. This is the window. Homeowners are in-market for a few weeks, then gone. Have reserve to deploy inside 48 hours.
- You have crew capacity and a thin pipeline. Empty trucks cost more than ad clicks.
- A competitor is outranking you on the terms that book jobs. Ground you cede in the map pack and AI answers is expensive to take back later.
- You are entering a new service area and nobody knows your name there yet.
Hold or cut when:
- Your calendar is full and you are turning down good work. Buying more leads you cannot service is lighting money on fire.
- A channel has not booked a job in a quarter. Kill it, do not "give it more time" out of sunk-cost habit.
- Your close rate is dropping. That is a sales or capacity problem, and more leads will not fix it, they will just cost more.
The strategic move most roofers miss: use the slow season to build owned visibility, not to go dark. Ranking a site and a map listing takes months (4 to 9 for competitive terms), so the pages you build in the quiet stretch are the ones catching storm traffic for free when the next event hits. Roofers who only market during storms are always paying peak prices for peak-season clicks. Roofers who build in the quiet own the peak.
If you want a straight read on where your current spend is leaking and what it would take to shift from rented leads to owned visibility, that is exactly what a visibility audit shows. No pitch, just the map.