← All posts
Google AdsRoofing marketingApril 24, 2026Sully Research Team

The Roofing Company That Killed 7 Google Ads Keywords and Grew 23% That Quarter

A Southeast roofer was burning $228 per lead on Google Ads. After one keyword audit, seven terms got paused and booked jobs jumped 23% the next quarter with the same budget.

9 min read

Key takeaways

  • Roofing and Gutters carries the highest cost per lead in home services at $228.15 per LocaliQ's 2025 benchmarks
  • Less than 9 percent of keywords in most roofing PPC accounts produce actual leads, meaning 91 percent burn budget
  • Professional optimization typically recovers 20 to 40 percent of wasted HVAC and roofing ad spend once negative keywords are enforced
  • A $228 Google Ads CPL versus a $10 to $50 organic CPL explains why mature roofers quietly double down on SEO
Contents
  1. 01The keyword report nobody had run in 8 months
  2. 02What "roofing jobs" actually cost him
  3. 03What showed up when they tagged every search term
  4. 04The negative keyword list that was never built
  5. 05What happened to the 23 percent
  6. 06Why Google's own defaults work against you
  7. 07The CPL trap that keeps roofers stuck
  8. 08What this means for your shop
  9. 09Sources
  10. 10Frequently Asked Questions

A 9-truck roofing company in the Southeast was spending $18,400 a month on Google Ads and booking 41 jobs out of it. That is a blended cost per booked job of $448 against an average ticket of just under $9,000. The owner thought the math worked.

Then his wife, who ran the office, exported the search terms report one Saturday morning because she was tired of hearing techs complain about flakey leads. What she found inside that CSV was the reason this post exists.

Seven keywords had eaten $6,800 across the prior 90 days and produced zero booked jobs. Not bad-quality jobs. Not slow-paying jobs. Zero.

The keyword report nobody had run in 8 months

The agency running the account had not opened the search terms report since October of the previous year. The owner was paying a 15 percent management fee on top of the ad spend and had never been shown the list of actual queries his ads were showing up on.

When the wife filtered for search terms with more than $500 spent and zero conversions, twelve rows came back. Seven of those rows were obviously irrelevant: "roofing jobs," "roofing salary," "how to roof a shed," "DIY roof repair," "roofing company for sale," "roofing near me Canada," and "roofing materials wholesale."

The agency had every one of these terms as broad match with no negative keyword protection. LocaliQ's 2025 benchmarks show roofing and gutters runs the highest cost per click of any home service category at $10.70 and the highest cost per lead at $228.15. [LocaliQ] That is the nominal cost when the keyword is relevant. When the keyword is garbage, every click is pure waste at the same CPC.

Reddit's r/PPC threads say the same thing louder. BlackStorm's 2025 roofing teardown put the number bluntly: "in most roofing PPC campaigns, less than 9 percent of keywords produce leads, meaning 91 percent are useless and consume three-quarters of the marketing budget." [BlackStorm Roofing Marketing]

Text Sully: "show me every Google Ads search term from the last 90 days with over $300 spent and zero booked jobs, grouped by campaign"

What "roofing jobs" actually cost him

The single worst offender was the query "roofing jobs." A standard broad match on the keyword "roofing" was matching it. People looking for employment as roofers were clicking a Call Now ad meant for homeowners with a leak.

The account had burned $1,340 on that one search term in 90 days. The CSR picked up those calls, realized they were job-hunters within ten seconds, and hung up. The owner never saw a lead. The agency never flagged it.

This is the pattern every search ads teardown finds. Search Scientists' wasted-spend guide puts the industry average at "20 to 30 percent of total spend going to search terms that have never converted." [Search Scientists] On a $220K annual Google Ads spend, that is $44K to $66K lit on fire.

Text Sully: "what percent of our Google Ads spend in the last quarter went to search terms that never booked a job"

What showed up when they tagged every search term

Once the owner saw the seven dead keywords, he went further. He pulled every search term with more than $200 in spend and tagged each one by outcome: booked job, qualified lead no book, unqualified call, no call at all.

Three patterns jumped out. Branded terms (his company name) converted at 41 percent booked rate. Local intent terms like "roof leak repair [city]" converted at 18 percent. And modifier-free broad terms like "roofing contractor" converted at 3 percent. The agency had been bidding equal cost-per-click on all three groups.

This matches the call-tracking data Invoca publishes. In Invoca's 2025 Home Services Call Conversion Benchmarks Report, 46 percent of phone leads convert during the call across strong channels, but Google Ads Paid Search runs at 39 percent lead rate from answered calls. [Invoca] A 21-point gap between the channel average and the paid search floor tells you keyword quality is doing most of the work, not channel choice.

The owner had been scored on cost per lead. Nobody had scored him on cost per booked job. That is exactly what WhatConverts' HVAC teardown calls out: owners paying $35 per lead and closing 20 percent are actually at $175 per booked job, and the moment they realize it, the whole keyword ranking flips upside down. [WhatConverts]

Text Sully: "group last quarter's Google Ads search terms into branded, local-intent, and generic, then show me booked-job rate and cost per booked job for each group"

The negative keyword list that was never built

The account had 11 negative keywords total. Eleven. For a roofing business in a state where "roofing jobs," "roofing school," "roofing apprentice," "free roof inspection," "warranty claim," "insurance adjuster," and "storm chaser" are all high-volume searches that mean something other than "ready to pay."

Hook Agency's 2025 roofing Google Ads guide says the same thing in the same language most agency audits use: "updating the negative keyword list weekly from the Search Terms report helps maintain an efficient budget and sustainable ROI." [Hook Agency] Weekly. Not monthly. Not quarterly. Not "when the owner's wife opens a CSV on a Saturday."

