Roofing demand does not arrive evenly. It arrives in bursts, after weather, and the companies that win those weeks are the ones whose accounts were already built to scale into them. A flat budget through a year that is not flat is the most common mistake here.
What a click costs in roofing right now. Median Google Ads cost per click in the United States, from the October 2026 edition of the Paid Media Cost Index, a Diwizi dataset pulled on October 15, 2026 with the date the source last refreshed each figure.
| Search | Cost per click | Source refresh |
|---|---|---|
| roof replacement | $30.63 | Sep 17 |
| roofing contractor | $21.08 | Sep 12 |
Home Services median, $27.09 across 6 keywords. Free to reuse with credit to the Cost Index.
The economics are good. The pacing is what breaks.
Demand after a hail or wind event spikes hard and briefly. Accounts pacing evenly through the year overspend in quiet months and run out of budget in exactly the week that would have paid for the quarter.
A homeowner navigating a claim and a homeowner pricing a replacement out of pocket search differently, decide on different timelines and carry different margin. One campaign cannot bid correctly for both.
Reseller leads arrive already sold to several contractors, so you compete on who calls back first. It is a real channel, but it caps what you can do about cost per booked job, because the price is set by someone else.
A roof is not bought the day it is searched. Accounts with no remarketing and no follow-up measurement judge the channel on last click and conclude it does not work, when what happened is that the sale closed three weeks later.
Built around seasonality and a decision that takes weeks, not minutes.
GA4 and Google Tag Manager audited and rebuilt where needed, conversion actions deduplicated, and offline conversion import so the platform optimises toward signed contracts instead of form fills.
Which search produced the call, and whether it produced an inspection and then a job. In a trade where the close happens on the roof rather than on the phone, that chain is the only honest measure.
Budgets and bids built to scale up within days of an event and pace back down after, instead of an even monthly spend that misses the window it exists for.
Distinct campaigns, ad copy and landing pages for claim-driven work versus out of pocket replacement, so each can be bid at what it is actually worth.
Paid traffic dies on a bad page. I build and iterate the pages the campaigns point to, with the proof and the local signals a homeowner looks for before letting someone onto their roof. Fixed scope, tied to the campaigns.
A Looker Studio dashboard tied to your real conversion data, plus a written read on what changed and why, including how the season is tracking against the last one.
Local Services Ads are worth running alongside search here, measured separately, because the two behave very differently during a storm week.
Google Ads and Performance Max in one of the most competitive local markets in the US, with expensive clicks, ZIP code choices and seasonal demand. The performance data is confidential by contract, so the case covers the work and the lessons, not the numbers. Read the case.
Cumulative account history since 2020: 5,707 clicks and R$ 63.61 per conversion. Conversions are contact actions recorded by Google Ads, not sales. I also created the brand identity and built the site. Read the case.
I go through the account, the tracking and the conversion path and tell you what is actually broken. You get the findings whether or not we work together.
Tracking, conversion actions and structure get corrected first. Optimising on top of bad data just makes you confidently wrong.
Campaigns, ad copy, audiences and landing pages built around how your buyers actually search.
Weekly optimisation against the metric that matters to your business, with a monthly written read on what moved and what is next.
Long-form writing on this topic from the blog.
Roofers that sell storm and retail work and can measure inspections booked.
Not a fit: A roofer who wants a cheap lead list rather than customers who called them directly.
It can, but not on a flat budget. Demand after a hail or wind event spikes for a short window and then collapses. The account has to be built to scale up within days and pace back down, rather than spending evenly through a year that is anything but even.
Yes. The searches are different, the sales cycle is different and the margin is different. A homeowner looking for help with a claim and a homeowner pricing a full replacement need separate bids, separate ad copy and separate pages.
A purchased lead is usually sold to several contractors at once, so you compete on response time and price the moment it lands. Search traffic you generate yourself is yours alone, and the cost per booked job is something you can actually work on rather than accept.
Tracking and structure get fixed in the first weeks, but roofing has a long consideration window and a seasonal shape, so a fair read takes a full cycle rather than a month. What you should see early is waste coming out, not the whole curve bending.
A short form beats a long discovery call. Give me the basics and I will come back with a straight read on whether I can help, usually within one business day.
Rather book a time directly? Schedule a call.