The calls come in. You answer them. Some are homeowners with real damage who turn into jobs. Many are people shopping five contractors for the lowest bid, people calling about a single missing shingle when they really want a $200 repair, or people calling from a city you do not serve. At the end of the month, the bill from Google is real. The closed jobs from those clicks are harder to count.
Roofing clicks are expensive. In most markets, a single click on a roofing keyword costs somewhere between fifteen and fifty dollars. In competitive metro areas after a storm, that number goes higher. The cost itself is not the problem. The problem is paying that price for calls that do not turn into booked inspections, and for inspections that do not close.
This post is about why that happens and what needs to change for the math to work.
Why Roofing Keywords Are Expensive in the First Place
Every time someone searches “roofing contractor near me” or “roof replacement estimate,” multiple companies compete in an auction to have their ad shown. Each company bids, and the highest-quality ad wins placement. Roofing is a high-value service, which means contractors are willing to bid aggressively because a single job is worth thousands or tens of thousands of dollars. That competitive bidding drives click prices up across the board.
The math can still work. If a replacement job is worth $12,000 and you close one in four qualified inspections, you can afford to spend several hundred dollars per booked inspection and still come out well ahead. The issue is not the cost per click. It is whether the clicks produce qualified people.
The Traffic Problem: Who Is Actually Clicking
The first reason leads do not close is that many of the people clicking are not the right people to begin with.
A roofing keyword like “roofer” or “roof repair” on a broad match setting, which is the default in most campaigns, triggers for a very wide range of searches. Some of those searches come from homeowners with real damage who are ready to schedule an inspection. Many do not.
Material shoppers click. Someone pricing architectural shingles for a DIY project sees your ad and clicks. They will not hire you.
Researchers click. Someone who just filed an insurance claim and wants to understand the process searches “roof damage insurance” and lands on your site. They are weeks from being ready to book anything.
Renters click. Someone renting a home notices roof damage and searches for a roofer, realizes the landlord is responsible, and calls you to ask questions. They are not your customer.
People outside your service area click. Your ads may be appearing in towns you do not serve, for reasons explained in the targeting section below.
None of these callers close into jobs. Every click costs the same fifteen to fifty dollars regardless of who is clicking. If a large share of your clicks fall into these categories, the cost per qualified call becomes very high, and the cost per closed job becomes impossible.
The Geography Problem: Clicks from Outside Your Area
Even after narrowing down to homeowners with real roofing needs, a roofing campaign often sends ads to people in the wrong place.
Google Ads has a geographic setting that, when set incorrectly, shows your ads to people who have shown interest in your area, not just people located there. After a storm, search interest in your region spikes from all over. People who saw news coverage, people with family in the area, people researching storm damage generally, all of them can trigger your ads. They cannot hire you, but they can click and cost you money.
The fix is straightforward once you know to look for it. But most accounts run on the default setting for months or years without anyone checking the geographic report to see where the clicks are actually coming from.
The Ad Problem: Ads That Attract the Wrong Caller
Even with the right geographic setup and tighter keyword settings, vague ads produce vague results.
An ad that says “Trusted Roofer, Free Estimate, Call Now” does not tell a homeowner anything specific. It does not mention the service area. It does not say what types of jobs you do or what the inspection involves. It does not give any signal that would cause a price-shopper to self-select out before clicking.
This matters because the people most likely to click a vague ad are people doing broad research. Homeowners with real damage who are ready to book are looking for signals that you are the right fit: you serve their neighborhood, you handle their type of damage, you have local reviews, you have done similar jobs. A generic ad does not give them those signals and does not filter the callers who are not ready.
Specific ads produce a different type of caller. When an ad mentions the service area, the type of work, what the free inspection actually covers, and what happens next, it attracts homeowners who are further along in their decision. Click volume goes down. The rate at which those clicks become scheduled inspections goes up. The cost per booked inspection falls even though the cost per click stays the same.
The Tracking Problem: Not Knowing What Actually Worked
Even with the right traffic and the right ads, a roofing campaign cannot improve if there is no measurement connecting the ads to the outcomes.
Most roofing accounts I audit either have no call tracking at all, or they have tracking set up in a way that counts the wrong things. A common setup counts a visit to the contact page as a conversion, or counts a click on any phone number anywhere on the website. This makes the account look like it is producing results. It is not producing the right kind of data.
What you actually need to know: which campaign, which keyword, and which ad drove each call. Without that connection, there is no way to tell which part of the budget is working and which part is not. The bidding system cannot optimize toward what produces calls because it does not know what produces calls.
Proper call tracking ties a forwarding number to the ad, a separate tracked number to the website, and a conversion event to form submissions. Each real lead gets recorded once and credited back to the source. Over time, this data shows which keywords produce callers who schedule inspections and which keywords produce expensive junk.
The Reporting Problem: Leads That Are Not Really Leads
The last piece is what counts as a lead in the first place.
If your marketing company reports that you received 40 leads last month, the question that matters is: what is a lead? Is it anyone who clicked on an ad? Is it anyone who called, regardless of whether they were in the service area or interested in an actual job? Is it a booked inspection?
In most roofing accounts, “lead” means call or form fill, with no qualification applied. A homeowner calling from outside the service area is a lead. A renter calling to ask who to contact about her landlord’s roof is a lead. Someone calling to ask if you do gutters and hanging up when you quote them is a lead.
These are not leads. They are contacts. A lead is someone in your service area with a real roofing need, available for an inspection, with the authority to make a decision. Conflating contacts with leads produces inflated numbers that feel like success while the closed job count stays flat.
What a useful number looks like: cost per booked inspection, and ideally cost per closed job, tracked back to the specific campaigns and keywords that drove it. That number tells you whether the ads are actually working for your business.
What Qualified Looks Like
To summarize the gap between what most roofing accounts produce and what they should produce:
What most accounts have: broad keywords triggering for material shoppers and researchers, geographic targeting reaching people outside the service area, generic ads attracting a wide range of callers, and measurement that counts contacts rather than qualified leads.
What a well-set-up account looks like: tight keywords matched to homeowners actively looking to hire a roofer, geographic targeting concentrated in the service area, specific ads that communicate enough to attract serious callers and discourage the rest, and tracking that connects each call and form fill back to the campaign that drove it.
The difference in cost per closed job between these two setups, in competitive roofing markets, is very large.
Getting This Fixed
Understanding why roofing leads are expensive and do not convert is exactly the kind of diagnosis I do for local service businesses before touching a single campaign setting. Most of the problems above are fixable once you know where to look.
If your Google Ads spend feels like it is producing expensive noise instead of the qualified inspection requests your business needs, reach out at adnanagic.com/#contact.
Part of the Google Ads for Roofers series, written for roofing contractors who want their ad budget to bring qualified jobs that close, not expensive dead-end leads.
Related Posts
- A Google Ads Audit for Roofers: What Is Quietly Wasting Your Budget
- Why You Are Paying for Clicks from Homeowners Outside Your Service Area
- Are You Tracking Which Ads Book Inspections, or Just Guessing
Related Posts
Is Your Marketing Company Booking You Roofing Jobs, or Just Sending Reports
9 min read
Insurance-Claim Roofing Jobs: How to Attract Homeowners Who Are Actually Covered
9 min read
Storm Season: How to Scale Your Roofing Ads Up and Down Without Wasting Money
9 min read
Need Help With Your Google Ads?
I help e-commerce brands scale profitably with data-driven PPC strategies.
Get In Touch