Local Service Ads (LSA) vs Search Ads
LSA is pay-per-lead: you pay only when a homeowner calls or messages through the ad. Cost per lead ranges $30–$120 depending on market. LSA sits above regular Search Ads with a Google Guaranteed badge, which lifts click-through rate. Downsides: less control over keywords, no landing page, and Google decides which leads count.
Search Ads is pay-per-click: you pay whether or not the click converts. Costs $40–$120/click on roofing queries. Full control over keywords, landing pages, and bidding. Requires strong landing pages and negative keyword lists to be profitable.
The winning combo: run LSA for high-intent 'roofer near me' clicks and Search Ads for storm-driven, service-specific, and city-specific queries.
Campaign structure
Structure by service and city, not one giant campaign. Minimum starting structure for a metro roofer:
- Campaign 1: Roof Replacement — city ad groups (Dallas, Plano, Frisco, McKinney).
- Campaign 2: Roof Repair — city ad groups.
- Campaign 3: Storm/Hail Damage — city ad groups (activate during storm events).
- Campaign 4: Metal Roofing — city ad groups (if specialty).
- Campaign 5: Emergency Repair — city ad groups, 24/7 bidding.
Keywords and negative keyword lists
Bid on exact + phrase match, avoid broad match without close audit. Target keywords: 'roof replacement [city]', 'new roof cost [city]', 'roof repair near me', 'hail damage roof', 'roof leak repair'.
Negative keywords are how you stop bleeding money. Add: 'diy', 'jobs', 'salary', 'training', 'certification', 'wholesale', 'materials only', 'supplier', 'insurance job' (unless you want them), 'free', 'cheap', competitor names (unless you're bidding on them intentionally), and every roofing brand you don't install.
Landing pages that convert
Never send Google Ads clicks to your homepage. Every campaign needs a dedicated landing page: matches the ad copy, loads in under 2 seconds on mobile, has a phone-number CTA in the top-right that's clickable (tel: link), a form with 4 or fewer fields (name, phone, address, issue), 3 real project photos, 3 short testimonial quotes with star ratings, financing badge if you offer it, and Google Guaranteed / BBB / manufacturer-certification badges.
The single biggest CVR lever is form length. Cutting from 8 fields to 4 typically doubles conversion. Address should be a Google-Places-autocomplete field to prevent typos.
Ad copy that gets the click
Winning roofing ad structures: [City] Roof Replacement — Free Inspection, 25-Year Warranty. Financing 0% APR. Call [Phone]. Include: city name (mirrors search intent), specific offer (free inspection is table stakes), a proof point (warranty, years in business, review count), and a clear CTA (Call, Get Quote).
Use every extension Google offers: sitelinks (repair, replacement, financing, reviews), callouts (24/7 emergency, insurance approved, 25-year warranty), structured snippets (services), call extension (with call reporting on), location extension, and lead form extension.
Tracking: conversions that matter
Default Google conversion tracking counts form submits and phone calls from the ad. But form submits ≠ booked jobs. Set up offline conversion tracking: import 'booked appointment' and 'signed contract' events from your CRM back into Google Ads. This lets Google's bid algorithm optimize toward revenue, not clicks.
Add CallRail or CallTrackingMetrics for dynamic number insertion. Every ad shows a unique number so you know which keyword drove which call. Score calls: booked, no-show, quote given, contract signed, sale amount.
Budget, bidding, and target CPL
Start at $3,000–$8,000/month for a metro. Manual CPC or Maximize Conversions bidding for the first 60 days (until you have 30+ conversions), then switch to Target CPA at your desired booked-appointment cost.
Target CPL by service (paid CPL, not offline): Roof Replacement $80–$200, Roof Repair $40–$100, Storm/Hail $60–$150, Emergency Repair $30–$80.
Storm response playbook
When hail or wind hits your area, search volume spikes 400–800% within 24 hours. Have a pre-built 'Storm Damage — [City]' campaign paused and ready. Activate within 4 hours of the storm alert, bump budget 3–5x, add storm-specific ad copy ('Free storm inspection', 'Insurance claim assistance'), and pre-write a landing page with insurance-claim messaging.
Frequently Asked Questions
Should I run LSA or Search Ads first?
LSA — lower risk, pay only for leads, faster to profitability. Add Search Ads once LSA is stable and you want more volume.
What's a good cost per lead for roofing?
$40–$100 for repair, $80–$200 for replacement, $30–$120 for LSA. Below $40 is exceptional; above $250 usually means bad negative keyword hygiene or weak landing pages.
How much should I spend on Google Ads?
Minimum $3,000/month for a metro to gather enough data for optimization. Below that, learning is too slow and campaigns underperform.
Do Performance Max campaigns work for roofers?
Mixed results. PMax can produce cheap leads but with wide quality variance. Only run PMax if offline conversion tracking is set up so Google optimizes toward booked jobs, not form fills.
Should I bid on competitor names?
Yes if you have a strong offer and matching landing page. Expect 8–15% CTR and 4–8% CVR on competitor brand terms. Illegal to use competitor names in ad copy in some markets — check regulations.
Google Ads or Facebook Ads for roofing?
Google Ads captures intent (people actively searching). Facebook Ads is for interruption (finding homeowners who don't know they need a roof yet). Google first, Facebook to scale beyond in-market demand.