Google Ads for roofing companies
Google Ads for Roofers
Red Orca Digital runs Google Search and Local Services Ads for residential roofing companies, built by job type so a replacement search never pays repair prices, with a landing page and recorded call tracking. Elijah Nawrot roofed for three years before running ads. From $1,500 a month, one roofer per county.
- Former roofing foreman
- One roofer per county
- Google Partner
Roofers I run ads for
Roofing results, with the window they came from


On this page (9)
What should a roofing lead cost?
Work it out from the market before you touch the account, and start with the pessimistic number, because that is the one you plan around. In Houston in September 2026, Keyword Planner's top-of-page bids on searches that mean someone wants a roofer ran from about $13 a click on the low end to $58 on the high end.
| Cost per click | Clicks that call or fill a form | Cost per lead | |
|---|---|---|---|
| A badly built account | $35 | 7% | about $500 |
| The same market, built properly | $26 | 10% | about $260 |
The gap between those two is not the market. It is the account. Across my own roofing accounts, Search runs between $266 and $474 per lead, a lead being a homeowner who books an appointment, and the number moves with the trade and the area. So a number near the bottom of that range is realistic, not a sales figure.
That is why the estimate call starts here: what a lead costs in your county, and what a sold roof costs at your close rate.
Why set up Local Services first?
Because the Google Guaranteed block at the top is usually the cheapest lead a roofer can buy, and I set it up for every client either way. But it runs out. It bills per lead, there are only so many leads in a county, and it ranks on your reviews and your distance from the homeowner, not on what you spend.
usedbudget
usedbudget
The money is there. The leads are not.
So you do not pick one: Local Services runs until it caps, and Search is how you buy more than the block will give you. Google Ads or Local Services, in full, and why a Local Services budget goes unspent.
Which roofing keyword wastes the most money?
The one that looks best: "roofing contractors" plus your city, on phrase match. Phrase match shows your ad on any search containing that phrase, and every competitor in your town is called Something Roofing.
So a trade-plus-city phrase keyword matches every competitor's brand search in that city. Someone searching a roofer by name has already picked a roofer. You are paying to show up second on a search that was never for you.
I pulled the search terms on one of my own accounts over a summer. That one keyword had taken 52 percent of the campaign's spend and produced a fifth of a lead. The sibling ad group, same kind of keyword in a different county on exact match, had not one competitor name in twenty-seven clicks and nearly three leads.
What I do now: every trade-plus-city keyword goes on exact match, which still catches plurals and word order but stops catching brand names, and the local competitor names go in as negatives before the campaign runs. You can build that list in ten seconds by searching "roofers near me" in your own town and writing down who is in the map pack.
- roof replacement cost near meKeep
- roofing jobs near meNegative: jobs
- how to patch a roof leakNegative: DIY
- [competitor] roofing reviewsNegative: brand
- new roof estimateKeep
Why one ad group per roofing job?
A repair search and a replacement search cost about the same per click, twenty to twenty-five dollars. One is a $400 job and the other is a $15,000 job. In the same ad group with the same bid, Google spends where the volume is, and the volume is repair. On one account I took over, a single repair keyword had taken 42 percent of the whole campaign on sixteen clicks.
- Roofing | SearchSearch only
- Roof replacementLive
- Roof repairLive
- Roof inspectionLive
- Storm damagePaused
| Ad group | What it catches | Its own bid because |
|---|---|---|
| Roof replacement | replacement, new roof, reroof | The job worth the most, so it can pay the most per click |
| Roof repair | repair, leak, patch | Smaller jobs, a lower ceiling |
| Roof inspection | inspection, estimate, check | Often the first step toward a replacement |
| Storm damage | hail, wind, storm | Small most of the year, cloned into a burst campaign when a storm hits |
| Generic | roofers near me, roofing company | Mixed intent, bid in the middle |
| Brand | your company name | Cheap, and stops a competitor bidding on you |
Each group carries routing negatives: the replacement group blocks "repair" and the repair group blocks "replacement", so a repair search cannot land on the expensive bid. Those negatives go at ad group level. The things you never do, commercial work, gutters, jobs, DIY, go at campaign level so they are blocked everywhere.
Should a roofing account be built around storms?
Not the whole account. I built one for a Houston roofer whose website leads with a hailstorm banner. Across his four counties, every hail and storm term combined came to under 400 searches a month. "Roofers" alone was 2,900.
Hail is real money when it hits, but it is a week, not a strategy.
So the storm group stays small, and when a hail event hits I clone it into its own campaign with a burst budget for that week. The rest of the year runs on replacement, repair and inspections, because that is what homeowners type when there is no storm. If your site leads with hail, it is talking to a small slice of your market.
What should happen after a homeowner clicks?
Roofing leads call. A hail lead calls immediately. So the page after the click needs a tracked phone number on the first screen as a real tap-to-call link, one short form above the fold, no menu that leaves the page, and the same offer the ad promised in the same words.
I load every client's current site on a phone before I do anything else. On that Houston roofer, the first phone screen had a headline, a photo and a button. The number was behind the menu and again at the very bottom, and the button loaded a second page before a homeowner saw a form field. That is why every account gets its own landing page as part of the build.


