Insights

Roofing Contractor Google Ads: Campaign Structure That Separates Repair Jobs from Full Replacements

Roofing Google Ads has the highest CPL in home services search at $228 per lead per LocaliQ’s 2025 benchmark. That price is the average across all roofing queries combined. The price hides a 4-8x spread between cheap repair queries that produce $400 patch jobs and expensive replacement queries that produce $18,000 full-replacement tickets. A roofing operator running one campaign across both produces a blended cost-per-booked-job that hides the math and inflates the apparent cost of every replacement.

This page is the campaign segmentation discipline that separates roofing repair from replacement at the campaign level, with separate budgets, keywords, ad copy, and landing pages for each. It assumes a multi-location roofing operator doing $5M+ in revenue, running ServiceTitan or Jobber as the system of record, with the team capacity to track jobs by source category in the CRM.

Why one roofing campaign is the wrong structure

The default Google Ads campaign structure most roofing operators inherit from their previous agency looks like this: one “Roofing Services [City]” campaign with 30-60 keywords mixing repair and replacement terms, one ad group, one landing page, and one bid strategy. The platform allocates budget based on which clicks convert at the lowest CPL.

The math: a “roof repair” click converts at 9 percent because the buyer is in a low-cycle decision mode. A “roof replacement” click converts at 3.5 percent because the buyer is in a 4-8 week consideration window. The platform sees the first as 2.5x more efficient and allocates 70-80 percent of the budget to repair queries. The operator ends up with a campaign producing 40 repair leads per month and 4 replacement leads per month, when the revenue mix the operator actually wants is the opposite.

The fix is structural. The platform cannot optimize for revenue when the campaign treats all conversions as equal. The campaign has to split repair and replacement into separate campaigns, with separate budgets and separate conversion values that reflect the actual revenue profile of each.

The 4-campaign structure

The campaign architecture that produces the right job mix for a roofing operator:

Campaign 1: Roof Repair (Residential). Keywords: “roof repair,” “leaky roof,” “roof leak repair,” “emergency roof repair,” “roof shingle replacement.” Bid strategy: Maximize Conversions with a tCPA at roughly $60-$90. Landing page: dedicated repair page with same-day service messaging, photo gallery of completed small jobs, and a phone number above the fold. Conversion value: $400 average ticket times 35 percent booking rate = $140 per conversion.

Campaign 2: Roof Replacement (Residential). Keywords: “new roof,” “roof replacement cost,” “asphalt shingle replacement,” “metal roof installation,” “tile roof replacement.” Bid strategy: Maximize Conversions with a tCPA at roughly $300-$450. Landing page: dedicated replacement page with full-system installation messaging, financing options, warranty details, before-and-after gallery, and a consultation booking form (not just a phone number). Conversion value: $18,000 average ticket times 22 percent booking rate = $3,960 per conversion.

Campaign 3: Storm Damage and Insurance Claims. Keywords: “storm damage roof,” “hail damage roof inspection,” “insurance claim roof replacement,” “wind damage roofing.” Bid strategy: Maximize Conversions with a tCPA at roughly $200-$350, scaled aggressively during and after weather events. Landing page: insurance-claim-focused page covering the claim process, what adjusters look for, and the company’s experience working with major insurers. Conversion value: $22,000 average ticket (insurance jobs trend higher than retail) times 28 percent booking rate = $6,160 per conversion.

Campaign 4: Commercial Roofing. Keywords: “commercial roof repair,” “TPO roof installation,” “flat roof contractor,” “commercial roofing [city].” Separate campaign with separate landing pages and ad copy targeting facility managers and commercial property owners, not residential homeowners. Bid strategy: Maximize Conversions with a tCPA at roughly $400-$700.

Each campaign gets its own daily budget, its own bid strategy, and its own conversion value. The platform optimizes each toward the revenue profile of its buyers, and the budget reallocates toward the high-value campaigns within 14-21 days of taking the structure live.

Match type and negative keyword discipline

Per the broader discipline at paid search for electrical contractors and the keyword match types that stop wasting budget, broad match in home services is a wealth transfer to Google. The match types that work for roofing:

Phrase match and exact match across all four campaigns at launch. Each campaign gets 15-30 tightly themed terms.

A shared negative keyword list applied to all campaigns. Common roofing negatives: “DIY,” “how to,” “video,” “salary,” “job,” “school,” “training,” “Home Depot,” “Lowes,” “Habitat for Humanity,” and any commercial-only term in residential campaigns or residential-only term in commercial campaigns.

Search term reports pulled daily for the first 30 days. Every non-buyer query gets added to the negative list. The list typically grows from 100 negatives at launch to 600-1,200 negatives by day 60.

Broad match introduced only after 90 days of clean conversion data, applied to a separate experimental campaign with a strict tCPA cap and the full negative list.

Ad copy that filters by intent

