Scalex Digital

google ads for roofers

google-ads-for-roofers

Google Ads for Roofers: The Complete Agency Playbook

Most guides on Google Ads for roofing companies are written by software platforms trying to sell you a subscription, or by generalist marketing agencies who’ve run maybe two roofing accounts in their career. You can tell because they all say the same things — “use relevant keywords,” “optimize your landing page,” “track your conversions.” Thanks, incredibly helpful.

This guide is written from the other side of that experience. We manage Google Ads accounts for roofing companies, which means we’ve seen what happens when campaigns are built wrong, watched budgets get burned on traffic that was never going to convert, and figured out — through a lot of expensive trial and error — what actually moves the needle for roofers specifically.

We’re going to cover the full picture: campaign structure, keywords, seasonal strategy, the LSA question, Performance Max, landing pages, tracking, and budget. If you’re a roofer trying to understand what you’re paying for, or an agency trying to do right by your roofing clients, this is the guide that’s going to be actually useful.

Why Most Roofing Google Ads Campaigns Fail Within 90 Days

Before we get into how to build campaigns that work, it’s worth understanding why most roofing campaigns don’t. When we audit accounts — whether we inherited them from another agency or from a roofer who was managing their own spend — we see the same four mistakes over and over again.

Sending all traffic to the homepage.

This one is so common it’s almost the default. Someone sets up a Google Ads campaign, creates a few ads, and points every click at their website’s homepage. The homepage has a phone number, a contact form, some photos of past jobs — it’s not a bad page. But it’s not a conversion page either. It’s built for browsing. Someone who just searched “emergency roof leak repair” and clicked your ad is not looking to browse. They want to know immediately that you fix roof leaks, that you’re available, and how to reach you. A homepage makes them work for that information. A dedicated landing page hands it to them. The difference in conversion rate between the two is not small — we’re talking about the gap between a campaign that pays for itself and one that doesn’t.

No call tracking.

Roofing is a phone-call business. The vast majority of roofing leads come in as phone calls, not form submissions. If you’re not tracking calls — not just counting them, but tying specific calls back to specific keywords and campaigns — you’re essentially flying blind. You don’t know which keywords are generating real leads and which are just burning money. We’ve audited accounts where thousands of dollars a month were being spent and the owner genuinely had no idea whether Google Ads was working because nothing was being tracked properly. Setting up call tracking is not complicated. Not having it set up is indefensible.

Bidding on the wrong keywords.

This takes two forms. Some accounts go too broad — bidding on match types that pull in searches like “roofing materials near me” or “how to fix a roof yourself.” These searches cost money and generate exactly zero leads. Other accounts go too narrow and miss huge volumes of legitimate search intent. Getting keyword strategy right for roofing is specific enough that it warrants its own section, which we’ll get to. But the short version is: match type discipline and a well-maintained negative keyword list are what separate a campaign that’s efficient from one that’s hemorrhaging spend.

Running emergency and scheduled work in the same campaign.

This is the structural mistake that most guides never even mention, and it’s the one that causes the most persistent underperformance. Emergency roofing leads and scheduled replacement leads are completely different animals — different search intent, different conversion rates, different bidding strategies, different landing pages. Mixing them in one campaign means you’re always making compromises that serve neither type of lead well. We’ll cover this in depth because it’s probably the most important structural decision you’ll make when setting up a roofing account.

How Google Ads Actually Works for Roofing (The Economics)

Google Ads runs on an auction. Every time someone searches for something, Google runs a real-time auction to determine which ads show, in which order, at what cost. Your position in that auction isn’t determined purely by how much you’re willing to bid — it’s determined by Ad Rank, which is a combination of your bid, your Quality Score (which factors in expected click-through rate, ad relevance, and landing page experience), and a few other signals.

What this means practically for roofers is that throwing money at a poorly structured campaign doesn’t fix it. A competitor with a better landing page and more relevant ads can outrank you while spending less per click. This is worth understanding because it reframes the question from “how much should I spend?” to “how do I make every dollar I spend work harder?”

