Google Ads Keywords for Roofing Companies: The Buyer-Intent List That Pays
On this page
Most roofing Google Ads accounts bleed money in the same three places, and none of them are the bid. They bleed on the keyword list (too broad, no intent tiers), on the missing negative list (paying for "roofing jobs near me" from people who want to be hired by you, not to hire you), and on the disconnect between a click and a signed contract. You can fix all three, and the keyword list is where it starts.
This is a working contractor's keyword reference, not a generic PPC explainer. Every term below is grouped by what the searcher actually wants, scored by intent, and paired with the negatives that keep it clean. There are worked cost-per-lead examples with real arithmetic, ad-group structures you can copy into a new campaign tomorrow, and the edge cases that quietly eat 20 to 40 percent of a roofing budget. If you run ads yourself, you can build the whole account from this. If you hire it out, you'll know exactly what your agency should be doing and what to ask for.
A note on honesty up front: keywords don't win jobs. They buy you a conversation with someone who has a roof problem. The bid gets the click, the landing page gets the call, the salesperson gets the job. Treat the keyword list as the top of a measured funnel, not a magic phrase, and the rest of this will make sense.
How a roofer should think about keyword intent
Not all roofing searches are worth the same money, and bidding them all the same way is the fastest way to overpay. Sort every keyword into one of four intent tiers before you spend a dollar.
Tier 1 — Emergency / now. The roof is actively leaking, a tree is through it, shingles are in the yard after last night's storm. These people will hire today or tomorrow. They convert at the highest rate and tolerate the highest price, because the alternative is water in the living room. You bid these to win, top of page, with call extensions on and a phone number that rings a human.
Tier 2 — Replacement / project. The roof is old, they've gotten one quote, they're shopping. Big ticket, longer sales cycle, very profitable. Worth aggressive bidding but with a stronger landing page and follow-up, because they're comparing you to two other trucks in the driveway.
Tier 3 — Repair / specific problem. Cracked flashing, a few missing shingles, a soft spot. Smaller jobs, but they're real buyers with a defined problem, and a repair customer is a replacement customer in three years. Bid moderately; these are also your best cost-per-lead.
Tier 4 — Research / informational. "How long does a roof last," "signs you need a new roof," "asphalt vs metal." These people are not ready. They convert poorly on a sales page and cost you money in a search campaign. Capture them with content and organic, not paid search, or at most a tightly capped campaign with a soft offer (a free inspection, a roof-age check), never a "call now."
The single most common mistake: bidding Tier 4 research terms at Tier 1 prices and wondering why the cost per lead is brutal. The second most common: not bidding Tier 1 emergency terms aggressively enough because the keyword-level cost-per-click looks scary, when those are the cheapest leads you'll ever buy on a per-job basis.
A quick scoring rubric
Before a keyword goes in the account, score it 1 to 5 on three axes and only run the ones that clear the bar.
| Axis | Question | Low (1) | High (5) |
|---|---|---|---|
| Buyer readiness | Will they hire within 30 days? | "how to inspect a roof" | "emergency roof repair near me" |
| Job value | What's the ticket? | "shingle touch up" | "full roof replacement quote" |
| Commercial clarity | Are they hiring, not selling/learning? | "roofing jobs hiring" | "roofer near me open now" |
Anything averaging 4+ goes in a priority ad group with real budget. 3 to 4 goes in a standard group. Below 3 either becomes a negative keyword or content. That's the whole filter.
The high-intent roofing keyword list
Build ad groups around tight themes, not one giant pile. Below are the core groups with the keywords that earn their place, organized by the intent tiers above. Treat each block as its own ad group with its own ad copy and its own landing page section.
Emergency and leak (Tier 1 — bid to win)
These are your highest-value, fastest-closing terms. Schedule them to bid hardest during business hours and after major weather, and make sure the ad shows a phone number.
- emergency roof repair
- emergency roof repair near me
- roof leak repair
- roof leak repair near me
- leaking roof repair
- roof leaking after rain
- 24 hour roof repair
- emergency roofer
- roof tarp service
- roof tarping near me
- water coming through ceiling roof
- roof leak emergency
Roof replacement (Tier 2 — bid aggressively, sell hard)
The profit center. Long sales cycle, high ticket. Pair with a landing page that has financing, warranty, and proof.
- roof replacement
- roof replacement near me
- roof replacement cost
- new roof
- new roof cost
- new roof near me
- reroof / re-roof
- full roof replacement
- roof replacement quote
- roof replacement estimate
- residential roof replacement
- roof replacement company near me
- asphalt shingle roof replacement
- metal roof replacement
- replace roof cost
Note on "...cost" terms: searches ending in "cost" sit on the line between Tier 2 and Tier 4. Some are budget-checkers; many are real buyers who want a number before they call. Run them, but with an ad that promises a fast free estimate and a landing page that gives an honest range, not a generic brochure. Cost-shoppers who get a straight answer call more than cost-shoppers who get a runaround.
Roof repair (Tier 3 — best cost-per-lead, bid steady)
- roof repair
- roof repair near me
- roof repair company
- roof repair contractor
- shingle repair
- missing shingles repair
- roof flashing repair
- chimney flashing repair
- roof valley repair
- soffit and fascia repair
- roof vent repair
- skylight leak repair
Local contractor / "near me" (all tiers — your bread and butter)
Geo-intent terms convert because the searcher wants someone local now. Layer these with tight location targeting.
- roofing company near me
- roofing contractor near me
- roofer near me
- local roofing company
- roofing companies in [city]
- best roofing company near me
- top rated roofers near me
- licensed roofing contractor
- residential roofing contractor
- roofing services near me
For the bracketed [city] term, build one ad group per city or neighborhood you actually serve, with the city in the keyword, the ad headline, and the landing page. "Roofing companies in Plano" with a Plano-specific page beats a generic page every time, on both quality score and conversion rate.
Storm and hail damage (Tier 1/2 — seasonal, surges after events)
This is where roofing PPC gets both lucrative and legally sensitive. Read the compliance section below before you write a single ad for these. The keywords are fine; the messaging is where roofers get themselves in trouble.
- storm damage roof repair
- hail damage roof
- hail damage roof repair
- wind damage roof repair
- storm damage roofing contractor
- roof storm damage inspection
- hail damage roof inspection
- roof damage after storm
- shingle damage from hail
- roof inspection after hail
Material and type-specific (Tier 2/3 — qualified, lower competition)
Searchers who name a material are further along and often cheaper to reach because the field is thinner.
- metal roof installation
- standing seam metal roof
- asphalt shingle roof
- architectural shingle roof
- flat roof repair
- flat roof replacement
- tpo roofing
- tile roof repair
- cedar shake roof
- gutter installation (if you do gutters)
Commercial roofing (separate campaign entirely)
Never mix commercial and residential in one campaign. Different buyer, different budget, different sales cycle, different page. If you do commercial, give it its own structure.
- commercial roofing contractor
- commercial roof repair
- commercial flat roof repair
- commercial roof replacement
- industrial roofing
- tpo roof installation
- epdm roofing contractor
- commercial roof inspection
The negative keyword list that saves the most money
Negatives are where amateur and professional roofing accounts visibly diverge. A clean negative list routinely cuts wasted spend by a quarter to a third on a broad-heavy account. Build it before you launch, then mine the search terms report weekly and keep adding. Here are the categories every roofing account needs.
Job seekers (the single biggest leak)
People searching to be hired, not to hire. If you ever run broad or phrase match, these will pour in.
- jobs
- hiring
- careers
- employment
- salary
- pay
- wage
- apprentice
- apprenticeship
- helper wanted
- roofing jobs
- roofer jobs
- how to become a roofer
- roofing school
- roofing certification
- osha
DIY and self-repair
People who want to fix it themselves and will never buy a job.
- diy
- how to
- how do you
- yourself
- tutorial
- youtube
- video
- temporary fix
- temporary roof patch
- caulk
- flex seal
- tar paper
- roof repair kit
Free and price-shopping bottom-feeders
Be careful here. "Free inspection" and "free estimate" are searches you may want, because you do offer those. But "free roof" is a term to think hard about, and the compliance section explains why you should never run an ad that promises one.
- free roof
- cheap
- cheapest
- low income
- government grant
- grant
- assistance program
- nonprofit
- charity
- habitat for humanity
Wrong-job and adjacent trades
- gutter cleaning (unless you sell it)
- pressure washing
- solar panel (unless you install solar)
- chimney sweep
- attic insulation
- siding (unless you do siding)
- window replacement
- hvac
- paint
Supply, wholesale, and trade
People buying materials, not services.
- supply
- supplier
- wholesale
- distributor
- material only
- shingles for sale
- buy shingles
- roofing materials
- home depot
- lowes
- menards
Information-only modifiers (when you don't want Tier 4)
If you're keeping your search campaign focused on buyers, these stop research traffic.
- meaning
- definition
- what is
- types of
- vs
- history of
- diagram
- code (be careful — "roof code requirements" can be a buyer; review in context)
Brand and competitor housekeeping
Add competitor names as negatives in non-competitor campaigns so you don't waste your general budget on people looking for a specific other company, and decide deliberately whether you want a separate competitor-conquesting campaign (legal, but expensive and lower-converting). Also negative-out your own brand from generic campaigns and run a cheap dedicated brand campaign instead.
A practical rule: phrase and broad match without a disciplined weekly negatives routine will quietly waste money. If nobody is going to mine the search terms report every week, run exact and phrase match only and skip broad entirely.
Match types and ad-group structure that actually hold up
Google's match types have loosened over the years — phrase and exact both catch more variants than the names suggest, and broad match now leans on the algorithm to find intent. For roofing, where a single wrong click can cost as much as a good one, structure tightly.
A match-type policy for roofers
- Exact match for your proven money terms (emergency roof repair, roof replacement near me, roofing company near me). Maximum control, highest intent, your core budget.
- Phrase match for the broader themes where you want some variant coverage but still want a leash (roof repair, hail damage roof, metal roof installation). Watch the search terms report and prune.
- Broad match only if — and only if — you have conversion tracking that fires on real leads (not page views) and someone mining negatives weekly. Broad match with smart bidding can find pockets of cheap intent, but it is also the fastest way to burn a budget on garbage. Most owner-run accounts should leave it off.
Ad-group structure
One tight theme per ad group, two to three closely related keywords each, ad copy that mirrors the keyword, and a landing page (or page section) that matches both. This is old-school single-keyword-ad-group discipline, and it still wins on quality score, which lowers your cost per click. A workable account skeleton:
Campaign: Residential — Emergency (highest bids, business-hours weighting)
Ad group: Emergency Repair
Ad group: Roof Leak
Ad group: Roof Tarping
Campaign: Residential — Replacement
Ad group: Roof Replacement
Ad group: New Roof Cost
Ad group: Metal Roof
Campaign: Residential — Repair
Ad group: Roof Repair
Ad group: Shingle / Flashing Repair
Campaign: Residential — Storm (seasonal, paused/enabled by weather)
Ad group: Hail Damage
Ad group: Wind / Storm Damage
Ad group: Storm Inspection
Campaign: Local / Near Me (per-city ad groups)
Ad group: [City] Roofing Company
Campaign: Commercial (separate budget, separate page)
Campaign: Brand (cheap defensive)
Keeping campaigns split this way lets you set budgets and bid strategies independently — pour money into Emergency and Replacement, cap Repair, switch Storm on and off with the weather, and stop the Commercial budget from getting eaten by residential clicks.
Worked cost-per-lead and cost-per-win math
Keyword-level cost per click means almost nothing on its own. What matters is cost per lead and, the only number that actually pays your bills, cost per won job. Work it backwards from a job's value, not forwards from a click price.
Say a roof replacement nets you $4,000 in gross profit. If you're willing to spend 15 percent of gross profit to acquire that job, your allowable cost per won job is $600. Now you can reason about every layer above it.
Worked example — replacement campaign.
| Step | Rate | Math | Result |
|---|---|---|---|
| Clicks | — | budget / CPC | 200 clicks |
| Cost per click | $9 | 200 × $9 | $1,800 spent |
| Click-to-lead | 10% | 200 × 0.10 | 20 leads |
| Cost per lead | — | $1,800 / 20 | $90 / lead |
| Lead-to-job close | 25% | 20 × 0.25 | 5 jobs |
| Cost per won job | — | $1,800 / 5 | $360 / job |
| Gross profit | $4,000 | 5 × $4,000 | $20,000 |
| Return | — | $20,000 / $1,800 | ~11x |
At $360 per won job against a $600 allowable, this campaign is healthy with room to bid up and capture more volume. Now watch what one weak link does. Drop the landing page so click-to-lead falls from 10 percent to 5 percent, and everything downstream halves: 10 leads, $180 cost per lead, 2.5 jobs, $720 cost per won job — now above your allowable, and the campaign looks "broken" when the keywords were fine all along. The page was the problem.
That's the core lesson. When a roofing campaign underperforms, the keyword list is usually the third thing to blame, after the landing page and the speed-to-lead on the phone. Fix conversion rate and close rate before you touch bids.
Speed-to-lead reality. A roofing lead that gets a callback in five minutes closes dramatically better than one called back in an hour, and a same-day callback beats next-day by a wide margin. If your ads generate leads at 2 p.m. and someone calls them at 9 a.m. the next morning, you paid Tier 1 prices for Tier 3 results. The phone discipline is part of the keyword ROI whether you like it or not.
Seasonality and storm response
Roofing demand is not flat, and your keyword budget shouldn't be either. Repair and replacement searches rise through spring and summer and soften in deep winter in most of the country. Emergency and leak terms spike during and right after rain events. Hail and wind-damage terms can go from near-zero to a flood in 48 hours after a single storm cell moves through a metro.
The practical move is to keep a storm campaign built and paused. When a verified hail or high-wind event hits your service area, enable it, raise budgets on emergency and storm ad groups, and tighten geo-targeting to the actual affected ZIP codes rather than your whole metro. The contractors who win storm work are the ones already set up to flip the switch in hours, not the ones building a campaign from scratch a week later when the neighborhood is already covered in other companies' yard signs.
A few seasonality tactics that hold up:
- Dayparting. Bid emergency terms hardest during hours you can actually answer the phone. There's no point paying top-of-page for "emergency roof repair" at 11 p.m. if it rolls to voicemail.
- Weather-triggered budget. Pre-write the rules: if a storm hits ZIPs you serve, storm-campaign daily budget goes up, geo narrows to affected areas, ad copy shifts to inspection (not claims — see below).
- Off-season pivot. In slow months, shift budget from replacement toward repair and maintenance terms, where the smaller-ticket buyers still active are cheaper to win.
- Lead time. Replacement is a long sales cycle. Budget you spend in March produces signed jobs in May. Don't kill a replacement campaign in week three because nothing closed yet.
The compliance line on storm, hail, and insurance keywords
Storm and hail keywords are some of the most valuable terms a roofer can buy, and also where ad copy gets contractors into real legal trouble. The keywords themselves are fine to bid on. The messaging on the ad and landing page is what's regulated, and the rules are stricter than most roofers realize.
Here's the line, plainly. As a roofing contractor you absolutely may inspect a roof, document the damage thoroughly with photos, and write an accurate repair estimate aligned to standard estimating practice. You may state facts about your own scope of work to the carrier. What you may not do — in many states this is unlicensed public adjusting and it carries fines — is, for a fee, negotiate or "handle" the homeowner's insurance claim, interpret their policy or coverage, promise a specific payout or that the claim will be approved, promise the deductible is waived or absorbed, advertise a "free roof," or otherwise represent the homeowner against their insurer.
So your storm and hail ads should sell inspection and documentation, not claim outcomes. Some do-not-say examples for your ad copy and landing pages:
- Don't say: "We get your roof approved," "We handle your insurance claim," "No deductible / we cover your deductible," "Free roof," "We'll deal with the adjuster for you," "Guaranteed claim approval."
- Do say: "Free storm damage inspection," "We document hail and wind damage with detailed photos," "We provide a thorough damage report and repair estimate," "Honest inspection — we'll tell you if your roof is fine."
The safe frame for the whole storm workflow: you inspect, you document, you write an accurate estimate, and you hand that documentation to the homeowner. The homeowner files their own claim. The insurer decides coverage. Your value is thoroughness and proof, not promises about what the carrier will pay. Build your storm landing pages around that and your high-value storm keywords stay an asset instead of a liability. (None of this is legal advice — check your own state's licensing and public-adjuster statutes, because they vary.)
Targeting before you ever buy a click: stop spraying the whole metro
Here's the structural problem with relying on Google Ads alone, and it's worth being honest about. Paid search only reaches people the moment they search. You're paying to be in front of the small slice of homeowners who happen to type "roof replacement" this week — and so is every competitor, which is what bids the price up. You have no way, inside Google Ads, to know which roofs in your territory are actually old, storm-hit, and due. You bid blind and hope the right homeowner searches.
This is the gap RoofPredict closes on the front end. It scores every home in your service area by roof-age band — recent, mid-life, due, or overdue — layers each roof's storm exposure on top, and produces a ranked, house-by-house target audience of which roofs are most likely due, each with a plain "why this home" evidence chain. (Honest framing: roof age is estimated as a range, not an exact install date, and the score is an age-plus-storm-exposure heuristic, not a guarantee that a given roof needs work. It's a strong prioritization signal, not proof of damage.)
What that changes about your marketing math: instead of waiting for the due-roof homeowner to search and competing for that click, you can reach the ranked due-roof list directly. The same platform turns that list into a tracked direct-mail campaign — personalized mail proofs you approve, vendor release, and per-piece delivery and return tracking — and gives every targeted home a personalized microsite and PDF report (roof profile, storm history, cost-of-waiting) with a lead-capture form, plus per-home QR codes for the mail piece and the door hanger. For the doors, it builds canvassing routes, assigns them to your crew, and runs a mobile field app with next-stop, outcome forms, and leave-behind QR codes.
The point for a paid-search-focused contractor: Google Ads catches in-market demand; the ranked due-roof audience plus mail, microsites, and canvassing lets you create demand among the homes you already know are overdue, instead of only renting attention from the search box. Run both and you stop being entirely at the mercy of who searches this week.
Connecting clicks to booked jobs and won revenue
The weakest part of nearly every roofing PPC setup is what happens after the click. You can have a perfect keyword list and still have no idea which keyword produced a signed contract, which means you're optimizing on cost per click — a vanity number — instead of cost per won job.
Close that loop in three layers:
- Track the right conversion. A form fill or a phone call is a lead, not a job. Track both, but weight your bidding toward the action that correlates with revenue. Use call tracking so phone leads (the majority in roofing) are attributed to the keyword that drove them.
- Hold the source immutably. When a lead comes in, the campaign and keyword that produced it should be stamped on that lead and never overwritten as it moves through your pipeline. Otherwise the first salesperson to touch the record "resources" it to themselves or to a referral, and your paid-search ROI evaporates on paper.
- Push outcomes back. Whether that lead became a booked appointment, an inspection, a won job, and at what value, has to flow back to the ad platform so smart bidding optimizes toward revenue, not clicks.
RoofPredict's lead pipeline is built for exactly this handoff. Every lead — from a microsite form, a QR scan, a phone call, or a paid-search landing page — enters a stage pipeline (new → contacting → appointment → inspected → won/lost) with an immutable first-touch source, so the keyword or campaign that originated a lead stays attached through to the won job. It syncs two-way with thirteen roofing CRMs — including HubSpot, ServiceTitan, JobNimbus, AccuLynx, Jobber, Housecall Pro, Salesforce, Pipedrive, Leap, Roofr, SalesRabbit, and CompanyCam, plus Zapier and CSV — so the lead lives in the system your crew already runs on without re-keying.
Then the results funnel makes the keyword decision for you: delivered → views → form → calls → leads → wins, with cost per lead and cost per win, and actual versus estimate versus an industry benchmark, plus A/B variants. Instead of guessing whether "hail damage roof repair" or "roof replacement near me" earns its budget, you can see which source actually produced won jobs and what each win cost — and shift spend toward the terms and channels that close, not the ones that merely get clicked. That's the difference between a measurement-only analytics tool, a CRM-only system, and a platform that runs targeting, outreach, lead capture, and won-revenue attribution in one place.
A 30-day rollout plan
If you're starting from scratch or rebuilding a messy account, here's a sequence that gets you to clean, measurable spend without lighting money on fire in week one.
Week 1 — Foundation.
- Set up conversion tracking for form fills AND calls. Do not run a dollar of traffic without it.
- Build the negative keyword list above as a shared list applied to every campaign.
- Build the account skeleton (Emergency, Replacement, Repair, Local, Storm-paused, Commercial-if-applicable, Brand).
- Write one tight ad group's worth of keywords per theme, exact and phrase match only.
Week 2 — Launch lean.
- Turn on Emergency, Replacement, Repair, and Local with modest budgets.
- Point each ad group at a matching landing page section; no generic homepage dumps.
- Confirm calls ring a human during business hours and leads get a callback in minutes, not hours.
Week 3 — Mine and prune.
- Read the search terms report. Add every junk term (jobs, DIY, free roof, supply) to negatives.
- Find the high-intent variants you missed and add them as new exact-match keywords.
- Pause keywords with spend and zero leads; raise bids on keywords producing cheap leads.
Week 4 — Tie to revenue.
- Wire leads into your pipeline/CRM with immutable source attribution.
- Look at cost per lead by ad group, then cost per won job once enough jobs close.
- Reallocate budget toward the ad groups producing won jobs, rather than the ones merely producing clicks.
- Build and pause your Storm campaign so it's ready to flip the next time hail hits.
Then repeat weeks 3 and 4 forever. Paid search is not set-and-forget; the negatives mining and the budget reallocation toward what actually closes is the ongoing work that separates a roofing account that returns 8x from one that quietly returns 2x.
Ad copy and extensions that turn a click into a call
A keyword only buys the impression. The ad copy decides whether a high-intent searcher clicks you or the competitor stacked right above or below you, and on roofing terms the auction is crowded enough that a weak ad wastes good keywords. A few rules that hold up across thousands of roofing impressions.
Mirror the search. If someone typed "emergency roof repair near me," the headline should say "Emergency Roof Repair" and ideally the city. Match between query, headline, and landing page lifts quality score, which lowers your cost per click and raises your ad rank at the same time. Generic headlines like "Quality Roofing Services" lose to specific ones every single time.
Lead with the thing that matters to that intent tier. For emergency terms, lead with speed and availability ("Same-Day Roof Repair," "We Answer 24/7"). For replacement, lead with proof and reassurance (warranty, financing, years in business, license number). For repair, lead with a fast free estimate. The promise in the headline should match what the searcher's problem actually is.
Use the extensions, all of them. They're free real estate and they push down competitors:
- Call extension / call asset on every campaign, with a tracked number, weighted to hours you can answer.
- Location extension tied to your Business Profile so the "near me" intent sees you're actually local.
- Sitelinks to the pages that matter — Financing, Reviews, Storm Damage Inspection, Service Area, Free Estimate.
- Callout assets for trust signals: Licensed & Insured, Free Estimates, Local Crews, Warranty-Backed (only claims you can back up).
- Structured snippets to list services or brands you install.
- Lead form / message assets if you can respond fast; otherwise leave them off, because a slow response to a form is worse than no form.
One discipline that separates good roofing accounts: the phone number in the ad rings a human during the hours you're paying for that ad. If you're bidding top-of-page on "emergency roof repair" and it goes to voicemail, you bought the click and threw away the lead. Match your dayparting to your answering capacity.
Landing pages: where most roofing keyword budgets actually die
The worked math earlier showed it numerically — halve the landing page conversion rate and you double the cost per won job — so it's worth being concrete about what a converting roofing landing page looks like. The single most common waste in roofing PPC is sending every ad group to the homepage. The homepage is built for everyone; a landing page is built for one searcher with one problem.
Match the page to the ad group:
- One offer, above the fold. The headline restates the searcher's problem, a short subhead states your fix, and a phone number plus a short form sit in the first screen. No carousel, no "welcome to our website."
- Speed. A roofing landing page that takes five seconds to load on a phone loses leads before they read a word. Most roofing search traffic is mobile. Compress the hero image, kill the heavy sliders.
- Local proof. Reviews, the city name, a map, photos of jobs in that area. "Near me" searchers want to see you're actually nearby and real.
- Trust block. License number, insurance, warranty, manufacturer certifications, years in business. Big-ticket roof buyers are nervous; reduce the fear.
- One short form plus a visible phone number. Roofing buyers call more than they fill forms, so the phone has to be obvious and tappable. Keep the form to name, phone, address, and problem — every extra field costs you completions.
- A specific call to action. "Get a Free Roof Inspection" or "Get My Repair Estimate," not "Submit." Tell them exactly what happens next.
For storm pages specifically, the call to action is "Free Storm Damage Inspection," and the page sells thorough documentation and an honest report — never claim approval, deductible waivers, or a free roof. The compliance line from earlier lives on the landing page just as much as the ad.
A practical test: pull up your own roofing landing page on your phone over cellular, time how long it takes to load, and see whether you could tap the phone number within three seconds of it appearing. If you can't, your keywords aren't the problem.
Local Services Ads, Performance Max, and where keywords still rule
Google has pushed two products at contractors that change the keyword conversation, and it's worth knowing where each fits.
Local Services Ads (Google Guaranteed) sit above the regular search ads and run on a pay-per-lead basis rather than pay-per-click, matched by service category and geography rather than by keyword you choose. For many roofers they're worth running alongside search because you pay for a lead, not a click, and the Google Guaranteed badge builds trust. The catch: you give up the keyword-level control this whole piece is about, you're at the mercy of Google's category matching, and you have to dispute junk leads to get credited. Run them as a complement, not a replacement — and still dispute every irrelevant lead, because that's how you keep the cost per real lead honest.
Performance Max spreads your budget across Search, Display, YouTube, Gmail, and Maps with the algorithm deciding placement, and it deliberately hides much of the keyword and search-term detail. It can work for roofers with strong, clean conversion data feeding it — but only if you feed it the right signal. Two cautions: first, give it real lead conversions (form fills and qualified calls), never page views, or it optimizes toward cheap worthless traffic; second, add account-level and campaign negative keywords and brand exclusions, or it will spend on your own brand and on junk and take credit for it. For most owner-operated accounts, a tightly structured search campaign with the keyword and negative discipline described here gives more control and clearer ROI than handing the budget to Performance Max blind.
The throughline: even as Google automates more of the buy, your keyword and negative list, your conversion signal, and your landing page are the inputs that decide whether automation works for you or against you. Garbage in, garbage out — the automation just spends the garbage faster.
Reading the search terms report like a pro
The search terms report — what people actually typed to trigger your ads — is the most valuable screen in the account, and most roofers never open it. Make it a weekly fifteen-minute ritual and it pays for itself many times over. Three passes each week:
- Negative pass. Scan for anything irrelevant — job seekers, DIY, supply, free-roof, adjacent trades, other cities you don't serve — and add each as a negative at the right level (campaign or shared list). Every junk term you kill is budget redirected to real buyers.
- Expansion pass. Look for high-intent queries that converted or look strong but aren't yet keywords of their own. Promote them to their own exact-match keyword in the right ad group so you control the bid and the ad. This is how you find the cheap, specific terms competitors miss.
- Match-type pass. Watch which phrase and broad terms are matching to junk. If a broad keyword keeps pulling garbage, tighten it to phrase or exact, or pause it.
Pair that with the keyword-level view: pause keywords that have meaningful spend and zero leads, raise bids on keywords producing cheap leads, and lower bids on keywords producing expensive ones. Do not make these calls on cost per click alone — wait until you have lead data, ideally won-job data, before you cut something, because a keyword with a scary click price can still be your cheapest source of signed roofs.
What pros get wrong, in one list
- Bidding research keywords ("how long does a roof last") at buyer prices. Send those to content, not search ads.
- No negative list, so the budget feeds job-seekers and DIYers. The single most expensive omission.
- Generic homepage landing page for every ad group. Kills conversion rate, which kills cost per won job.
- Optimizing on cost per click instead of cost per won job. The click is the cheapest, least important number.
- Slow callbacks turning Tier 1 leads into cold leads. Speed-to-lead is part of keyword ROI.
- Promising claim outcomes, deductible waivers, or a "free roof" in storm ad copy. Legal exposure, not cleverness.
- Mixing commercial and residential in one campaign. Different buyer, different everything.
- Killing a replacement campaign in week three because nothing closed yet. The sales cycle is weeks; be patient.
- Running broad match with no one mining negatives. Use exact and phrase if you can't commit to weekly cleanup.
- No source attribution, so you can't tell which keyword paid for which signed job. You're optimizing blind.
The bottom line
A profitable roofing Google Ads account is three disciplines stacked: a keyword list sorted by real buyer intent, a negative list that ruthlessly cuts everyone who isn't going to hire you, and a measured path from click to signed contract so you spend toward won jobs instead of clicks. The list in here gets you the first two. The third — knowing which keyword actually produced revenue — is where most contractors are flying blind, and it's where tying your paid-search leads into a pipeline with immutable source attribution and a real cost-per-win funnel changes how you spend.
And if you want to stop being entirely dependent on who happens to search this week, pair the ad account with a ranked due-roof audience: score the homes in your territory by roof age and storm exposure, reach the overdue ones directly with tracked mail, microsites, and canvassing routes, and run the whole thing — targeting, outreach, lead capture, CRM sync, and won-revenue attribution — through RoofPredict, so Google Ads becomes one measured channel in a system instead of the only thing standing between you and the next job. See how it scores your service area at roofpredict.com.
FAQ
What are the best Google Ads keywords for a roofing company?
The highest-return roofing keywords are high-intent and local: 'emergency roof repair near me,' 'roof replacement near me,' 'roof leak repair,' 'roofing company near me,' and 'roof repair near me.' Sort everything by buyer intent — emergency/now terms convert fastest and tolerate the highest bids, replacement terms are the biggest ticket, repair terms have the best cost-per-lead, and research terms like 'how long does a roof last' should go to content rather than paid search.
What negative keywords should roofing companies add to Google Ads?
Start with job-seeker terms (jobs, hiring, careers, salary, apprentice, roofing school), DIY terms (how to, yourself, tutorial, flex seal, repair kit), price-shopper terms (cheap, free roof, grant, low income), supply terms (wholesale, supplier, shingles for sale, home depot), and adjacent trades you don't offer (siding, HVAC, solar, gutter cleaning). A clean negative list commonly cuts wasted spend by a quarter to a third on a broad-heavy account. Mine the search terms report weekly and keep adding.
How much should roofers spend per click on Google Ads?
Work backward from a job's value, not forward from a click price. If a replacement nets $4,000 gross profit and you'll spend 15 percent to acquire it, your allowable cost per won job is $600. From there, your close rate and lead-to-job rate tell you the cost per lead and click you can afford. A $9 click is cheap if it produces a $360 cost per won job and expensive if your landing page converts poorly. Optimize on cost per won job, never cost per click.
Should roofing companies bid on storm and hail damage keywords?
Yes — they're some of the most valuable terms a roofer can buy, especially right after a verified hail or wind event. The keywords are fine; the ad copy is what's regulated. Sell inspection and documentation, not claim outcomes. You may inspect, document damage with photos, and write an accurate repair estimate. You may not promise claim approval, waive the deductible, advertise a 'free roof,' or handle the homeowner's claim for a fee, which can be unlicensed public adjusting in many states.
What match types should roofing companies use?
Use exact match for proven money terms where you want maximum control, phrase match for broader themes where you want some variant coverage but still a leash, and broad match only if you have lead-level conversion tracking and someone mining negatives weekly. Most owner-run accounts should leave broad match off, because it's the fastest way to burn budget on irrelevant clicks without disciplined daily cleanup.
Why are my roofing Google Ads getting clicks but no leads?
Almost always the landing page or the phone, not the keywords. If click-to-lead conversion drops from 10 percent to 5 percent, every downstream number halves and the cost per won job can double even when the keywords are perfect. Check that each ad group points to a matching landing page (not a generic homepage), that the page loads fast and shows a phone number, and that leads get a callback in minutes. Fix conversion rate and speed-to-lead before touching bids.
Should I separate commercial and residential roofing campaigns?
Yes, always. Commercial and residential are different buyers with different budgets, sales cycles, landing pages, and ad copy. Mixing them in one campaign lets residential clicks eat the commercial budget and makes your data useless. Give commercial its own campaign, its own keywords (commercial roof repair, TPO installation, EPDM, flat roof replacement), and its own dedicated page.
How do I know which keyword produced an actual roofing job?
You need conversion tracking on both forms and calls, call tracking to attribute phone leads to the keyword that drove them, and an immutable first-touch source stamped on each lead so it survives the trip through your pipeline. Then push job outcomes and values back to your reporting. RoofPredict's lead pipeline keeps the originating source attached from first touch to won job and syncs two-way with CRMs like ServiceTitan, JobNimbus, and AccuLynx, so its results funnel shows cost per lead and cost per won job by source instead of just cost per click.
Can Google Ads alone fill a roofing company's pipeline?
It fills part of it. Paid search only reaches homeowners the moment they search, which is a small slice of your market, and you bid against every competitor for that same click. It can't tell you which roofs in your area are actually old or storm-hit. Pairing ads with a ranked due-roof audience — scoring homes by roof-age range and storm exposure, then reaching the overdue ones with tracked mail, microsites, and canvassing — lets you create demand among known-due homes instead of only renting attention from people who happen to search this week.
How quickly should I respond to a Google Ads roofing lead?
As fast as possible — minutes, not hours. A roofing lead called back within about five minutes closes far better than one called back an hour later, and same-day beats next-day by a wide margin. If your ads generate leads in the afternoon and someone calls them the next morning, you paid premium prices for cold leads. Speed-to-lead is a real part of your keyword ROI, so set up routing and dayparting so leads come in only when someone can answer.
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.
Sources
- Asphalt Roofing Manufacturers Association — Roofing Resources — asphaltroofing.org
- National Roofing Contractors Association — nrca.net
- Insurance Institute for Business & Home Safety — Hail — ibhs.org
- NOAA National Severe Storms Laboratory — Severe Weather 101: Hail — nssl.noaa.gov
- NOAA Storm Prediction Center — spc.noaa.gov
- National Weather Service — weather.gov
- OSHA — Fall Protection in Construction — osha.gov
- Federal Trade Commission — Advertising and Marketing Basics — ftc.gov
- Texas Department of Insurance — Public Insurance Adjusters — tdi.texas.gov
- International Code Council — International Residential Code — iccsafe.org
- U.S. Bureau of Labor Statistics — Roofers Occupational Outlook — bls.gov
- U.S. Census Bureau — American Housing Survey — census.gov
- U.S. Small Business Administration — Marketing and Sales — sba.gov
- RoofPredict — roofpredict.com
Related Articles
Google Ads Not Converting Roofing Leads? A Contractor's Fix-It Playbook
Your roofing Google Ads are getting clicks but no signed jobs. Here's how to find exactly where the money leaks out and close the gaps, from match types to call answer rates.
Retargeting Ads for Roofing Companies: A Practitioner's Operating Manual
Retargeting works for roofers as a closer, not a lead source. The audiences, budget math, compliant storm creative, and measurement that turn warm visitors into booked inspections.
Roofr Review for Roofing Contractors: Is It Worth It?
A practitioner's take on whether Roofr is worth it for your shop — what it does well, where it leaves gaps, and how to match the tool to your actual bottleneck.