Ad copy in roofing paid search has to filter price shoppers out of expensive campaigns. The copy patterns that work by campaign:

Repair campaign copy. “Same-Day Roof Repair Across [City]” in headline 1, “Licensed and Insured” in headline 2, “Call Now” CTA. Goal: maximize clicks from the urgent-repair buyer. Cheap clicks are acceptable here because the ticket is small.

Replacement campaign copy. “New Roof Installation Starting at $X,XXX” in headline 1, “Free In-Home Consultation” in headline 2, “Financing Available” extension. Goal: filter for the buyer who has already done research and accepts that replacement is expensive. Price floor in the headline loses the cheap-shopper click intentionally.

Storm damage campaign copy. “Storm Damage Roof Inspection: Insurance Claim Assistance” in headline 1, “Free Adjuster Coordination” in headline 2. Goal: signal the insurance-claim capability that distinguishes the operator from storm-chaser competitors.

Commercial campaign copy. “Commercial Roofing Contractor [City]: Tenant-Friendly Project Management” in headline 1, “Licensed, Bonded, Insured” in headline 2. Goal: signal commercial-specific capability and language that residential ads do not use.

The landing page side of the equation

Each campaign’s landing page has to match the campaign’s intent and budget. A repair-campaign landing page that buries the phone number behind a form loses 40-60 percent of the urgent-repair clicks before they convert. A replacement-campaign landing page that uses the same generic copy as the repair page fails to address the consideration cycle the replacement buyer is in.

The conversion math: per cubecreative.design, roofing conversion rates average 3.70 percent, which is the lowest in home services. The replacement-buyer landing page is the input that moves the math the most. Pages that surface specific pricing ranges, financing terms, warranty details, and named-installer photos consistently outperform generic “free estimate” pages. The detailed conversion analysis is in the home services conversion and trust hub.

Measurement against booked-job revenue

Per the broader attribution framework at how to track which marketing channel is generating your contractor leads, every campaign’s leads have to be tagged with the campaign source in ServiceTitan or Jobber so the booked-job rate per campaign can be measured weekly.

After 60 days of clean data, the operator should be able to answer four questions per campaign: what was the CPL, what was the call-to-book rate, what was the booked-job rate, and what was the average ticket per booked job from that campaign. The cost-per-booked-job number that comes out of that arithmetic is the only number that matters for the budget allocation decision in month 3.

How this connects to the broader channel mix

The roofing Google Ads structure above is one channel in the home services lead generation playbook. It pairs with the roofing SEO program at roofing SEO for storm-season keywords for the organic complement, and with LSAs and Map Pack for the full demand-capture stack. The detailed cost-per-lead question for roofing specifically is at how much does a roofing lead cost on Google Ads. The budget-allocation question across the full program is at how much should a roofing company spend on marketing per month. The conversion-side question is at why do my Google Ads leads not convert into booked jobs.

Performance Max for roofing: where it works and where it does not

Google’s Performance Max campaign type has been pushed aggressively to home services advertisers since 2024. The honest answer for roofing: PMax works for the storm-damage and insurance-claim campaign, where Google’s audience signals can identify in-market buyers in weather-affected ZIPs. PMax typically underperforms for the replacement campaign, where the long consideration cycle and the need for landing-page specificity outpace what PMax’s black-box bidding can optimize against.

Our standard guidance on PMax in roofing accounts:

Use PMax as a fifth campaign on top of the 4-campaign structure, not as a replacement. Allocate 10-20 percent of total Google Ads budget to PMax in the first 90 days, monitor cost-per-booked-job tightly against the other 4 campaigns, and scale or kill based on the comparison.

Exclude branded queries from PMax (a known account-cannibalization pattern) using the brand exclusion feature Google added in 2024.

Provide PMax with the broadest signal asset set possible: 10-20 images, 5+ videos, 15+ headlines, 5+ long descriptions, and audience signals derived from the operator’s CRM past-customer database.

Review PMax search term insights monthly (the partial visibility Google provides) and add negative keywords aggressively to prevent waste expansion.

PMax is a useful experimental layer when the core 4-campaign structure is mature. It is not a substitute for the discipline.

Who this works for and what comes next

The 4-campaign roofing Google Ads structure works for a multi-location roofing operator doing $5M+ in revenue, running ServiceTitan or Jobber as the system of record, with the team capacity to track jobs by source category in the CRM and to staff the consultation workflow that replacement and storm-damage campaigns generate.

For operators ready to commit $60,000+ per month to a full-stack engagement combining paid, organic, GBP, and the BI layer that ties spend to booked-job revenue weekly, the next step is a 45-minute working call with one of the founders. No deck. No pitch. The founders review your current Google Ads structure, your CRM, your historical CPL data, and you leave with a written read on which campaigns to restructure first.

Schedule a Private Consultation. Forty-five minutes with a founder. No deck. No pitch.

Want this run on your pipeline, not just read on a blog?

Book a strategy call