Why Most Roofing Companies Bleed Money on Google Ads
If you’re running Google Ads for your roofing company and your cost per lead keeps climbing with no clear explanation, you’re not alone, and it’s not bad luck. It’s bad structure.
Roofing is one of the more expensive verticals to advertise in. LocaliQ’s 2026 search advertising benchmarks put the average cost per click for home and home improvement, the closest category for roofing, at $8.33. At an 8.05% average conversion rate for home and home improvement, that’s roughly $103 in ad spend to generate a single lead, before you account for wasted clicks from poor targeting.
That math gets ugly fast. Spend $3,000/month, generate 29 leads, close 30%: that’s 9 new jobs. If your average ticket is $900 (repairs and small replacements), you’re barely breaking even. If your average ticket is $12,000 (full replacements), you’re printing money. The point: your campaign structure determines which reality you live in.
The roofing market is saturated. The U.S. Bureau of Labor Statistics reports approximately 168,900 roofing workers employed nationwide: that’s a competitive market with dozens of contractors bidding on the same ZIP codes. Winning isn’t about spending more. It’s about spending smarter.
What Good Numbers Actually Look Like for Roofing Ads

Before you can fix your campaign, you need a benchmark. Most roofing companies we audit have no idea whether their $145 cost per lead is good, average, or a disaster. Here’s what the math should look like across job types.
| Job Type | Avg Ticket | Target CPL | Target Close Rate | Max Allowable CAC |
|---|---|---|---|---|
| Emergency Repair | $650 to $1,200 | $55 to $90 | 40 to 55% | $200 |
| Roof Replacement | $8,000 to $18,000 | $90 to $160 | 25 to 40% | $600 |
| Storm / Insurance | $12,000 to $25,000 | $100 to $175 | 20 to 35% | $875 |
| Commercial Roofing | $30,000 to $100,000+ | $150 to $300 | 15 to 25% | $2,000 |
The Max Allowable CAC column is the number that matters. That’s the most you can spend to acquire a customer and still run a profitable campaign. If your CPL is $160 and your close rate is 25%, your CAC is $640: fine for storm jobs, a problem for repairs.
For a deeper look at how these benchmarks compare across other service verticals, see our breakdown of Google Ads benchmarks by vertical for HVAC, plumbing, chiro, and gyms.
The Campaign Structure That Actually Reduces Cost Per Lead
Most roofing campaigns are built wrong from day one. One campaign, one ad group, a handful of broad match keywords, and a generic landing page. That structure inflates your CPC, tanks your Quality Score, and bleeds budget on irrelevant searches.
Here’s what a tight structure looks like:
Separate campaigns by intent. Emergency repairs and roof replacements are different buying decisions with different search behavior. A homeowner searching “roof leak repair tonight” is ready to book now. Someone searching “roof replacement cost” is price-comparing. They need different ad copy, different landing pages, and different bidding strategies. Mix them together and you’re paying replacement-level CPCs for repair intent, or vice versa.
One theme per ad group. Google’s own guidance on Quality Score confirms that tightly themed ad groups with strong keyword-to-ad relevance earn higher scores, which directly lowers your cost per click. A Quality Score of 8 versus 5 on a $9 CPC keyword can cut your effective cost by 30 to 40%. That compounds across thousands of clicks.
Match types matter. Broad match without a maintained negative keyword list is where roofing budgets go to die. Search Engine Journal notes that broad match keywords without proper negative keyword lists are a leading cause of wasted ad spend, and in roofing, where the average home and home improvement click costs $8.33, one irrelevant search term costs real money. Use phrase and exact match for your core intent keywords. Run broad match only in controlled discovery campaigns with aggressive negative lists.
Geo-targeting down to ZIP code or radius. If you serve a 30-mile radius, don’t bid statewide. Segment by your highest-value service areas and bid more aggressively there. Lower-value or more competitive ZIPs get lower bids or get excluded entirely.
Keep a storm campaign built and paused. Storm and insurance work arrives in spikes after hail or high wind in your area, and a campaign built from scratch after the storm can miss the first days of demand. Build it ahead of time with its own ads, its own landing page and its own budget, leave it paused, and turn it on the day the weather hits.
Where Performance Max Fits in a Roofing Account
Performance Max is where a lot of roofing budgets quietly leak. Google describes it as a goal-based campaign type that reaches all Google Ads inventory, including YouTube, Display, Search, Discover, Gmail and Maps, from a single campaign. That reach is the risk for a roofer. The campaign chases whatever you count as a conversion, wherever it is cheapest, and in roofing the cheapest conversions are often DIY searchers, material shoppers and job seekers, not homeowners who need a roof.
The same Google help page presents Performance Max as a complement to keyword-based Search campaigns, and that is the order we recommend for roofers: Search campaigns split by intent come first, and Performance Max is added only when three things are in place.
- The conversion goal is a booked estimate, not every call or form. Performance Max bids toward the conversion actions you tell it you care about. If a 20-second call counts the same as a booked inspection, it will find you more 20-second calls. Set up Google Ads conversion tracking for booked jobs before you turn it on.
- Exclusions are in place. Add a brand exclusion so the campaign does not take credit for people already searching your company name, and give it the same negative keywords your Search campaigns use for DIY, materials and job searches.
- It sends people to the right page. Point it at your storm, replacement or repair landing page, and check whether final URL expansion is on, since that setting lets Google match searches to other landing pages on your site.
Then judge it the way you judge Search: on cost per booked estimate, side by side, once both have enough weeks of data to compare. A campaign that reports cheap leads but books fewer inspections than Search is not the cheaper campaign.
Landing Pages Are Where Roofing Leads Actually Get Lost
Your ad gets the click. Your landing page either converts it or wastes it. Most roofing companies send paid traffic to their homepage: a page built for brand awareness, not lead capture.
A converting roofing landing page does four things: it matches the search intent of the ad that brought the visitor there, it loads in under 3 seconds on mobile, it has one clear call to action above the fold, and it establishes credibility fast (reviews, license numbers, photos of real jobs).
If you’re running a storm damage campaign and your landing page leads with “Family-Owned Since 1987,” you’re losing leads to the contractor whose page opens with “Insurance Claim? We Handle the Paperwork.” Intent match wins. Our websites and landing pages service builds pages like this, with calls and forms tracked from launch day.
Call-only ads are underused in roofing. Emergency repair searches have massive phone intent: the homeowner has water coming through their ceiling. They’re not filling out a contact form. Run call-only ads for emergency and repair campaigns and track every inbound call as a conversion. If you’re not measuring calls, you’re underreporting your results and making bidding decisions on incomplete data.
The Negative Keyword List Every Roofing Campaign Needs
Before you optimize bids or rewrite ad copy, audit your search term report. If you’re running any form of broad or phrase match, you’re almost certainly paying for searches that will never convert.
Common wasted spend categories in roofing campaigns:
- DIY intent: “how to fix roof leak myself,” “roofing materials home depot,” “DIY shingles installation”
- Employment searches: “roofing jobs near me,” “roofing apprenticeship,” “roofing company hiring”
- Competitor brand names (unless you’re running a deliberate competitor campaign with separate budget)
- Out-of-area cities and states you don’t serve
- Informational queries: “how long does a roof last,” “types of roofing materials,” “roof replacement timeline”
A clean negative keyword list, maintained monthly, can reduce wasted spend by 20 to 35% on a typical roofing campaign. That’s money that goes back into buying leads, not subsidizing irrelevant traffic.
For a full breakdown of how to build and manage a Google Ads campaign the right way, from structure to bidding to what good results look like, read our authority guide to Google Ads for local service businesses.
What to Ask Before You Hire a Roofing Ads Agency
Most roofing companies overpay on Google Ads because they handed their account to an agency that optimizes for impressions and click volume, not booked jobs. If your monthly report leads with “we got you 18,000 impressions this month,” that agency is not running a revenue-first campaign.
The questions that matter:
- What is my cost per lead by campaign and job type?
- What is my cost per acquired customer (CAC)?
- What is my return on ad spend (ROAS) based on closed revenue, not leads?
- What percentage of my budget was spent on converting search terms versus wasted terms last month?
- Can you show me my Quality Scores and what you’re doing to improve them?
If an agency can’t answer those questions with specific numbers, they’re not running your campaign: they’re just collecting a management fee. See our full checklist of what to ask before hiring a Google Ads agency, including the red flags that cost contractors tens of thousands in wasted spend.
Simply Digital Marketing runs Google Ads for local service businesses with one standard: the campaigns pay for themselves. Our Google Ads and Local Services Ads management covers roofing companies. We do not publish a roofing range yet. If you’re a roofing company spending $2,000 to $13,000/month on ads and you’re not sure if your numbers are good or bad, that’s exactly what our free audit is built for. (The HVAC version of this campaign structure is documented in our HVAC Google Ads guide.)
Want a second set of eyes on your account? Our basic audit is free and comes in writing; a call is optional. Get the free audit.

