Skip to main content

Google Ads Cost Per Lead for Roofing: Real Benchmarks and How to Cut It

Emily Crawford, Home Maintenance Editor··30 min readRoofing Lead Generation
On this page

Ask ten roofing owners what they pay for a Google Ads lead and you'll get ten numbers, ranging from "about forty bucks" to "don't get me started." Both can be true in the same metro, in the same month, for the same service. The spread is the whole story. Cost per lead on Google Ads is not a fixed market rate you look up and accept — it's an output of decisions you control, plus a few you don't. Once you can see which is which, the number stops feeling like weather and starts feeling like a dial.

This is a working breakdown of what a roofing lead actually costs on paid search, why the range is so wide, and the specific levers that move it. It's written for the owner or sales manager who is either already spending money on Google and squinting at the dashboard, or about to, and wants to avoid the expensive education. Everything here assumes you want signed jobs, not form fills — so we'll keep tracing the money all the way to the contract, because a cheap lead that never closes is the most expensive lead you can buy.

What "cost per lead" even means (and the three numbers people confuse)

Before any benchmark is useful, you have to agree on what you're counting. Three numbers get used interchangeably and they are not the same thing.

Cost per click (CPC). What you pay each time someone clicks your ad. In roofing, depending on the market and service, you're typically looking at anywhere from $6 to $45+ per click for high-intent search terms. "Roof repair near me" and "roof replacement quote" are expensive clicks because everyone bidding on them is a buyer, and the contractors bidding are happy to pay because the job is worth thousands.

Cost per lead (CPL). What you pay for a contact — a phone call, a form submission, a chat — from someone interested enough to raise their hand. CPL = total ad spend divided by number of leads. If you spent $3,000 and got 30 leads, your CPL is $100.

Cost per acquisition (CPA), a.k.a. cost per sale. What you pay for an actual signed job. If those 30 leads turned into 6 contracts, your CPA is $500 ($3,000 / 6). This is the number that pays your mortgage, and it's the one most contractors never calculate because it requires tying ad data to the CRM.

Here's the relationship that matters:

CPA = CPL / close rate

A $100 CPL with a 30% close rate gives you a $333 CPA. A $60 CPL with a 10% close rate gives you a $600 CPA. The "cheaper" lead source is nearly twice as expensive to acquire a customer from. Anyone selling you on CPL alone is showing you the half of the picture that flatters them.

Keep all three visible. CPC tells you about your auction position and competition. CPL tells you about your landing page and offer. CPA tells you about your sales process and lead quality. When one moves, the spacing between them tells you where the problem lives.

Honest roofing CPL ranges (and why a single benchmark is a lie)

There is no national "roofing cost per lead" the way there's a national gas price. But after enough campaigns you start to see clusters. Here's a realistic map of where roofing CPLs tend to land on Google Ads, organized by what's driving the number. Treat these as orientation, not gospel — your market can sit outside any band for good reasons.

Scenario Typical CPL range What's driving it
Repair/maintenance, suburban market, tight geo, good tracking $35 – $90 Smaller-ticket jobs, lots of searches, less competition on "repair" terms
Full replacement, competitive metro $90 – $250 Expensive clicks, fewer searchers, every contractor bidding
Storm/restoration market right after an event $40 – $120 Demand spikes, intent is high, but everyone floods in fast
Commercial/flat roofing $150 – $400+ Low search volume, long sales cycle, high job value justifies it
Brand-new account, no tracking, broad match $200 – $600+ You're paying tuition; this is fixable, not normal

Notice the last row. A brand-new account running broad match keywords with no negative list, sending traffic to a homepage, and counting every form fill (including the supplier asking about a job application) as a "lead" will produce a horrifying CPL. That's not the market. That's the setup. The single biggest reason contractors believe "Google Ads doesn't work for roofing" is that they experienced the bottom row and assumed it was the whole table.

The other reason the single-number question is a trap: CPL is meaningless without job value and close rate attached. A $250 CPL on full replacements is fantastic if your average job is $14,000 and you close one in four leads. A $45 CPL on repairs is a disaster if your average ticket is $400 and you close one in eight. Always carry the job value and the close rate alongside the CPL or you're navigating with one eye closed.

The math that decides if your CPL is good or bad

Forget benchmarks for a minute. Your own numbers tell you what you can afford. Run this once and tape it to the wall.