How should a new roofing account bid?
Not the way Google suggests on day one. Smart bidding learns from conversions, and a new roofing account has none, so asking it to optimise for a cost per lead it has never seen gets you weeks of unstable bids.
I start on Maximize Clicks with a ceiling, around $30 a click in a market like Houston, while call tracking proves it is counting real phone calls. Only after fifteen conversions in a thirty-day window, twice in a row, with tracking I have checked, does it move to Maximize Conversions.
Conversion goals are set per campaign with account defaults off. I have seen a Search campaign under-count by about half because it was running account default goals and nobody knew.
Is this for commercial roofers?
No. This is built for roofers selling homeowners a new roof. A commercial-led company, TPO and EPDM for property managers and general contractors, needs different keywords, a different page and usually a different channel, and Local Services is built for homeowners. If most of your work is commercial, I'll say so on the call rather than sell you a residential account.
What does it cost a roofing company?
$1,000 once to build, then from $1,500 a month, which covers ad spend up to $10,000 a month. Ad spend is separate, at least $2,000 a month, paid straight to Google and never marked up, and Local Services leads are billed by Google per lead.
Month to month, and one roofing company per county: once a roofer signs in a county, I won't work against them there. The totals are on the pricing page, and how the rest of the build works is on Google Ads for contractors.
ThenElijah Nawrot
Who you are hiring
I roofed before I ran ads for roofers.
Three years on roofs, foreman at my cousin's company in upstate New York. Then four years running paid marketing for roofing companies. I know what a lead is worth because I have loaded the truck for the job it turned into.
That is why every account I run is built around booked jobs, not clicks, and why I'll tell you when your budget is too small for Search to pay. I am Elijah, and you deal with me directly.
- 3 yrson roofs, foreman at my cousin's company
- 4 yrsrunning paid ads for roofing companies
- 1point of contact: me
Questions
Questions roofers ask.
Do you run storm and insurance campaigns?
Storm terms get a small ad group all year and a burst campaign when a real event hits your area. The account is not built around storms, because most of the year homeowners are searching for replacement, repair and inspections.
Do you advertise gutters or siding for a roofer?
Only if you want those jobs and they are worth it. By default gutters are blocked at campaign level so they cannot eat the roofing budget. Siding can run as its own campaign if it is a real part of your business.
What about metal roofing?
If you install it, metal usually gets its own campaign, because the job value and the buyer are different from asphalt. It should never share a budget with repair.
Is my county still open?
One roofing company per county, or a 30-minute radius around your location instead. I'll tell you straight on the estimate call if yours is taken.
Do I need to be running Google Ads already?
No. If you are not running anything yet, the estimate covers how many people search for a roofer in your county, what a lead should cost, and how I'd set up your first account.
Who actually runs the account?
Me. I roofed for three years, foreman at my cousin's company in upstate New York, then spent four years running paid ads for roofing companies. You deal with me, not an account manager, and I sign off on every change.
Read next
Your estimate
What should a roofing lead cost in your county?
Thirty minutes on a screen share: expected lead cost, cost per sold roof at your close rate, and the budget your county takes.
- One roofer per county
- No account access needed
- If the numbers don't work, I'll say so
- Your trade and county
- Pick a call time on the next screen
- 30-minute screen share