On cost: in most markets, roofing CPLs (cost per lead) fall in the $50–$100 range, but that number moves around a lot depending on where you are and what time of year it is. A mid-size market in a non-storm-prone region during the winter might see CPLs on the lower end of that range. The same market right after a hailstorm, with out-of-state storm chasers flooding in and bidding aggressively, can see CPLs spike well above $100. Market competitiveness and seasonality are probably the two biggest variables in roofing CPL, and any agency that quotes you a flat cost per lead number without acknowledging those variables is oversimplifying.

The reason roofing can absorb higher CPLs than most home services is the ticket size. An average roof replacement runs $12,000–$18,000+. Even at a $150 CPL, if you’re closing one in five leads, your cost to acquire a job is $750 against a $15,000 ticket. That’s a return that most businesses would be very happy with. The math works — but only if the leads are actually qualified and tracked properly back to revenue. Which brings us back to tracking, but we’ll get to that.

The Campaign Structure No One Else Uses: Emergency vs. Scheduled Split

This is the section we’d tell you to read even if you skipped everything else.

The single most important structural decision in a roofing Google Ads account is separating your emergency campaigns from your scheduled campaigns. Not into different ad groups within the same campaign — into completely separate campaigns with separate budgets, separate bids, separate landing pages, and separate conversion goals.

Here’s why.

Emergency roofing work — storm damage, active roof leaks, sudden structural damage — attracts a person who is in a completely different mental state than someone who’s been thinking about replacing their aging roof for a few months. The emergency searcher needs someone now. They’re not comparison shopping. They’re not going to fill out a multi-step form and wait for a callback. They’re going to call the first company that looks credible and answers the phone. Conversion rates on emergency campaigns, when they’re structured correctly, run 20–30%. Compare that to scheduled replacement campaigns, which typically convert at 8–12%. That’s not a small gap — it’s a fundamentally different business.

Because these two lead types are so different, everything about how you approach them has to be different:

Bidding. Emergency searches warrant more aggressive bidding because the conversion rate is higher and the lead value is immediate. For scheduled work, you can afford to be more patient and measured — the sales cycle is longer, and bidding too aggressively on lower-intent searches inflates your CPL without improving your close rate.

Landing pages. An emergency landing page should be stripped down to the essentials: a headline that matches the search (“Roof Leak Repair — [City] — Available Now”), a phone number that’s impossible to miss, a brief trust statement, and maybe a short contact form as a secondary option. Nothing that creates friction, nothing that requires scrolling to find how to contact you. A scheduled replacement landing page can and should include more — before/after photos, financing information, warranty details, reviews — because the person is evaluating you, not just trying to reach you fast.

Keywords. Emergency keywords (“roof leak repair,” “emergency roofer,” “storm damage roof”) and replacement keywords (“roof replacement cost,” “new roof installation,” “metal roofing company”) have completely different competitive landscapes and cost structures. Putting them in the same campaign means your budget decisions affect both simultaneously, which always results in one or the other getting underserved.

Budget allocation. How you split budget between the two depends on your market and the season. In a storm-active market during peak season, emergency campaigns should be the priority. In a stable market during slower months, the balance shifts toward scheduled work. The campaigns being separate is what makes that flexibility possible.

Running both in one campaign is like having one employee answer all your calls — sales calls, emergency service calls, supplier calls, complaint calls — with the same script and the same energy. Structurally, it just doesn’t work.

Keyword Strategy for Roofing Google Ads: What to Bid On and What to Avoid

Keyword strategy in roofing is where a lot of campaigns quietly fall apart. The account looks fine on the surface — ads are running, impressions are coming in — but the search terms report tells a different story.

Match types matter more than most people admit. In the early stages of a roofing campaign, we run on exact and phrase match only. Broad match in a roofing account, especially before you have a robust negative keyword list built out, will spend your budget on searches that have essentially nothing to do with getting a roof job. Broad match learns over time, but it needs conversion data to learn from, and it generates a lot of junk traffic in the meantime. Start tight, then open up once you have data.