Start with three inputs from your own business:

  1. Average job value (the revenue on a typical won job)
  2. Gross margin % (what's left after materials and labor, before overhead)
  3. Target close rate on Google leads (be honest; measure it)

Work an example. Say:

  • Average job value: $11,000
  • Gross margin: 35% → $3,850 gross profit per job
  • Close rate on Google leads: 20%

Now decide what fraction of that gross profit you're willing to spend acquiring the customer. Many roofing operators target marketing cost at 8–12% of revenue overall, but for a paid channel you can think in terms of profit. If you'll spend up to 25% of the $3,850 gross profit to win the job, that's a max CPA of ~$960.

Convert max CPA to max CPL:

Max CPL = Max CPA × close rate
Max CPL = $960 × 20% = $192

So in this business, any CPL under ~$192 is profitable, and a CPL of $90–$120 is genuinely strong. If a competitor in a cheaper market brags about a $50 CPL but closes at 8% on $4,000 repair jobs, their max sustainable CPL might be $80 — they have far less room than you do, even though their headline number looks better.

This is the most important reframe here: the question is never "is my CPL low?" It's "is my CPL below what a job is worth to me?" Two contractors can run identical campaigns and one is printing money while the other is bleeding, purely because of close rate and job value. Fix those and a "high" CPL becomes a bargain.

Why two roofers in the same city pay 5x different CPLs

When CPLs diverge wildly between similar companies, the cause is almost always one (or several) of these. This is the diagnostic list. Run down it before you blame the platform.

1. Keyword intent and match type

Broad match without tight negatives is the single most common money leak. Bid on "roofing" on broad match and Google will happily spend your budget on "roofing jobs near me" (job seekers), "how to roof a shed" (DIY), "roofing supply" (your competitors' suppliers), and "roofing schools." Every one of those clicks costs you and produces zero leads, inflating CPL.

The fix is to start with phrase and exact match on buyer terms — "roof replacement [city]", "roof repair quote", "hail damage roof inspection" — and build an aggressive negative keyword list from day one (more on that below). Intent is the lever with the largest swing. Tightening it can cut CPL in half by itself.

2. Geographic targeting

Google's default location setting is "presence or interest" — meaning it can show your ads to people merely interested in your area, including someone in another state researching. For a service business that only works within a 40-minute drive, that's wasted reach. Switch to "presence" (people physically in your service area) and draw tight radii around the zips you actually serve and profit in. A roofer targeting a whole state pays far more per lead than one targeting the eight zips where their crews already are.

3. Landing page vs. homepage

Sending paid clicks to your homepage is a CPL killer. The homepage talks about your company; a landing page answers the searcher's one question ("can you fix my roof, and how do I get a quote?") and gives one obvious action. A focused landing page with a fast load time, a clear offer, trust signals, and a short form will routinely convert 2–3x better than a homepage. Conversion rate sits in the denominator of CPL, so doubling it roughly halves your cost per lead with zero change to spend.

4. Call handling and speed-to-lead

Half of roofing's "leads" are phone calls, and a missed call is a lead you paid for and threw away. If your ads run at 7 p.m. and nobody answers, you bought a click and got nothing. Worse, web form leads go cold fast — contacting a lead within five minutes versus thirty minutes can be the difference between a conversation and voicemail. Slow follow-up doesn't change your CPL on the dashboard, but it tanks your CPA, which is what actually matters.

5. Quality Score and ad relevance

Google rewards relevance with cheaper clicks. If your keyword, ad copy, and landing page all say the same thing ("roof repair" → ad about roof repair → landing page about roof repair), your Quality Score climbs and your CPC drops. Generic ads pointed at a generic page pay a relevance tax on every click. This compounds: better Quality Score → lower CPC → lower CPL, for free.

6. Tracking quality (the silent one)

If you can't see which keywords and ads produce leads rather than mere clicks, you can't cut the losers. Without call tracking and conversion tracking wired up, you're optimizing blind, and Google's automated bidding has nothing real to optimize toward. Bad tracking quietly keeps CPL 30–50% higher than it needs to be because your budget keeps funding terms that never convert.

7. Competition and Local Services Ads

Some of your high CPC is just market reality — in a dense metro with deep-pocketed competitors, clicks cost what they cost. Google's Local Services Ads (the "Google Guaranteed" pay-per-lead units above the regular ads) are a separate lever here: they're priced per lead rather than per click, they let you dispute junk leads, and they often deliver a lower effective CPL for residential repair work. They're not a fit for every service, but for repair-and-replace residential roofers they frequently belong in the mix alongside search.

A field-tested setup that produces a sane CPL from day one

If you're starting fresh or rebuilding, here's an order of operations that avoids the tuition-paying phase. Do these in sequence; skipping ahead is how CPL blows up.

Step 1 — Wire up tracking before you spend a dollar

  • Install Google Ads conversion tracking and connect Google Analytics 4.
  • Add a call tracking number so phone leads are attributed to the keyword/ad that drove them. The majority of roofing leads come by phone; untracked, you're flying blind on your best channel.
  • Define what counts as a conversion precisely: a quote request, a booked inspection, or a qualified call over 60 seconds. Do not count newsletter signups, careers-page forms, or 8-second hang-ups. Garbage conversions train Google to find you more garbage.

Step 2 — Structure campaigns by service and intent

Separate campaigns (or at least tightly themed ad groups) for:

  • Emergency/repair ("roof leak repair," "emergency roof repair")
  • Replacement ("roof replacement," "new roof cost," "roof replacement quote")
  • Storm/inspection ("hail damage roof inspection," "storm damage roof")
  • Commercial, if you do it, always separate — different buyer, different cycle, different CPL entirely.

Mixing these means one budget and one message for buyers with wildly different urgency and value. Separation lets you bid more for replacement clicks (worth more) and ride repair clicks for volume.

Step 3 — Start narrow on match type, then expand

Launch on phrase and exact match for your money terms. Let exact match terms prove they convert before you widen. Broad match has a place later, once you have conversion data and a strong negative list feeding Google's automation — not on day one.

Step 4 — Build the negative keyword list before launch, not after

This list saves more money than any other single action. Seed it immediately with the obvious wasters:

Free, jobs, career, careers, salary, hiring, employment,
DIY, how to, repair myself, course, training, school,
supply, supplier, wholesale, manufacturer, distributor,
materials, shingles for sale, used, cheap,
insurance company, adjuster jobs, claim help

Then review the Search Terms report weekly for the first two months and keep adding. Every irrelevant search you block is CPL you didn't waste.

Step 5 — One landing page per service, fast and focused

Each campaign points to a page that matches the ad. Repair ads → repair page. The page loads in under 3 seconds, leads with the offer ("Free roof inspection, same-week scheduling"), shows proof (reviews, license number, photos of real jobs), and has a short form plus a tap-to-call button above the fold. Mobile first — most roofing searches happen on phones.

Step 6 — Answer the phone, every time

Have a plan for after-hours and overflow calls. An answering service that books inspections beats voicemail. The goal is a five-minute response to every web lead and a live human on every call during ad hours. This is a CPA lever disguised as an operations problem.

Step 7 — Let it run, then read it honestly

Give a new campaign 4–6 weeks and enough conversions (aim for 15–30 before drawing conclusions) before major changes. Then cut the keywords and ads with high spend and no conversions, scale the winners, and repeat. Most accounts find their efficient CPL in month two or three, not week one.

Where most contractors actually lose the money

After the setup is right, the leaks move downstream. These are the expensive mistakes that don't show up as a high CPL on the dashboard but quietly wreck your real cost per job.

Counting bad leads as leads. If your "CPL" includes spam form fills, wrong numbers, and tire-kickers, it looks artificially low and you celebrate the wrong thing. Score lead quality. A clean CPL on qualified leads is the only honest number.

No speed-to-lead discipline. You can have the best CPL in town and still lose, because the contractor who calls back in four minutes signs the job while you're getting to it after lunch. Speed compounds across every lead you buy.

Selling on the first call instead of booking the inspection. The job of a paid lead is to get the inspection booked. Quoting a roof over the phone, sight unseen, trains the homeowner to price-shop and slashes close rate — which inflates your CPA even when your CPL is great.

Stopping ads the moment the schedule fills. Roofing demand is lumpy. Pause campaigns and you lose the Quality Score and learning momentum, then pay more to restart when you're slow again. It's usually cheaper to throttle budget down than to switch off entirely.

Ignoring the CRM. The keyword that produces the cheapest leads is often not the one that produces the most revenue. Without closing the loop from ad → lead → signed job → job value in your CRM, you can't tell, so you optimize for cheap clicks instead of profitable customers.

Pairing paid search with knowing which roofs are actually due

Google Ads catches a homeowner at the exact moment they're searching — that's its superpower, and it's why the clicks cost what they do. But it only reaches people who already typed something. There's a parallel question that paid search can't answer: which roofs in your service area are wearing out or got hammered by the last storm, whether or not the owner has gone looking yet? That's the supply side of demand, and it changes how you think about cost per lead.

This is where RoofPredict fits. It scores roofs house-by-house across a territory — estimating a roof-age range per address from aerial imagery, then layering storm physics modeled per roof (hail and wind exposure for the specific events that passed over). The output is a ranked view of which doors and routes are most likely due: roofs aging out plus roofs a storm probably wore down. It also enriches a list you already own — your past customers, a mailing list, a farm area — with those roof-age and storm signals so you're not knocking or mailing at random.

Why that matters for your paid-search economics: when you already know a neighborhood is dense with aging or storm-exposed roofs, your canvassing, direct mail, and even your geo-targeted ad spend can concentrate there instead of spreading thin. You stop paying full freight to discover demand and start meeting demand you can see in advance. The two channels reinforce each other — paid search converts the homeowner who's actively searching; the roof-age-plus-storm data tells you where to spend your outbound effort so it's not a coin flip.

Honest limits, because hype helps no one: a roof-age estimate is a range, not a birth certificate — aerial imagery and modeling can't read a permit. The storm layer is odds, not proof; it tells you a roof was likely exposed to damaging hail or wind, not that damage exists or that any particular claim will go anywhere. You still send a human to look. What it does is stop you from treating every address as equally likely, which is the default when you're buying clicks or knocking blind. Used that way, it lowers your effective cost per opportunity across the whole operation, well beyond the paid-search slice.

Storm and restoration demand: capturing the search without crossing the line

A large share of expensive roofing search volume is storm-driven: "hail damage roof inspection," "storm damage roof claim," "is my roof covered after hail." These searchers are gold, and the temptation is to write ad copy and landing pages that promise the moon. Don't — both because it's a compliance landmine and because the over-promisers close worse than the straight-shooters once the homeowner figures out the pitch.

Here's the clean way to capture storm intent and stay on the right side of the line. A roofing contractor can lawfully inspect a roof, document conditions thoroughly with photos, and prepare an accurate repair estimate for their own scope of work. You can write an Xactimate-aligned estimate, hand it to the homeowner, and explain your findings as facts about the roof. What you cannot do — because it's unlicensed public adjusting in most states — is negotiate or "handle" the claim for a fee, interpret the homeowner's policy or what's covered, promise a specific approval or payout, promise the deductible will be waived or absorbed, advertise a "free roof," or represent the homeowner against their insurer.

That shapes your ads. The do-not-say list, applied to copy:

  • Don't write "We handle your claim" or "We deal with the insurance company for you." Do write "We inspect, document the damage, and give you a detailed estimate."
  • Don't write "Free roof" or "No out-of-pocket cost." Do write "Free inspection" (the inspection is free; the roof is not).
  • Don't write "We'll get your claim approved" or imply you control the outcome. Do write "We document thoroughly so you have what you need to file."
  • Don't write "Deductible covered/waived." Don't say it on the phone either.
  • Keep the framing on your side of the table: you document, you estimate, the homeowner files, the insurer decides coverage.

This isn't just legal hygiene — it converts better, because it's the truth and homeowners can smell the difference. Your landing page promising a thorough inspection and an honest, detailed estimate earns trust; the one promising a free roof and a waived deductible attracts skeptics and the occasional regulator. RoofPredict's storm layer plays its honest role here too: it points you to roofs likely exposed to a damaging event so you knock the right doors, but it never tells you a claim will be approved or coverage exists. That's the inspector's job on the roof and the insurer's job at the desk — not the ad's job, and not the data's.

Reading your account: a monthly diagnostic

Once campaigns are live, here's the monthly read-through that keeps CPL honest and trending down. Go in this order; each layer explains the one above it.

1. Search Terms report. What did people actually type to trigger your ads? Add negatives for anything off-intent. This is the highest-leverage 15 minutes you'll spend all month.

2. Keyword-level conversions. Sort by cost. Any keyword with significant spend and zero or near-zero conversions gets paused or moved to its own test. Don't let three dead keywords eat a third of the budget.

3. Ad performance. Which headlines and descriptions get clicks and conversions? Pause the laggards, write new variants against the winners. Relevance lifts Quality Score, which lowers CPC.

4. Landing page conversion rate. If clicks are healthy but leads are thin, the page is the bottleneck, not the ads. Check load speed, form length, mobile layout, and whether the offer is obvious in the first screen.

5. CPL by campaign and device. Repair vs. replacement vs. storm will have different CPLs — that's fine and expected. Watch for one campaign quietly dragging the blended number. Check mobile vs. desktop separately; phone-heavy traffic behaves differently.

6. Close the loop to CPA. Pull won jobs from the CRM, tag the source, and compute cost per job and revenue per job by campaign. This is where you discover the "expensive" replacement campaign is your most profitable line and the "cheap" repair campaign barely breaks even. Reallocate budget toward profit, not toward cheap clicks.

A simple monthly scorecard, kept in one sheet:

Metric This month Last month Target
Spend
Clicks
CPC
Leads (qualified only)
CPL < your max CPL
Close rate
Signed jobs
CPA < 25% of gross profit/job
Revenue from channel
ROAS (revenue ÷ spend)

If you only ever fill in this one table, you're ahead of most contractors running paid search, because you'll be managing toward the number that pays you — CPA and ROAS — instead of the number that flatters the dashboard.

Worked example: turning a $220 CPL into a $95 CPL

Let's run a realistic turnaround so the levers feel concrete. A residential roofer in a mid-size metro starts with:

  • Spend: $4,000/month
  • Leads: 18 → CPL $222
  • Close rate: 17% → ~3 jobs
  • Average job: $12,500 → CPA ~$1,333

Not a disaster, but soft. Here's the sequence and the effect of each move.

Move 1 — Tighten match type and add 60 negatives. The Search Terms report showed ~28% of spend on job-seeker, DIY, and supplier searches. Cutting those reclaims roughly $1,100 of wasted spend. Leads climb to 24 on the same budget. CPL → $167.

Move 2 — Switch geo to "presence" and trim to profitable zips. Drops out-of-area clicks and a chunk of low-intent reach. Slightly fewer clicks, but they're the right clicks; conversion rate ticks up. Leads → 27. CPL → $148.

Move 3 — Build a dedicated replacement landing page. Old traffic went to the homepage at a 4% conversion rate; the focused page hits 8%. That alone is a near-doubling of conversion. Leads → 38. CPL → $105.

Move 4 — Add call tracking and a 5-minute follow-up rule. CPL barely moves (it's already low), but close rate rises from 17% to 26% because fewer leads go cold and the team books inspections instead of quoting blind. Jobs from the same lead pool jump.

Move 5 — Reallocate budget to the proven replacement campaign and add Local Services Ads for repair. Blended CPL settles around $95; CPA drops to roughly $440.

Result on the same $4,000/month: from ~3 jobs to ~10, CPL from $222 to $95, CPA from $1,333 to ~$440. Nothing exotic happened — no secret keyword, no growth hack. Just intent, geo, landing page, speed, and reading the data. That's the whole game, and it's almost entirely within your control.

Frequently confused: CPL benchmarks vs. lead-buying services

One clarification, because it trips people up. Running your own Google Ads is different from buying shared leads from a marketplace. With your own ads, the CPL is yours, the lead is exclusive, and you control quality and follow-up. With a lead marketplace, you pay a per-lead fee for a contact that's often sold to several contractors at once, so your real cost includes the close-rate penalty of competing against three other roofers who got the same lead five minutes ago.

When you compare a "$65 marketplace lead" to a "$120 Google Ads lead," you're not comparing like for like. The exclusive lead you generated, on your landing page, with your follow-up, typically closes at a far higher rate — which, back to the opening math, is what determines your real cost per job. Cheaper per lead, more expensive per customer, is the trap. Build your own pipeline whenever you can; use marketplaces as overflow, not foundation.

What drives roofing clicks to cost what they do

It helps to understand why a roofing click runs $6 to $45 instead of pennies, because it tells you where the give is. A click's price in Google's auction is roughly a function of three things: how many advertisers want that keyword, how much each is willing to pay, and how relevant your ad and page are (Quality Score). Roofing checks every box for expensive clicks — high job value means contractors will pay a lot, demand is concentrated in a handful of obvious buyer terms, and in storm season the bidder pool swells.

The lever you control inside that is Quality Score. Google effectively discounts your clicks when your ad, keyword, and landing page all point at the same intent. Two roofers bidding the same dollar amount on "roof replacement quote" can pay materially different actual prices because the one with a tightly relevant ad and a matching landing page earns a higher Ad Rank for less. That's not a trick — it's Google preferring ads that searchers find useful. So part of "lowering CPL" is just refusing to pay the relevance tax: one keyword theme per ad group, ad copy that echoes the keyword, and a landing page that delivers exactly what the ad promised.

The part you don't control is the raw competitiveness of your market. A roofer in a dense metro with several aggressive, well-funded competitors will pay more per click than one in a smaller market, full stop. That's not a failure of your campaign; it's the price of the room. The response isn't to fight the CPC — it's to make every expensive click count by converting more of them and closing more of what converts. You can't always lower the click price, but you can almost always lower the cost per job that the click feeds into.

Bid strategy: where your CPL gets quietly decided

The bidding setting you pick shapes CPL as much as keywords do, and it's the part most contractors leave on autopilot. A quick tour of the choices and when each one fits a roofing account.

Manual CPC / Enhanced CPC. You set max bids per keyword; Google nudges them slightly for conversions. This is the right starting point for a brand-new account with thin conversion data. It keeps you in control while the campaign learns, and it stops Google from spending aggressively on terms that haven't proven themselves. The downside is it needs hands on it weekly.

Maximize Conversions. Google spends your full budget chasing the most conversions it can find. Good once you have clean conversion tracking and at least 15–30 conversions a month for the algorithm to learn from. The risk for roofers: if your conversion definition is sloppy (counting hang-ups and junk forms), it will faithfully buy you more junk. Garbage in, garbage out applies hard here.

Target CPA. You tell Google the cost per lead you'll accept and it bids toward it. Powerful once you genuinely know your numbers, because you're handing the machine your max CPL as a guardrail. Set the target too low and you'll choke off volume — the system simply stops bidding when it can't hit an unrealistic number. Start near your actual recent CPL, then tighten gradually.

Target ROAS. Bids toward a revenue-to-spend ratio. This only works if you feed conversion values back into Google — different values for a repair lead versus a replacement lead, ideally pulled from your CRM. Most roofing accounts aren't wired for this yet, but the ones that get there optimize toward profit instead of lead count, which is the endgame.

The practical path for a roofer: start Manual or Enhanced CPC, gather 4–6 weeks of clean conversions, switch to Maximize Conversions or Target CPA, and only graduate to value-based bidding once your CRM is feeding real job values back. Skipping straight to an automated strategy on a new account with bad tracking is a fast way to a $400 CPL and a bad opinion of Google Ads.

Seasonality and storm timing: budget like the demand curve is real

Roofing demand is not flat, and pretending it is wastes money in both directions. Spring and fall carry steady replacement intent; summer brings storm spikes in hail-prone regions; deep winter often goes quiet in cold climates. Your CPL moves with that curve because competition and search volume move with it.

A few timing rules that keep CPL sane across the year:

  • Don't go dark in slow months — throttle instead. Pausing a campaign resets Quality Score momentum and learning, so you pay a premium to restart. Cutting daily budget to a maintenance level keeps the account warm and your CPL stable for when demand returns.
  • Pre-position before storm season. In hail and wind regions, the contractors who already have campaigns running, landing pages live, and call handling staffed before the first big event capture the cheap early intent. The ones who scramble to launch after the storm pay top dollar into a flooded auction.
  • Expect CPL to rise right after a major storm, then fall. When a hailstorm hits, every roofer in the metro floods the same keywords at once and clicks get expensive for a week or two. If you're already established with good Quality Score, you ride it out cheaper than the newcomers bidding into the spike.
  • Watch your service mix shift. Repair intent climbs after weather events; replacement intent is steadier year-round. Let budget follow the mix instead of holding it fixed.

This is exactly where knowing which roofs are due pays off on timing. When a storm rolls through, the question isn't just "who's searching" — it's "which roofs in the affected zips were likely exposed, and which were already aging out." Pointing your outbound effort at those specific neighborhoods, while your search ads catch the people actively looking, means you're not competing with the whole town for every door. You're concentrated where the demand actually is.

Tracking calls and forms without fooling yourself

Because so much roofing volume comes by phone, call tracking deserves its own section — it's where CPL accuracy lives or dies. A few practices separate honest tracking from vanity numbers.

Use dynamic number insertion (DNI) on the landing page. This swaps in a tracking number per visitor so a phone call gets tied to the exact keyword and ad that drove it. Without it, you know you got calls but not which ad earned them, so you can't cut losers or scale winners.

Set a call-duration threshold for what counts as a lead. A 12-second call is a wrong number or a hang-up, not a lead. Counting it inflates your lead total and deflates your CPL artificially, which feels nice and teaches you nothing. A 60-second threshold is a reasonable floor for "this was a real conversation."

Record calls (where legal) and grade them. The fastest way to find out your true close rate is to listen to a sample. You'll often discover the leads are fine but the phone handling is losing them — quoting over the phone, failing to book the inspection, not asking for the appointment. That's a CPA problem masquerading as a lead-quality problem.

Reconcile form leads against spam. Bot submissions and competitor-curiosity fills pad your numbers. Add a simple challenge to forms, and periodically audit a month of leads against which ones the sales team could actually reach. Your qualified CPL is the only one worth optimizing.

Tie everything back to the CRM with a source field. Every won job should carry the campaign that sourced it. This is the single discipline that lets you compute cost per job by campaign — and it's the one most often skipped because it requires the field crew and office to tag consistently. Make it a non-negotiable step in your intake.

Get these right and your dashboard CPL starts matching reality. Get them wrong and you'll spend months optimizing toward a number that was fiction the whole time.

Common questions owners ask when the CPL looks wrong

A few patterns come up again and again when an owner stares at a CPL that doesn't make sense. Quick reads on each.

"My CPL doubled this month and I changed nothing." Usually competition (a storm pulled new bidders in), a seasonal demand dip, or Google's automation drifting after you changed a conversion setting. Check the auction insights and your conversion count first before touching bids.

"I get tons of leads but they're all junk." Your conversion definition is too loose or your match types are too broad. Tighten what counts as a conversion, audit the Search Terms report, and add negatives. Junk volume that lowers headline CPL is worse than fewer real leads at a higher CPL.

"My CPL is great but I'm not booking jobs." The leak is downstream — speed-to-lead, phone handling, or quoting blind over the phone instead of booking inspections. Your CPL isn't the problem; your CPA would tell the real story if you tracked it.

"My competitor says their CPL is half mine." They may be in a cheaper service line, counting leads differently, running in less competitive zips, or simply not measuring qualified leads. CPL comparisons across companies are nearly meaningless without matching the job type, market, and counting method.

A short checklist to pin above the desk

  • Conversion and call tracking installed and verified
  • Conversions defined as qualified leads only (no careers forms, no hang-ups)
  • Campaigns split by service and intent (repair / replacement / storm / commercial)
  • Phrase and exact match on money terms; broad only after data
  • Negative keyword list seeded and reviewed weekly
  • Geo set to "presence," tight to profitable zips
  • One focused, fast landing page per service
  • Tap-to-call above the fold; live answering during ad hours
  • 5-minute follow-up rule on every web lead
  • Monthly scorecard tracking CPL, close rate, CPA, and ROAS
  • CRM loop closed: source tagged on every won job
  • Storm copy stays on the document/estimate side — inspect, document, estimate; never "handle the claim," "free roof," or "deductible waived"

The bottom line on cost per lead

There is no magic roofing CPL to chase. There's your max CPL, set by your job value, margin, and close rate, and there's the distance between that ceiling and what you're actually paying. Close that distance with intent targeting, tight geo, focused landing pages, fast follow-up, and honest tracking, and a CPL that looked scary becomes routine. Then push the close rate, because every point of close rate lowers your true cost per customer more than any bid tweak ever will.

Google Ads converts the homeowner who's searching right now. To stop paying full price to find demand, pair it with a clear view of which roofs in your area are due — aging out or storm-worn — so your outbound effort, your mail, and your tightest ad geos all point at the doors most likely to need you. That's how RoofPredict fits next to a healthy paid-search program: it scores roofs house-by-house (an age range per address plus storm exposure modeled per roof) and enriches the list you already own, so your whole acquisition machine works from a map instead of a guess. Get a look at which roofs in your territory are most likely due at roofpredict.com — then keep your cost per lead honest by always tracing it all the way to a signed job.

FAQ

What is a good cost per lead for roofing on Google Ads?

There's no universal number, but a useful frame: residential repair leads often land around $35–$90, and full-replacement leads around $90–$250 in competitive metros. "Good" means below your own max CPL, which you calculate from job value, margin, and close rate. A $150 CPL is excellent on $12,000 replacements with a 20% close rate, and terrible on $400 repairs with an 8% close rate.

How do I calculate my maximum cost per lead?

Take your average job value, multiply by gross margin to get gross profit per job, decide what share of that profit you'll spend to win a customer (often around 25%) to get your max cost per acquisition, then multiply by your close rate. Example: $11,000 job × 35% margin = $3,850 profit; 25% = $960 max CPA; × 20% close rate = $192 max CPL.

Why is my roofing cost per lead so high?

Usually one or more of: broad match keywords with no negative list burning budget on job seekers and DIY searches, location targeting set too wide, paid clicks landing on your homepage instead of a focused page, missed calls during ad hours, low Quality Score from mismatched ads and pages, or broken tracking that hides which keywords actually produce leads. Fixing intent and adding negatives usually moves the number most.

Cost per lead vs. cost per acquisition — which matters more?

Cost per acquisition (cost per signed job) is what pays you; CPL is a leading indicator. CPA equals CPL divided by your close rate, so a low CPL with a weak close rate can still produce an expensive CPA. Track both, but make budget decisions on CPA and return on ad spend, not CPL alone.

Are Google Local Services Ads cheaper per lead than regular search ads?

Often, for residential repair and replacement work. Local Services Ads charge per lead rather than per click, appear above standard ads with the Google Guaranteed badge, and let you dispute clearly junk leads. They're not a fit for every service or market, but for residential roofers they frequently lower the effective cost per lead and belong in the mix alongside search campaigns.

How long before Google Ads produces a reasonable cost per lead?

Plan on 4–6 weeks and 15–30 conversions before drawing conclusions, and expect the efficient CPL to settle in month two or three. New campaigns need data before automated bidding and your own optimization can work. Changing things every few days resets the learning and keeps CPL high longer.

Should I buy roofing leads from a marketplace instead of running my own ads?

Marketplace leads often look cheaper per lead but are frequently sold to several contractors at once, so your close rate drops and your real cost per customer can be higher than an exclusive lead you generate yourself. Build your own pipeline as the foundation and use marketplaces for overflow, comparing on cost per signed job rather than cost per lead.

How do I lower cost per lead without cutting volume?

Improve the conversion rate rather than just trimming spend. A focused, fast landing page that converts at 8% instead of a homepage at 4% roughly halves CPL on the same traffic. Tightening match type, adding negatives, narrowing geo to profitable zips, and lifting Quality Score with relevant ads all lower CPL while keeping or increasing qualified lead volume.

Can I advertise insurance or storm work on Google Ads as a roofer?

Yes, but keep the copy on the document-and-estimate side. You can advertise a free inspection, thorough damage documentation, and a detailed repair estimate. Avoid promising to "handle" or negotiate the claim, interpreting coverage, guaranteeing approval or payout, advertising a "free roof," or saying the deductible is waived — those cross into unlicensed public adjusting in most states. Document and estimate; the homeowner files and the insurer decides.

How does knowing which roofs are due affect my ad costs?

It moves spend toward demand you can see in advance instead of demand you pay to discover. When you know which neighborhoods are dense with aging or storm-exposed roofs, you can concentrate canvassing, mail, and your tightest ad geographies there. Tools like RoofPredict score roofs house-by-house with an age range and storm exposure, lowering your effective cost per opportunity across the whole operation, well beyond paid search.

The Roofline by RoofPredict

Stay Ahead of Roofing Market Changes

Join The Roofline by RoofPredict for weekly roofing intelligence: material price signals, storm demand, insurance and regulatory updates, sales tactics, and local contractor opportunities.

By signing up, you agree to receive The Roofline by RoofPredict. Unsubscribe anytime.

Sources

  1. National Roofing Contractors Association (NRCA)nrca.net
  2. About Local Services Ads – Google Ads Helpsupport.google.com
  3. About keyword matching options – Google Ads Helpsupport.google.com
  4. About Quality Score – Google Ads Helpsupport.google.com
  5. About location targeting – Google Ads Helpsupport.google.com
  6. Insurance Institute for Business & Home Safety (IBHS)ibhs.org
  7. NOAA Storm Prediction Centerspc.noaa.gov
  8. National Weather Serviceweather.gov
  9. FTC Advertising and Marketing Basicsftc.gov
  10. Texas Department of Insurance – Public Insurance Adjusterstdi.texas.gov
  11. U.S. Bureau of Labor Statistics – Roofersbls.gov
  12. OSHA – Fall Protection in Constructionosha.gov
  13. International Code Council (ICC) – International Residential Codeiccsafe.org
  14. RoofPredictroofpredict.com

Related Articles