Skip to main content

How to Lower Your Cost Per Lead on Google Ads for Roofing

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

If you run Google Ads for a roofing company, you already know the number that ruins the meeting: cost per lead. You budgeted $3,500 for the month, you got nineteen leads, and seven of them were tire-kickers, wrong numbers, or someone in the next county over who wanted a free inspection and never picked up again. Do the math on the real, contactable, in-territory leads and your effective CPL is double what the dashboard says.

Roofing is one of the most expensive home-services categories on Google. Clicks routinely run $15 to $60 depending on your metro, the season, and how many storm-chasers parachuted into your market last week. A single bad week of broad-match spend can swallow a month's profit on a residential reroof. So the question isn't whether you can lower your cost per lead. It's which levers actually move it, in what order, and how to do it without torching the volume you need to keep crews busy.

What follows is the working playbook a contractor or in-house marketer can run themselves. It assumes you have a Google Ads account live, you're spending real money, and you're tired of agency dashboards that report "impressions" while your phone stays quiet. We'll go account structure, keywords and negatives, landing pages, bidding, tracking, Local Services Ads, and the budget math underneath it all. Then we'll talk honestly about where paid search stops paying and owned demand takes over.

First, get your cost-per-lead number honest

Most roofers are optimizing against a fake CPL. Before you change a single bid, fix the measurement, because every decision downstream depends on it.

There are three different numbers people call "cost per lead," and they are not the same:

  • Cost per conversion (what Google reports). Total spend divided by tracked conversions. If your conversion action is "any form submit OR any 30-second call," this number is inflated with junk.
  • Cost per qualified lead. Spend divided by leads that are real humans, in your service area, with a roof problem you actually sell into. This is the number that matters.
  • Cost per booked appointment. Spend divided by leads that became an inspection on the calendar. This is the number your sales manager cares about.

The gap between number one and number three is where roofing budgets quietly die. A $90 cost-per-conversion that's really a $260 cost-per-booked-appointment will bankrupt you slowly while the dashboard looks fine.

Build the measurement before you build the campaign

Do these four things first:

  1. Separate your conversion actions. Create distinct conversions for phone calls from ads, calls from the website, form submissions, and chat. Don't lump them. You want to see which channel produces contactable leads, not a blended fog.
  2. Set a call length threshold that reflects reality. A 15-second call is almost never a lead. For roofing, a 60-second minimum is a sane floor; many shops use 90 seconds. Set it where a real intake conversation lives.
  3. Use a call tracking tool with recordings. CallRail, WhatConverts, or similar. You need to listen to calls, because the only way to know your true qualified-lead rate is to hear twenty calls and tag them. There is no shortcut.
  4. Pick ONE primary conversion for bidding. Smart Bidding optimizes toward whatever you feed it. If you feed it junk, it buys more junk efficiently. We'll come back to this in the bidding section, but decide now: the algorithm should chase qualified leads, not raw form fills.

A simple weekly lead-quality audit

Once a week, pull every lead the account generated and tag each one:

Tag Meaning What it tells you
Qualified Real, in-area, has a roof need Your true numerator
Out of area Outside service radius Geo or keyword leak
Wrong service Wants gutters/siding you don't do Keyword/negative gap
Spam / bot Fake form, robocall Form hardening needed
Price shopper only Wants a number, won't book Offer/landing-page issue
Already has contractor Comparison shopper, low intent Audience/timing issue

After four weeks you'll have a defensible "qualified rate." If 100 tracked conversions cost you $9,000 and only 55 were qualified, your real CPL isn't $90, it's $164. Now you know what you're actually fighting. Most of the tactics below are about dragging that qualified rate up and the junk rate down, which lowers true CPL even if the dashboard number barely moves.

Worked example: the true-CPL reveal