Build your keyword lists around intent, not just topics. Emergency intent keywords look like: “emergency roof repair,” “roof leak repair near me,” “storm damage roof repair,” “roof leaking right now,” “hail damage roof.” Scheduled/replacement intent looks like: “roof replacement cost,” “new roof installation,” “roofing company near me,” “metal roofing contractors,” “shingle roof replacement.” Insurance-related keywords — “roof insurance claim,” “hail damage roof insurance,” “file roof claim” — are a segment most accounts ignore entirely, but in storm markets they represent a significant portion of high-value search volume.

Negative keywords are just as important as the keywords you’re targeting. The negative keyword list in a roofing account should be large and actively maintained. Some obvious additions: competitor company names (you don’t want to pay for clicks from people searching for a specific competitor), DIY terms (“how to fix,” “roof repair DIY,” “roofing materials”), supply-related searches (“roofing shingles price,” “underlayment”), and job-related searches (“roofing jobs,” “roofing careers”). We also add generic informational terms that attract researchers, not buyers.

One tactic worth calling out specifically: adding other local roofing companies as negative keywords. If someone is searching for “[Competitor Name] roofing,” they’re looking for that specific company, not a Google Ad. Paying for those clicks is a waste. Some accounts go further and add out-of-state storm chaser company names as negatives once they identify who’s entering their market.

Geographic keywords deserve their own structure. “Roofing company [city name]” and “roofing near me” behave differently and often have different cost profiles. Building out city-specific ad groups — especially if you serve multiple markets — lets you control bids and messaging at the city level rather than applying a one-size-fits-all approach across your service area.

LSA vs. Google Ads for Roofers: How We Decide Which to Run First (and When to Stack Both)

This is the question we get asked more than almost any other, and the honest answer is: it depends on where the client is in their business.

First, some context on what changed. In July 2024, Google moved Local Services Ads to automated lead credits, removing the ability to manually dispute leads for “job type not serviced” or “geographic area not serviced.” Credits now happen automatically and can take up to 30 days to process. This matters because it removed one of the key management levers that made LSAs feel controllable. You’re now more at the mercy of Google’s automation than you used to be.

That said, LSAs still have real advantages for roofing companies. The “Google Guaranteed” badge carries genuine trust weight with homeowners. LSAs appear above everything else in the search results — above regular Google Ads, above organic results. And for a newer roofing company that doesn’t have a big ad budget to play with, LSAs can generate leads at a lower initial investment than a full search campaign.

When we recommend starting with LSAs: A brand-new roofing company with limited budget that needs the Google Guaranteed badge for credibility, and doesn’t yet have enough history to optimize a search campaign. Also, any client in a market where LSA competition is genuinely thin — there are still markets where LSAs for roofing aren’t saturated, and in those cases the CPL can be very low.

When we recommend starting with Google Ads: An established roofing company that needs volume and control. Google Ads gives you full keyword control, full geographic control, the ability to adjust bids by time of day and device, and complete transparency into what’s driving results. For a roofer who’s serious about scaling lead generation, search campaigns give you levers that LSAs simply don’t.

When we run both simultaneously: The SERP domination play. When a roofing company has both LSAs and Google Ads running well, they can show up at the very top of the page twice — LSA at the top, then search ads below. For high-intent searches like “emergency roof repair [city],” owning multiple positions on the page increases the probability of getting the click dramatically. The key is making sure the two channels aren’t competing with each other in a way that inflates cost — which means managing LSA bids and search bids with awareness of both channels, and attributing leads properly so you’re not double-counting.

The decision framework isn’t complicated: budget, market maturity, and how much control the client needs. We’ve had clients where LSAs alone were generating excellent leads at low cost and adding search campaigns would have been overkill. We’ve had others where LSAs were generating poor-quality leads and search campaigns needed to carry the whole load. Know which situation you’re in before you stack.

Seasonal Scaling and Storm Market Strategy

Roofing is one of the most seasonal businesses in home services, and Google Ads campaigns need to reflect that — not just in budget, but in structure, targeting, and responsiveness.

The mistake most accounts make is treating seasonality as a budget-only variable. They spend more in summer, less in winter, and call it a seasonal strategy. That’s not a strategy, that’s just adjusting spend. A real seasonal approach for roofing involves changes to campaign structure, geographic targeting, keyword priorities, and bid adjustments — and it requires being proactive, not reactive.