The owner built a list of 340 negative keywords in an afternoon. He dropped them into every campaign. He switched two exact-match campaigns that were running broad to phrase match. He paused the seven dead terms outright.

One contractor posted on the r/PPC subreddit in a thread about HVAC accounts: "the first 200 negatives I added cut my wasted spend by 31 percent in 30 days. The next 200 cut it another 11." Negative keywords are not a one-time setup. They are a habit.

What happened to the 23 percent

The next quarter, the roofing company spent $17,900 on Google Ads, $500 less than before. Booked jobs went from 41 to 50. That is a 23 percent lift on the same trade, same geography, same offer. Cost per booked job dropped from $448 to $358.

Nothing changed about the product, the landing pages, the ads themselves, or the CSR answering the phone. The only changes were seven paused keywords, 340 added negatives, and two campaigns moved from broad to phrase match.

The agency kept the account. The owner started asking for the search terms report in the monthly review. It took him four more months to realize he could just pull it himself from his Google LSA and Ads dashboard in three clicks, but that is a different story.

Why Google's own defaults work against you

Google recommends broad match as the default for most accounts because it maximizes reach and, not coincidentally, maximizes Google's revenue per advertiser. On a head keyword like "roofing," broad match can match "roof insurance," "roof tile patterns," "roof color ideas," and "roofing movie" without your permission.

JobNimbus' 2025 guide for roofers is direct: "set-it-and-forget-it Google Ads fail roofing companies because wasted spend almost always comes from letting the wrong searches, locations, or users into the account." [JobNimbus]

The owner in this story had 14 different match types across 68 keywords. After the cleanup, he had 31 keywords across three campaigns with deliberate match type per keyword. Fewer, tighter, and more expensive per click in exchange for a higher conversion rate and a lower cost per booked job.

Text Sully: "which Google Ads keywords in our account are on broad match with no recent negative keyword updates"

The CPL trap that keeps roofers stuck

The 2025 LocaliQ benchmark gives roofing the highest CPL in home services at $228.15. Some roofers read that number and assume "we're paying at the benchmark, so we are fine." That is backwards. The benchmark is the industry-average result, which includes the 91 percent of roofing accounts burning budget on garbage terms.

A cleaned-up roofing account should be well under $228 per lead on filtered search terms. One contractor in the r/roofing thread on PPC wrote: "took me six months to get our CPL from $310 to $141 and our booked-job rate from 14 percent to 27 percent. Same budget. The difference was a negative keyword list I update every Sunday."

Sunday discipline versus monthly agency reports is most of the gap. The rest is knowing which search terms are buying and which are tire-kicking.

What this means for your shop

Your Google Ads account almost certainly has dead keywords inside it. Pull the search terms report today, filter for terms with over $300 in spend and zero conversions, and read the first page. You will find three to ten terms that explain most of your waste.

Add those terms to negatives. Tighten your match types on your top 10 revenue keywords. Pull the report weekly, not monthly. That alone typically recovers 20 to 40 percent of wasted ad spend, per Webology's 2025 HVAC analysis that tracks the same pattern across trades. [Webology]

If you run an agency, ask them when the search terms report was last reviewed. If they hesitate, run it yourself. Every dollar you save there buys you a better landing page, a higher LSA bid, or an AI missed-call followup agent that catches the leads you do generate.

The roofer in this story didn't add a new channel. He killed seven keywords and learned to read a report his agency had been hiding in plain sight. Twenty-three percent growth that quarter came from deletion, not addition. That is how most real gains in home service marketing happen, and it is also why the question "which of our ad keywords actually book jobs" deserves to be a question no dashboard will answer until you force the data together.

Sources

Frequently Asked Questions

6 questions home service owners actually ask about this.

  • 01How often should I review my Google Ads search terms report?

    Weekly at minimum. Wasted spend compounds fast at roofing CPCs of $10.70 per click. Hook Agency and BlackStorm both recommend weekly review as the baseline discipline. Monthly is already too slow.

  • 02What is a healthy cost per booked job for roofing Google Ads?

    Most optimized roofing accounts land between $200 and $400 per booked job depending on market and average ticket. The industry-average CPL of $228.15 from LocaliQ is a ceiling on filtered accounts, not a target. Top operators book at $250 to $350 per booked job on Google Search.

  • 03How many negative keywords should a roofing account have?

    Most cleaned-up roofing accounts run 250 to 600 active negatives. Starting lists of 11 like the one in this story are a red flag. Build by trade, geography, and intent (jobs, DIY, wholesale, insurance-only terms all need exclusion).

  • 04Is broad match ever safe for contractors?

    Only with a disciplined negative keyword workflow and active bid adjustments by query. Most small and mid-sized roofers get better results on phrase and exact match with smaller keyword lists. Broad match is a fit for accounts with dedicated PPC management, not for owner-run campaigns.

  • 05What is the difference between cost per lead and cost per booked job?

    Cost per lead counts every form submission or phone call as one unit. Cost per booked job only counts leads that actually turn into scheduled work. The gap is your sales close rate, which typically ranges 20 to 50 percent. Always optimize on cost per booked job, not cost per lead.

  • 06How much can a roofer realistically save by fixing keyword waste?

    Search Scientists data points to 20 to 30 percent of spend typically going to never-converting terms. A $220K annual ad spend can commonly free $44K to $66K after a keyword audit and negative keyword build-out.

See Sully in action

Sully is the pre-built AI for home service shops. Connect your CRM, email, and phone system in minutes and the agents run on your real data.