Google Ads for roofers: cost, campaign setup, and what actually converts
Campaign structure, realistic budgets, conversion tracking, and the negative-keyword work that separates profitable roofing accounts from the ones bleeding money.
Google Ads can either be the best lead channel a roofer ever runs, or a $4,000-a-month hole in the floor. Same platform, same auction — the difference is structure. Here's how to set up a roofing Google Ads account that prints booked jobs instead of form fills from people who 'just wanted to know'.
Campaign structure: separate intent, separate budgets
The single biggest mistake we see: one campaign called 'Roofing Services' with 200 keywords mashed together. The fix is intent-based campaign separation. You want at minimum four campaigns:
- —Emergency / repair: 'roof leak repair', 'emergency roofer', 'roof leaking water' — highest intent, highest CPC, highest close rate.
- —Replacement: 'new roof cost', 'roof replacement [city]', 'shingle roof installation' — bigger ticket, longer sales cycle.
- —Storm / insurance: 'storm damage roofing', 'hail damage roof claim' — only run when there's actually been weather.
- —Brand / competitor: your own name + competitor names — cheap and converts at 30%+.
Realistic budgets
Don't believe any agency that says you can 'test' Google Ads with $500 a month. The auction won't let you collect enough data to optimize. Real numbers for a roofer in a competitive metro:
- —Minimum viable spend: $3,000/month — enough data to optimize after 60 days.
- —Comfortable: $5,000–$8,000/month — multiple campaigns, real geographic split testing.
- —Aggressive (top-3 metros): $10,000+/month — required to compete in NYC, LA, Houston, Dallas.
Conversion tracking that doesn't lie
Form fills are the wrong primary conversion. Most homeowners call. You need three conversion events wired up: phone calls from the ad (Google's call extensions), phone calls from the landing page (call tracking number with CallRail or similar), and form submissions. Then tie all three to your CRM so you can mark which became booked appointments. Without this loop, Google's smart bidding optimizes for the wrong thing and your CPL slowly creeps up.
The negative-keyword list that saves your budget
Roofing search is full of garbage that looks like intent. Build a negative-keyword list from day one and update it weekly. Always-negatives include:
- —DIY: 'how to', 'tutorial', 'video', 'youtube'
- —Jobs: 'jobs', 'salary', 'hiring', 'apprenticeship', 'union'
- —Materials: 'shingles for sale', 'wholesale', 'supplier', 'lowes', 'home depot'
- —Wrong intent: 'minecraft', 'roof of mouth', 'sunroof', 'roof rack'
- —Out-of-area cities you don't service
Landing pages, not your homepage
Sending Google Ads traffic to your homepage is malpractice. Build campaign-specific landing pages: a single offer above the fold, click-to-call phone number, three trust signals (license, insurance, warranty), four review screenshots, one form with three fields. Conversion rate should be 8–12% on roofing landing pages — if you're under 4%, the page is the problem, not the traffic.
"We restructured the account in week one. Same budget, 2.4x more booked appointments by month two. The leak was the structure, not the spend."