The storm event dynamic. In storm-prone markets, a single significant weather event — a hailstorm, a derecho, a late-season hurricane — changes the competitive landscape within 72 hours. Out-of-state storm chasers with large ad budgets descend on affected areas and bid aggressively on local keywords. CPCs spike. Impression share drops. If you’re not prepared for this, you lose ground to competitors who have no long-term stake in your market.

The preparation looks like this: before storm season, make sure your emergency campaign is fully built and tested. Not paused and waiting — actively running at a baseline spend so it has recent performance data. This matters because campaign performance history affects Quality Score, and a campaign that’s been sitting dormant and suddenly gets ramped up will underperform one that’s been running steadily.

Geographic bid adjustments for storm events. When a storm hits a specific area, we increase geographic bid adjustments for the affected zip codes. If we know from weather data or from client reports that a certain part of the service area took significant hail damage, we’re raising bids in those specific zip codes to maximize impression share while competition is high and demand is highest. This is a more surgical approach than just increasing the overall budget, because it concentrates spend where the actual opportunity is concentrated.

Pre-season setup checklist:

  • Storm-damage ad group active and tested well before storm season
  • Dedicated emergency landing page live and converting
  • Call tracking confirmed working
  • Geographic bid adjustment rules reviewed and ready to apply
  • Budget approval in place for rapid scaling if a major event hits

Off-season strategy. The off-season isn’t a time to go dark — it’s a time to shift the balance toward scheduled/replacement work, reduce emergency campaign spend to a maintenance level, lean into retargeting for people who visited your site but didn’t convert, and use the lower-competition environment to test new ad copy and landing page variations cheaply.

Landing Pages That Convert Roofing Clicks Into Booked Jobs

The landing page is where Google Ads campaigns live or die, and it’s the piece of the puzzle that gets the least attention in most roofing accounts. People spend time on keywords and bids and ad copy, and then send all that traffic to a page that was never designed to convert paid traffic.

Emergency landing pages. The design principle is simplicity and speed. When someone has a roof leak in the middle of the night and clicks your ad, they need to immediately see: yes, this company does emergency roof repairs, yes, they’re available, here’s how to call them. The phone number needs to be the most prominent thing on the page — clickable on mobile, above the fold, not buried in a header. A short headline that matches the search intent (“Emergency Roof Repair in [City] — Available 24/7”). A few trust elements — how long you’ve been in business, a review or two, a license number. A short form as a secondary contact option. That’s it. No photo galleries, no financing information, no detailed service explanations. Those are great for other pages. They’re friction on an emergency page.

Scheduled replacement landing pages. Here you have more room to sell. The person searching “roof replacement cost in [city]” is in evaluation mode. They’re comparing options. Give them reasons to choose you: before/after project photos, specific warranty information, financing options if you offer them, detailed reviews with specifics about the job experience, a clear explanation of your process. A multi-step form that qualifies the lead (property type, scope of work, timeline) works well here because it filters out poor leads and signals to good ones that you’re a professional operation.

City-specific pages. If you serve multiple cities or regions, building dedicated landing pages for each market — not just changing a city name in the headline but creating genuinely localized content with local reviews, local project photos, local license information — significantly improves both conversion rate and Quality Score. It’s more work upfront, but the ongoing benefit to campaign performance is real.

Page speed. Roofing companies love high-resolution photos of their work, which is completely understandable. But a landing page that takes four seconds to load on mobile is losing leads before anyone even reads the headline. Compress images, minimize scripts, and test load speed on mobile specifically — that’s where most roofing traffic comes from.

Call tracking setup. Every campaign should have its own tracking phone number. Not one number for all Google Ads — one per campaign, ideally one per ad group if your volume justifies it. This is the only way to know which keywords and campaigns are actually generating calls, versus which ones are generating clicks that go nowhere. Without this, you’re making budget decisions based on incomplete information.

Performance Max for Roofing: Our Honest Take After Testing It