Walk through a real month so the math is concrete. Say you spent $9,200 and Google reported 102 conversions, for a tidy-looking $90 cost-per-conversion. You run the weekly audit for four weeks and tag every lead. The breakdown comes back: 58 qualified, 14 out of area, 11 wrong service (gutters and solar you don't sell), 9 spam, 7 price-shoppers who refused to book, and 3 already under contract with another contractor.

Your true qualified CPL is $9,200 / 58 = $159. Of those 58, your sales team booked 41 inspections, so your cost per booked appointment is $9,200 / 41 = $224. If you close one in three booked inspections at an average job value of $11,000, you spent $9,200 to produce roughly 13–14 sold jobs worth around $150,000 in revenue. Now the picture is clear: the channel is profitable, but 44% of your tracked "conversions" were noise, and that noise is exactly what the next several sections attack. Every out-of-area lead, every wrong-service click, every spam form is a line item you can shrink — and each one you remove drops the denominator's junk without touching your bid.

This is the mindset shift. You're not trying to make the $90 dashboard number smaller for its own sake. You're trying to make the 58 bigger and the 44 of junk smaller, because that's the move that actually feeds your crews and your bank account.

Account structure: stop letting one campaign do five jobs

The single most common reason a roofing account has a high CPL is structural sloppiness. One campaign, one ad group, fifty keywords ranging from "roof repair near me" to "metal roof cost" to "roofing companies" all fighting over the same budget and the same generic landing page. Google can't optimize that, and neither can you.

Split by intent, not by service alphabet

Group campaigns around what the searcher is trying to do, because intent drives both the bid you can afford and the page you should send them to.

  • Emergency / active-problem intent. "Roof leak repair," "emergency roof repair," "roof leaking." Highest intent, highest urgency, fastest close. These people will pay attention to speed-to-call. Worth a premium bid.
  • Storm / hail intent. "Hail damage roof inspection," "storm damage roof." Seasonal, spiky, often tied to a recent event. Worth its own campaign so you can ramp it the day a storm hits and pause it when the market normalizes.
  • Replacement / consideration intent. "Roof replacement," "new roof cost," "reroof." Bigger ticket, longer sales cycle, more comparison shopping. CPL is higher and that's fine if your close rate and job value support it.
  • Material-specific intent. "Metal roof installer," "flat roof contractor," "slate roof repair." Only run these if you actually do the work well; otherwise they're a leak.
  • Branded. Your own company name. Cheap, high-converting, and you should almost always run it to keep competitors off your name.

Keep ad groups tight: ideally one tightly themed keyword set per ad group, so the ad copy and the landing page can speak directly to that search. "Roof leak repair" should land on a page that says "Roof leak? We'll be out today," not a homepage carousel.

Geographic structure is a CPL lever, not an afterthought

Roofing CPL varies wildly by zip code. The affluent suburb with steep architectural-shingle homes converts differently than the apartment-dense urban core where half your clicks are renters who can't authorize a reroof.

  • Use location targeting set to "Presence: People in your targeted locations" — not the default "Presence or interest." The default serves your ads to people merely interested in your area, which for roofing means out-of-state researchers and relocating buyers burning your budget.
  • Pull the location report monthly and add location bid adjustments or exclusions for zips that produce clicks but no qualified leads.
  • If your CRM or targeting data tells you certain neighborhoods have older roofs more likely to be due for work, weight your geo and your radius accordingly. Spending the same per click across a brand-new subdivision and a 1990s neighborhood is leaving money on the table.

Budget allocation across campaign types

Once you've split by intent, you have to decide how the money flows. A common mistake is funding every campaign equally, or worse, pouring most of the budget into broad replacement terms because they have the most search volume. Volume is not value. Here's a sane starting allocation for a residential reroof shop in a non-storm month, which you then tune from your own conversion data:

Campaign type Share of search budget Why
Branded 5–10% Cheap, high-converting, protects your name. Cap it; it's not a growth lever.
Emergency / leak 20–30% Highest intent and close rate; worth a premium bid and fast intake.
Replacement / consideration 30–40% Biggest volume and ticket, but most comparison shopping and highest CPL.
Storm / hail 0–30% (seasonal) Near zero in calm weather, ramped hard the day a storm hits.
Material-specific 5–15% Only fund what you do well and profitably.

Treat these as dials, not commandments. The whole point of intent-based structure is that you can now see which dial returns the most qualified leads per dollar and move budget toward it without dragging the rest of the account down with it. In a single shared campaign, you can't do that — the budget just flows to whatever Google decides is cheapest to convert, which is rarely your most profitable work.

Storm-readiness: the structural advantage of a paused campaign

The contractors who win hail season aren't the ones who scramble to build a campaign after the storm. They're the ones who built a storm campaign months earlier, dialed it to a tiny daily budget, and have it sitting paused or near-zero. When the SPC issues a severe outlook and the hail actually falls, they raise the budget and bids that afternoon, swap in storm-specific ad copy and a storm landing page they already wrote, and they're live while competitors are still arguing with their agency. Speed in the first 72 hours after a hail event is worth more than any bid optimization, because intent spikes and decays fast. Structure your account so storm response is a budget change, not a build.

Keywords and negatives: where most of the waste actually lives

If you only do one thing after reading this, build a real negative keyword list. For roofing, negatives are worth more than any bid tweak, because the wasted-click problem in this trade is enormous.

Match types: be deliberate

The match-type landscape shifted hard toward broad match plus Smart Bidding, and Google's reps will push you there. It can work — but only with disciplined negatives and clean conversion data, otherwise broad match in roofing is a money fire. A sane posture for most contractors:

  • Start new campaigns on phrase match for control while you learn what actually converts.
  • Use exact match for your proven money keywords once you've identified them.
  • Introduce broad match only on campaigns with reliable qualified-lead conversion tracking and a mature negative list, and watch the search terms report like a hawk for the first month.

The roofing negative keyword starting list

These are the categories that bleed roofing accounts. Add the ones that don't fit your business as negatives on day one.

Category Example terms to negate Why
Jobs / careers jobs, hiring, salary, career, apprentice, "how to become" Job seekers, never customers
DIY diy, how to, repair myself, youtube, tutorial, "fix my own" Researchers, won't hire
Free / freebies free roof, free, no cost, government grant, "who pays" Deductible-shoppers and grant hunters
Materials retail home depot, lowes, menards, shingles for sale, buy shingles Want product, not a contractor
Wrong trade gutter, siding, solar, painting, hvac, chimney (if you don't do it) Service mismatch
Rentals / commercial (if residential only) apartment, hoa, commercial, warehouse, mobile home Can't or won't close
Education / definitions what is, definition, meaning, types of, history of Pure information intent
Other companies specific competitor names Usually wasteful unless conquesting deliberately
Insurance research "does insurance cover," "file a claim," "adjuster" Often homeowners researching, not ready to hire — qualify carefully

That last row deserves care. Storm-damage searchers are valuable, but "does homeowners insurance cover roof leak" is usually a homeowner researching their own situation, not a buyer ready to book. Tag and watch these before you negate them wholesale; in hail markets some convert beautifully.

Mine the search terms report every single week

The search terms report is the truth serum of your account. Twenty minutes a week here will out-earn any fancy automation:

  1. Sort by cost, descending.
  2. Read every term that spent money without converting.
  3. Negate the obvious junk immediately.
  4. Promote any high-intent term that converted into its own exact-match keyword.
  5. Note patterns — if "cost" terms convert poorly for you, that's a landing-page and offer signal, not only a keyword one.

Single keyword ad groups: worth it for your money terms

For your proven, high-value keywords — the three to ten terms that actually produce booked jobs — consider single keyword ad groups (SKAGs) or very tight themed groups. When an ad group contains only "roof leak repair [city]" and close variants, the ad copy and landing page can match the search word-for-word, which lifts quality score, lowers CPC, and raises conversion rate all at once. You don't need to SKAG the whole account; that's overkill and a maintenance nightmare. But isolating your money keywords so they get bespoke copy and a bespoke page is one of the cleaner CPC-reduction moves available.

Don't forget keyword-level intent within a campaign

Two keywords in the same campaign can have wildly different value. "Roof replacement cost" and "roof replacement company near me" both sit in your replacement campaign, but the first is a researcher pricing a future project and the second is closer to hiring. Watch them separately. If "cost" and "price" terms consistently produce low qualified rates for you, that's not necessarily a reason to cut them — it's a reason to send them to a landing page built for early-stage shoppers (financing options, a price-range guide, an inspection offer) rather than the same "call now" page that works for high-intent terms. Matching the page to the keyword's stage in the buying process is how you rescue CPL on the cheaper-looking terms.

Quality Score is a CPL lever you can read

Quality Score (the 1–10 number Google assigns each keyword) is built from expected click-through rate, ad relevance, and landing-page experience. It directly affects what you pay per click: a higher Quality Score earns a lower CPC for the same position. You don't optimize Quality Score directly — you optimize the three things underneath it. Tight ad groups raise ad relevance. Search-matched headlines raise expected CTR. Fast, intent-matched landing pages raise landing-page experience. So every structural and landing-page move in the sections around this one is also quietly buying you cheaper clicks through Quality Score, compounding the CPL gain.

Landing pages: the cheapest CPL win you're ignoring

Here's the uncomfortable truth: most roofers spend weeks arguing about bids and zero hours on the page the click lands on. But CPL is just cost-per-click divided by conversion rate. If you can't easily cut your CPC in a competitive market, doubling your conversion rate cuts your CPL in half. That's the highest-leverage move available, and it's entirely in your control.

Don't send paid clicks to your homepage

Your homepage is built for everyone — past customers, job applicants, the local newspaper. A paid click for "roof leak repair" needs a page built for exactly that person and nothing else. Dedicated landing pages routinely convert two to four times better than a homepage for the same traffic.

The roofing landing page checklist

A high-converting roofing landing page has, above the fold, on mobile, without scrolling:

  • A headline that matches the search ("Roof Leak? Same-Day Inspections in [City]" for the leak campaign).
  • A phone number that is tap-to-call and a short form — offer both, because some people call and some submit.
  • One specific, believable offer ("Free roof inspection with photo report") — not five.
  • A trust signal that's real: years in business, license number, manufacturer certification, a recognizable review count. Don't fabricate; specificity beats puffery.
  • A local proof point: "Serving [neighborhoods] since [year]." Hyper-local beats generic.

Below the fold:

  • Real photos of your crews and completed roofs (not stock).
  • A simple three-step "what happens next" so the homeowner knows the process.
  • Reviews with names and neighborhoods.
  • Your service area, plainly stated, to deflect out-of-area leads before they cost you.
  • A repeat of the form and phone number.

Speed and forms

  • Page load under 3 seconds on mobile. Most roofing clicks are mobile. A slow page is a leak you're paying for. Test on a real phone on cellular, not your office wifi.
  • Shorter forms convert better, but qualify smarter. Name, phone, zip, and "what's going on with your roof" is plenty. Every extra field costs you conversions; every missing qualifier costs you sales time. A single "is this property a home you own?" radio button filters renters cheaply.
  • Add a honeypot or basic bot protection. Roofing forms attract spam. A hidden field bots fill and humans don't will cut a surprising amount of junk without hurting real conversions.

Worked example: how a page change halves CPL

Say you're paying a $30 CPC and your homepage converts paid traffic at 4%. That's a $750 cost per conversion (30 / 0.04). Build a dedicated leak-repair landing page that converts at 9% — well within reach for a focused page with a strong local offer. Now your cost per conversion is $333 (30 / 0.09). You didn't touch your bid. You didn't add budget. You cut CPL by more than half by respecting the click. This is why landing pages come before bid surgery.

A/B testing landing pages without fooling yourself

If you're going to test pages, test one meaningful thing at a time and give it enough traffic to mean something. Roofing volume is often low enough that a clean A/B test takes weeks, so prioritize big swings over button colors. The changes that actually move roofing conversion rate, roughly in order of impact:

  1. Headline-to-search match. Generic headline versus one that echoes the exact search intent. Usually the biggest single lift.
  2. Offer clarity. One specific offer versus a menu of options. Specific almost always wins.
  3. Form length and the ownership qualifier. Fewer fields lifts raw conversions; a single ownership question lifts qualified rate. Test the net effect on cost-per-qualified-lead, not raw conversions.
  4. Trust placement. Moving real review counts, license numbers, and local proof above the fold.
  5. Mobile load speed. Often not a "test" so much as a fix — but measure conversion before and after.

Judge tests by cost per qualified lead, not by conversion rate alone. A page that converts at 12% but fills with renters and out-of-area clicks is worse than one that converts at 8% with clean, in-territory homeowners. This is where the weekly lead-quality tags pay off again: they let you A/B test for lead quality rather than mere lead quantity, which is the distinction most roofers never make.

The 'what happens next' section earns its keep

Homeowners hesitate on roofing forms because a roof is a large, scary, expensive purchase and they don't know what they're committing to. A short, concrete "here's exactly what happens after you submit" section — we call within an hour, we inspect and photograph the roof, you get a written report and a no-pressure estimate — measurably lifts form completion because it removes the fear of an aggressive sales ambush. It costs you nothing but a few honest sentences, and it pre-frames the appointment so the lead shows up warmer. Don't overpromise; describe your real process.

Bidding: let the algorithm work, but feed it the right food

Google's automated bidding is genuinely good now — when it has clean, sufficient conversion data pointed at the right goal. The failure mode in roofing is feeding it garbage and then blaming the machine.

Pick the bid strategy that matches your data maturity

  • New account, thin data (under ~15 conversions/month): Start with Maximize Conversions without a target, or even manual CPC, to gather clean data. Don't ask for a target CPA before the algorithm has enough examples to hit one.
  • Established, 30+ conversions/month: Move to Maximize Conversions with a Target CPA set realistically from your actual data, or Target ROAS if you pass conversion values back.
  • Always: make sure the conversion you're bidding toward is your qualified-lead-proximate action, not raw form fills. If you can pass offline conversions (booked appointment, sold job) back into Google, do it — that's the single biggest upgrade most roofing accounts never make.

Feed offline conversions back

This is the move that separates good roofing accounts from great ones. When a lead becomes a booked appointment or a signed job, send that signal back to Google Ads (via offline conversion import or your CRM integration). The algorithm then learns which clicks, keywords, and audiences produce real jobs rather than mere form fills, and shifts spend toward them. Over a few months this can meaningfully lower your true cost per job, which is the only CPL that pays your bills.

Day-parting and device sanity

  • Pull the hour-of-day and day-of-week reports. Many roofing accounts waste budget at 2 a.m. on clicks that never convert. If your intake can't answer the phone overnight, consider reducing bids when no one's there to catch the lead.
  • Check device performance. If desktop tablet traffic converts poorly, adjust. But be careful — mobile is where the emergency leak searches live, so don't cut it reflexively.

Don't fight the algorithm with daily edits

A specific, costly mistake: opening the account every morning and nudging the target CPA down a few dollars because yesterday looked expensive. Smart Bidding runs on a learning period and needs a stable target and time to gather examples. Every time you change the target meaningfully, you can reset that learning and make performance worse in the short term. Set a realistic target from real data, then leave it alone for at least a couple of weeks unless something is clearly broken. Roofing volume is often thin, so the algorithm needs patience to find the pattern. Optimize the inputs — keywords, negatives, pages, conversion quality — frequently; optimize the bid target rarely.

Match your target CPA to your unit economics, not your hopes

A target CPA pulled from wishful thinking starves the campaign and kills volume; one set too loose burns money. Anchor it to the math. If your average sold job is worth $11,000 in revenue at a 30% gross margin, that's $3,300 of gross profit per job. If you close one in three booked appointments and book one in two qualified leads, then one qualified lead is worth roughly $550 of gross profit ($3,300 ÷ 6). You can afford a qualified-lead cost well under that and still profit handsomely after overhead and sales cost. Working backward from job value, margin, and close rate gives you a target CPA grounded in reality instead of a number you wish were true. Revisit it as your close rates and job values shift across the season.

Seasonality and the bid calendar

Roofing demand and competition swing hard across the year. Spring and post-storm windows bring both more searchers and more bidders, pushing CPCs up; deep winter in cold markets goes quiet. Don't run a flat strategy across that. Many shops raise budgets and loosen targets when intent is high and clicks convert, then tighten in slow stretches to protect margin. If you use seasonality adjustments in Smart Bidding, reserve them for genuine, short, known spikes (a major storm, a one-week promotion) rather than gradual seasonal drift, which the algorithm handles on its own. The broader point: your CPL target in March should not be your CPL target in December.

Ad copy and extensions: cheap conversion-rate gains

Better ads get higher click-through and quality scores, which lowers your CPC, which lowers your CPL. They also pre-qualify, which lifts your qualified rate.

  • Put the location in the headline. "[City] Roof Repair" outperforms generic copy and filters out-of-area clicks.
  • State the offer and the speed. "Free Inspection · Same-Day Service · Licensed & Insured."
  • Use every relevant asset (extension): call, location, sitelink (Financing, Reviews, Storm Damage, Our Work), callout ("Manufacturer Certified," "Free Estimates"), and structured snippets. Assets take up more real estate and lift CTR for free.
  • Pre-qualify in the copy. If you only do residential, hint at it. If you have a minimum job size, a phrase like "Full Roof Replacements & Major Repairs" gently filters $200 patch-jobs.
  • Test honestly. Don't fabricate awards or numbers. "Over 500 roofs replaced in [County]" only if it's true. False claims invite Google disapprovals and, worse, FTC exposure.

Local Services Ads: the highest-intent, often-lowest-CPL roofing channel

If you're not running Google Local Services Ads (LSA) alongside search, you're probably leaving the cheapest qualified leads in your market on the table. LSA sits at the very top of the results, you pay per lead rather than per click, and you carry the Google Guaranteed badge after passing background and license checks.

Why LSA often beats search on CPL

  • You pay for a lead (a call or message), not a click, so you're not funding researchers and tire-kickers the same way.
  • The Google Guaranteed badge builds instant trust, which lifts contact rates.
  • You can dispute and get credited for clearly bad leads (spam, out of area, wrong service) — a refund mechanism search clicks don't offer.

How to make LSA work

  1. Complete verification fully. License, insurance, and background checks. Incomplete profiles get suppressed.
  2. Pour gas on reviews. LSA ranking leans heavily on review count, recency, and rating. A disciplined post-job review request is your top ranking lever here.
  3. Answer the phone, fast. Responsiveness directly affects your ranking and your lead-to-job rate. Missed LSA calls are missed money twice over.
  4. Dispute bad leads promptly. Every spam or out-of-area lead you successfully dispute lowers your effective CPL. Stay on top of it weekly.
  5. Set a weekly budget you can actually service. LSA leads come in real time; don't generate more than your intake can call back within minutes.

LSA isn't a silver bullet — review velocity, responsiveness, and dispute discipline determine whether your CPL is great or mediocre — but for most residential roofers it belongs in the mix before you scale broad-match search.

Speed-to-lead: the CPL multiplier nobody puts in the dashboard

Here's a number that doesn't show up in Google Ads but quietly doubles or halves your effective CPL: how fast you respond. A lead you paid $159 for and call back in five minutes is a different asset than the same lead you call back the next afternoon. The homeowner who searched "roof leak repair" at 9 a.m. has a wet ceiling and is calling three contractors; whoever picks up first usually wins the inspection. If your intake lets that lead go cold, you didn't lower your CPL — you raised your cost per booked job, because you bought the lead and threw away the sale.

Treat speed-to-lead as part of your paid-search system, not a separate ops problem:

  • Measure response time. Most call-tracking and CRM tools log it. If your median first-touch on web leads is over an hour, that's a leak as real as any wasted click.
  • Route ad leads to a human, fast. Emergency and storm leads especially should ring a live person or trigger an instant text-back, not sit in an inbox.
  • Have after-hours coverage or honest expectations. If you can't answer overnight, either reduce bids when no one's there or use an answering service that books inspections, because a missed 2 a.m. leak call is a paid lead you set on fire.
  • Tie it back to bidding. When booked appointments feed back as offline conversions, fast intake literally trains the algorithm toward the campaigns and times your team can actually convert.

You can run the cleanest account in your market and still have a brutal cost per job if leads die in the gap between submit and call-back. Closing that gap is one of the cheapest CPL improvements available, because it costs no media dollars at all.

How the major paid channels compare for roofing

Google search isn't the only place to spend, and the right mix lowers your blended CPL by not overpaying in any one auction. A fair, qualitative read for residential roofers:

Channel Intent level CPL posture Best for
Google Local Services Ads Very high Often lowest per qualified lead; pay-per-lead with disputes High-intent volume, trust via Google Guaranteed
Google Search Ads High Moderate-to-high; full auction competition Targeted intent capture with control over copy/pages
Bing / Microsoft Ads High Often cheaper CPCs, lower volume Squeezing extra qualified leads at lower cost where your demographic skews older
Meta (Facebook/Instagram) Low-to-medium (interruption, not search) Lower CPL but lower intent; needs strong offer and follow-up Storm-area awareness, retargeting, financing offers
Direct mail to targeted addresses Owned, not auction No per-click cost; cost is print/postage to a chosen list Reaching likely-due roofs before they search

The takeaway isn't that one channel wins. It's that putting 100% of budget into the most competitive search auction guarantees you pay the market's highest price for every lead. Diversifying — especially toward owned, non-auction demand — pulls your blended cost of acquisition down even when your in-auction CPL holds steady.

A 30-day plan to lower your roofing CPL

If you want a concrete order of operations, run this.

Week 1 — Measure and stop the bleeding.

  • Fix conversion tracking: separate actions, set call-length thresholds, install call recording.
  • Build the negative keyword list from the table above.
  • Switch location targeting to "Presence: People in."
  • Pull the search terms report and negate the worst offenders.

Week 2 — Restructure.

  • Split campaigns by intent (emergency, storm, replacement, branded).
  • Tighten ad groups to themed keyword sets.
  • Add all relevant ad assets/extensions.
  • Turn on branded and Local Services Ads if you haven't.

Week 3 — Convert better.

  • Build dedicated landing pages per intent campaign.
  • Get page load under 3 seconds on mobile.
  • Add honeypot/bot protection and a single ownership qualifier to forms.
  • Start a daily review-request habit to fuel LSA.

Week 4 — Optimize and feed the machine.

  • Set up offline conversion import (booked appointment / sold job).
  • Choose the right bid strategy for your data volume.
  • Run your first weekly lead-quality audit and compute your true qualified CPL.
  • Adjust geo bids by zip performance and dispute bad LSA leads.

None of this is exotic. It's the unglamorous blocking and tackling that 80% of roofing accounts skip, which is exactly why doing it consistently moves your number.

The math problem Google Ads can't solve for you

Here's where honesty matters more than tactics. You can do everything above and run a tight account — and roofing paid search will still be expensive, because the auction is a fight against every other roofer in your metro, and the storm-chasers who flood in after every hail event bid your clicks up regardless of how clean your account is. There is a floor under your CPL, and that floor rises every spring.

That's not an argument to stop running ads. It's an argument to understand what category of demand you're buying. Google Ads is rented demand: you pay, today, to be in front of someone who is already searching — which means you're competing head-on, at the moment of highest competition, for a person who may also be calling three of your competitors. The CPL reflects that auction reality.

The complement to rented demand is owned demand: knowing which roofs in your territory are likely due for work and reaching those homeowners directly, before they ever type a thing into Google. When you can target the specific neighborhoods and addresses where roofs are aging into the replacement window — or that just took a storm hit — you're no longer paying the auction premium to reach a researcher. You're starting a conversation with a homeowner who has a real need and isn't yet shopping three contractors at once. That structurally lowers your blended customer-acquisition cost in a way no bid strategy can.

Where RoofPredict fits

This is the gap we built RoofPredict to fill, and it's a different category from anything inside Google Ads. RoofPredict gives roofing contractors two linked things. First, targeting: a house-by-house read on which roofs are likely due, expressed as a roof-age range per address (estimated from aerial imagery, not a guaranteed install date) combined with storm exposure modeled per roof. That lets you enrich your own mailing lists and CRM and aim your trucks, door-knocks, and direct mail at homes statistically more likely to need a roof — instead of spraying a whole zip. Second, claim revenue-cycle management (RoofClaimRCM): turning every document on the jobs you do win into verified, page-cited structured data and surfacing the scope, depreciation, and supplement items that quietly leak 10–30% of legitimately earned restoration revenue — with human approval guarding everything insurer-facing, and the homeowner filing and the insurer deciding.

Be clear on the limits: roof age from imagery is a range, not a birth certificate, and storm modeling gives you odds, not proof that a specific roof is damaged. RoofPredict won't replace your Google Ads account, and it isn't a measurement tool or a CRM. What it does is shift part of your pipeline from rented, auction-priced demand to owned, lower-CAC demand — so the leads you do buy on Google are a smaller, smarter slice of the whole, and the jobs you win don't leak revenue on the back end.

The honest framing: keep running Google Ads, run it tight using everything above, and use owned-demand targeting to stop being 100% dependent on an auction that gets more expensive every storm season.

Common mistakes that quietly inflate roofing CPL

A closing checklist of the leaks we see most often:

  • Bidding toward raw form fills instead of qualified leads. The algorithm faithfully buys more junk.
  • No negative list, or a stale one. Job seekers and DIYers eating 20–30% of spend.
  • Homepage as the landing page. Halving your own conversion rate for no reason.
  • "Presence or interest" geo targeting left on default. Paying for out-of-state researchers.
  • Ignoring the search terms report. The single highest-ROI 20 minutes in the account.
  • Slow mobile landing pages. Paying for clicks that bounce before the page loads.
  • No offline conversion feedback. Optimizing for leads that never become jobs.
  • No Local Services Ads, or ignoring the dispute mechanism. Leaving cheap, refundable leads on the table.
  • Scaling budget before fixing structure. More money into a leaky account just leaks faster.
  • Treating Google Ads as the entire pipeline. Paying full auction price for demand you could partly own.

Lowering your roofing cost per lead isn't one trick. It's measuring honestly, structuring deliberately, converting harder, feeding the algorithm real outcomes, and refusing to depend entirely on rented demand. Do the first four and your dashboard number drops. Do the fifth and your business's cost of acquiring a customer drops, which is the number that actually decides whether the season was good.

FAQ

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

It varies widely by metro, season, and intent, but most residential roofers see cost-per-conversion ranging from roughly $50 to over $200, with replacement and storm-season terms at the higher end. The number that matters more is your cost per qualified, in-area lead and your cost per booked appointment, which are usually significantly higher than the dashboard's cost-per-conversion. Benchmark against your own historical data and your average job value rather than a generic target.

Why is my roofing Google Ads cost per lead so high?

Usually a combination of: bidding toward raw conversions instead of qualified leads, a missing or stale negative keyword list letting job seekers and DIYers drain budget, sending paid clicks to a generic homepage that converts poorly, default 'presence or interest' geo targeting serving out-of-area researchers, and intense auction competition from other roofers and storm-chasers. Roofing is also simply one of the more expensive home-services categories, so even a clean account has a CPL floor that rises in storm season.

Do negative keywords really lower roofing CPL?

Yes, often more than any bid change. In roofing, a large share of clicks come from job seekers ('roofing jobs'), DIYers ('how to fix a roof leak'), product shoppers ('shingles for sale'), and people wanting free roofs or grants. Negating these categories stops you paying for clicks that can never become customers, which directly lowers cost per qualified lead. Build a starter list on day one and mine your search terms report weekly to keep it current.

Should roofers use Local Services Ads or regular search ads?

Most residential roofers should run both, but Local Services Ads (LSA) often deliver a lower effective cost per lead because you pay per lead instead of per click, carry the Google Guaranteed badge, and can dispute and get credited for clearly bad leads. LSA ranking depends heavily on review count, recency, and how fast you answer. Regular search gives you more control over keywords, copy, and landing pages. Use LSA for high-intent volume and search for targeted intent capture.

How much does a roofing landing page affect cost per lead?

Enormously, because CPL equals cost-per-click divided by conversion rate. If you can't easily cut your CPC in a competitive auction, doubling your landing-page conversion rate cuts your CPL roughly in half. A dedicated, intent-matched, fast-loading mobile page with a clear local offer routinely converts two to four times better than a generic homepage for the same paid traffic, making it the highest-leverage move most roofers ignore.

What bid strategy is best for roofing Google Ads?

It depends on your data volume. With a new account or under roughly 15 conversions a month, start with Maximize Conversions without a target or manual CPC to gather clean data. Once you have 30 or more monthly conversions, move to a realistic Target CPA. In all cases, bid toward a conversion action that approximates a qualified lead, and if possible import offline conversions (booked appointments and sold jobs) so the algorithm optimizes for real outcomes rather than mere form fills.

How do I stop spam and fake leads from Google Ads forms?

Add a honeypot field that bots fill and humans don't, enable basic bot protection on your form, set a call-length threshold (60 to 90 seconds) so short junk calls don't count as conversions, and use call recording to tag real versus junk leads weekly. For Local Services Ads, dispute spam and out-of-area leads promptly to get them credited. Cleaning junk out of your conversion data also stops Smart Bidding from chasing more of it.

Can I lower my roofing CPL without spending less on ads?

Yes. Lowering CPL is mostly about efficiency, not budget size. Tighten account structure by intent, add negative keywords, build dedicated landing pages, switch geo targeting to 'people in' your area, feed offline conversions back to Google, and run Local Services Ads with disciplined disputes and review velocity. These raise your qualified-lead rate and conversion rate, which lowers cost per qualified lead even if total spend stays the same.

How does owned-demand targeting reduce my overall cost per customer?

Google Ads is rented demand: you pay auction prices to reach someone already searching, often while they contact your competitors too. Owned demand means reaching homeowners whose roofs are statistically likely due for work, or that just took a storm hit, before they start shopping. Because you skip the auction premium and reach a real need earlier, your blended cost to acquire a customer falls. Tools like RoofPredict estimate which roofs are likely due as an age range per address plus per-roof storm exposure, letting you target mailings and crews rather than paying full search price for every lead.

How often should I optimize a roofing Google Ads account?

Touch the search terms report and lead-quality tags weekly, since that is where waste accumulates fastest. Review campaign structure, geo performance, and bid strategy monthly. Avoid daily tinkering with bids, because Smart Bidding needs time and data to stabilize. The cadence that works for most roofers is a tight weekly negative-keyword and lead-quality pass plus a deeper monthly review of structure, landing pages, and true qualified CPL.

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. Google Ads Help: About Smart Biddingsupport.google.com
  2. Google Ads Help: About location targetingsupport.google.com
  3. Google Ads Help: About keyword matching optionssupport.google.com
  4. Google Ads Help: Add negative keywords to campaignssupport.google.com
  5. Google Ads Help: About Local Services Adssupport.google.com
  6. Google Ads Help: Dispute a lead charge in Local Services Adssupport.google.com
  7. Google Ads Help: Import offline conversionssupport.google.com
  8. Google Ads Help: About conversion trackingsupport.google.com
  9. FTC: Truth in Advertisingftc.gov
  10. FTC Endorsement Guides: What People Are Askingftc.gov
  11. U.S. Small Business Administration: Marketing and salessba.gov
  12. NOAA Storm Prediction Centerspc.noaa.gov
  13. Insurance Institute for Business & Home Safety (IBHS) FORTIFIED Roofibhs.org
  14. RoofPredictroofpredict.com

Related Articles