Short version: Roofing pairs one of the highest average tickets in home services, $8,000-25,000 for a replacement, with some of the most cutthroat competition on Google, and the winners are decided by structure and follow-up rather than bids. The playbook: separate replacement, repair, and storm damage into their own campaigns because they are three different buyers, track inspections booked and contracts signed rather than raw leads, build a storm-response plan so budget can surge within hours of hail hitting, and judge everything on cost per signed contract against job margin. Roofing rewards companies that treat Google Ads like a sales pipeline and punishes everyone who treats it like a lead faucet.
What makes roofing distinct is that the lead is only the first step of a long sales chain: lead, inspection booked, inspection completed, quote delivered, contract signed, and often an insurance claim in the middle. Each step leaks. An account measured on leads will happily fill the top of that funnel with tire-kickers; an account measured on signed contracts forces every campaign to prove it produces roofs, not conversations.
Why Google Ads works for roofing companies
Roof problems announce themselves: a leak stain on the ceiling, shingles in the yard after a storm, an inspector's report during a home sale. The homeowner goes straight to Google, and the searches separate cleanly by intent. "Roof repair near me" is urgent and modest in ticket. "Roof replacement cost" is a considered $15,000 decision being researched. "Hail damage roof insurance claim" is a storm-driven job where the insurer pays and the contractor who arrives first usually wins. Each maps to its own campaign, message, and economics.
The ticket size is what makes the category work despite fierce click prices. When a signed contract is worth $12,000 with healthy margin, you can afford $300-500 per signed job in marketing, which leaves room for expensive clicks as long as the funnel behind them converts.
Track inspections and contracts, not leads
Form fills and calls are the start of the funnel, not the result. Set up call tracking with a duration threshold, count quote-request forms, and then import the two outcomes that matter back into Google Ads as offline conversions: inspection booked and contract signed. AccuLynx, JobNimbus, Roofr, and even a disciplined spreadsheet can feed this. Once contract data flows back, Smart Bidding stops chasing the campaigns that produce cheap curious clicks and starts chasing the ones that produce roofs, and that shift is usually worth more than a year of manual optimization.
Speed matters almost as much as in emergency plumbing. After a storm, homeowners call three roofers and book whoever answers and shows up first. Measure speed to first contact; if leads wait hours for a callback, fix that before raising budgets, because every competitor's ad is one search away.
Campaign structure for a roofing company
Roof replacement
"Roof replacement", "new roof cost", "roof replacement [city]", plus material-specific searches like "metal roof installation" and "asphalt shingle replacement". This is the flagship campaign: highest ticket, considered purchase, won with a landing page that handles price anxiety head-on with financing options, ranges, and local proof. Material-specific ad groups matter because a metal roof buyer at a 2x ticket should not see generic shingle copy.
Roof repair
"Roof leak repair", "emergency roof repair", "roof repair near me". Smaller tickets, faster decisions, and the best source of future replacements: a repair customer today is a replacement quote in three years if the CRM remembers them. Run it profitably on its own economics and treat the pipeline value as upside.
Storm damage and insurance restoration
"Hail damage roof", "storm damage repair", "roof insurance claim help". Its own campaign, usually paused or minimal, with a prepared surge plan: when hail hits your service area, budgets go up the same day, ad copy switches to free-inspection and claims-help messaging, and the landing page walks through the insurance process. The demand spike after a storm lasts weeks, and companies with a prepared campaign capture it while competitors are still writing ads. One caution: storm-chasing has burned homeowners, and Google users have learned to look for local proof, so lead with your local address, license number, and reviews.
Commercial roofing
Flat roofs, TPO, EPDM, industrial. Long cycles, five- and six-figure jobs, low volume. Keep it separate with patient expectations; one signed commercial job a quarter can justify the whole campaign.
Add the usual brand campaign, and run Local Services Ads underneath: roofing LSAs deliver cheap leads with a Google Guaranteed badge that carries real weight in a trust-scarce category.
Competition and cost per click
Expect $15-50 per click for replacement terms in most markets and $10-30 for repair, with storm markets spiking well beyond that in the weeks after a hail event. Lead resellers and national brands keep the auction hot. The workable math: at $30 CPC and an 8% conversion rate a lead costs $375. If 60% book an inspection and a third of inspections sign, a contract costs roughly $1,900. Against a $14,000 replacement at 35% gross margin, marketing takes about 14% of gross profit, which is a healthy acquisition cost for a job that also produces referrals and a neighborhood's worth of yard-sign visibility. Repair campaigns run tighter margins per job but feed the replacement pipeline. If your numbers are far off these, the leak is almost always in the funnel stages, answer speed, inspection show rate, close rate, rather than the click price.