Google pushes Performance Max hard. The pitch is compelling — one campaign that uses machine learning to show your ads across all of Google’s networks (search, display, YouTube, Gmail, Maps) and optimizes automatically for conversions. For some industries and some use cases, it delivers on that promise.

For roofing, our honest take is more complicated.

Our stance, based on running PMax campaigns for roofing accounts: don’t run it until you have at least 60–90 days of active search campaign data with solid conversion tracking in place.

Here’s the logic. Performance Max learns from your conversion history. It looks at what types of users have converted in your account, what search queries led to those conversions, what times of day and devices performed best — and it uses all of that to optimize where and when to show your ads. When you launch a PMax campaign without that historical data, the algorithm is essentially guessing. And when it’s guessing with a roofing account’s budget in a competitive market, it tends to default to cheaper inventory — display ads, YouTube bumper ads — that look like activity but don’t generate roofing leads.

The emergency campaign problem is particularly acute with PMax. Emergency roofing search queries are high-intent, high-value, and time-sensitive. The person who searches “roof leaking right now” and clicks a search ad is worth infinitely more to a roofer than someone who sees a display ad on a cooking website. PMax doesn’t always prioritize the high-intent search clicks the way a well-structured search campaign does, especially early in its learning phase.

What PMax does reasonably well for roofing, once it has enough data: remarketing to past website visitors across Google’s networks, building brand awareness in your service areas during off-peak periods, and finding incremental conversions from users who wouldn’t have been captured by search alone.

The asset requirements for a roofing PMax campaign are also significant — you need quality images, video assets (at minimum a short walkthrough or testimonial video), and strong written assets in multiple variations. Launching without quality creative is another common way PMax underperforms.

Our recommendation: build your search campaigns first, run them for 60–90 days with proper conversion tracking, then consider adding a PMax campaign once the algorithm has something meaningful to learn from.

Tracking and Attribution: Knowing Exactly What Your Google Ads Are Generating

There’s a quiet epidemic of roofing Google Ads accounts where nobody really knows if the campaigns are working. The spend is going out, some leads are coming in, the phone is ringing — but the connection between specific ad spend and specific revenue is fuzzy at best. This is a problem, because without that connection you can’t make good decisions about where to put your money.

Call tracking is non-negotiable.

Set up dedicated tracking numbers through a service like CallRail or similar, assign different numbers to different campaigns, and make sure calls over a meaningful duration (we use 60 seconds as the threshold for a primary conversion) are being recorded as conversions in Google Ads. Calls under 60 seconds are often wrong numbers, voicemails, or existing customers — counting them as lead conversions inflates your numbers and distorts optimization.

The attribution problem Google doesn’t advertise.

Google’s default conversion tracking will count any call to your tracking number as a conversion, including wrong numbers, calls from people who saw your ad but were already your customers, and voicemails that never get returned. This means your conversion count in Google Ads is virtually always higher than your actual lead count. The way to get closer to reality is to listen to call recordings (or review call transcripts if you’re using a service that provides them), manually tag call quality, and use that data to adjust what you’re actually optimizing for. It takes more work than just looking at the dashboard, but it’s the only way to know what’s really happening.

Connecting leads to revenue.

The gold standard is being able to look at a keyword and know exactly how much revenue it’s generated — not just how many calls. This is harder to set up than basic call tracking, but it’s worth working toward. Some CRM tools designed for contractors integrate with Google Ads reporting. At a minimum, get in the habit of asking new customers how they found you, recording that in your CRM, and reconciling it against your Google Ads data monthly.

Conversion action setup.

In your Google Ads account, your primary conversion action should be phone calls over 60 seconds. Secondary conversions can include form submissions and shorter calls. Make sure you’re bidding toward primary conversions, not total conversions including all the noise — otherwise your bidding algorithm is optimizing for things that don’t actually turn into jobs.

Monthly audit checklist.

Once a month, review: search terms report (add new negatives, identify new keyword opportunities), impression share on core emergency terms (should be above 60%), call recording sample (verify lead quality), landing page conversion rate (should be trending stable or up), and CPL by campaign (emergency and scheduled tracked separately).

How Much Should Roofers Spend on Google Ads? A Budget Guide by Market Size

The question every roofing client eventually asks, and the answer that most agencies give — “it depends” — is technically accurate but practically useless. Here’s a more grounded breakdown.

Small markets (metro population under 200k, low competition).

A starting budget of $1,500–$2,500/month is workable if competition is genuinely low. At this spend level in a small market, you can realistically generate 15–30 leads per month at a CPL in the $50–$100 range. This is enough to evaluate whether the channel is working and to build campaign performance history.

Mid-size markets (200k–800k metro, moderate competition).

This is where most roofing Google Ads accounts live. Budget range of $3,000–$6,000/month is typical. At this spend, you’re competing meaningfully for impression share on core terms and can sustain lead volume that supports a growth trajectory. Expect CPLs in the $75–$125 range depending on season.

Large or highly competitive markets (major metros, active storm markets).

Budget requirements go up significantly. In a major metro or a storm-chaser-heavy market, $6,000–$10,000+/month may be needed just to hold meaningful impression share. CPLs can run $100–$175+ during peak competitive periods. The economics still work given roofing ticket sizes, but the budget floor is higher.

The minimum viable budget principle.

There’s a spend level below which Google Ads for roofing simply doesn’t work — not because the channel is bad, but because the algorithm needs data to optimize, and below a certain spend threshold you’re not generating enough conversions fast enough to train the bidding system. As a rough rule, if your budget generates fewer than 30 conversions per month in your account, smart bidding strategies are going to underperform manual bidding, and the campaign is going to be slow to learn. This isn’t a hard cutoff, but it’s a useful benchmark.

When to scale.

The signal that tells you it’s time to increase budget is when your impression share on core terms is consistently below 60% due to budget constraints (Google will tell you when this is the case — look for “lost IS (budget)” in your campaign data). That means there are searches happening that you’re missing because you’ve run out of budget. In that scenario, increasing spend has a direct, predictable return — you’re capturing searches that already exist, not hoping for new ones.

Warning Signs Your Roofing Google Ads Account Is Bleeding Money

Roofing Google Ads accounts can look healthy on the surface while quietly wasting significant spend. Here’s what we look for when auditing an account that’s underperforming.

No negative keywords added in the past 30 days.

A well-managed roofing account is adding negative keywords every week based on the search terms report. If the negative keyword list hasn’t grown in a month, nobody’s been looking at what searches are actually triggering the ads.

Impression share below 60% on core emergency terms.

If you’re losing significant impression share on your highest-intent keywords, you’re letting leads go to competitors. Find out whether you’re losing to budget (increase spend) or to rank (improve Quality Score or bids).

All traffic going to the homepage URL.

Check your destination URLs. If the majority of clicks are landing on your homepage rather than dedicated landing pages, the campaign structure has a fundamental problem. Fix it before anything else.

Zero or near-zero call conversions tracked.

If your conversion count is low but you know your phone is ringing, call tracking is either not set up or not connected to Google Ads properly. This means your bidding is optimizing for almost no data, which is worse than not using smart bidding at all.

Emergency and scheduled campaigns sharing a budget.

If you’re running both types of work under one campaign, this is the first thing to restructure. The performance improvement from separating them is usually immediate and significant.

Performance Max running on a new account.

If PMax was launched before search campaigns had 60–90 days of data and strong conversion history, it’s likely generating cheap impressions and little actual lead volume. Pause it, build the search foundation, then revisit.

Declining lead quality with stable or rising conversion count.

This is the attribution problem showing itself. If Google Ads shows conversions going up but your actual booked jobs haven’t changed, something in the conversion tracking is counting things that aren’t real leads. Audit your conversion actions and call recording data.

If you’re looking at this list and recognizing more than two or three of these issues in your current account, you have a meaningful amount of recoverable spend sitting on the table. The fixes aren’t complicated — they require attention and some restructuring — but the impact on CPL and lead quality tends to be significant.

If you want a set of fresh eyes on your roofing Google Ads account, we offer free audits for roofing companies who want to understand where their budget is actually going and what it would take to improve performance. We’ll look at everything covered in this guide and tell you exactly what we’d change.

Scroll to Top