Playbook · Roofing · Paid advertising
The complete guide to roofing Google and Meta ads
How a roofing company runs ads that turn clicks into contracts. Roofing leads cost more than any other home services category, so every step here is about cutting waste and tracking to the contract.
The short version
Do Google and Meta ads work for roofing companies?
Yes. They work best when they’re built around the right searches and judged on signed contracts. Roofing ads work best when repair, replacement and insurance work run as separate campaigns, targeting stays inside the area your crews serve, and job seekers, DIYers and shingle shoppers are filtered out. Meta rarely starts a replacement, but it keeps real crews, nearby finished roofs and financing in front of homeowners while they collect bids. Leads are expensive, with a median Google cost of about $228 for roofing and gutters (LocaliQ, 2025), so results should be judged by cost per signed contract.
The search terms report
Where roofing ad budgets get wasted
Every month we read the actual searches your ads showed up for. In roofing, the wasted spend is predictable: job seekers, DIYers, people pricing materials, people hoping for a free roof and people far outside your service area.
Cut: never going to book
| Search term | Why it’s cut |
|---|---|
| Job seeker | |
| DIY | |
| Buying materials | |
| Wants free | |
| Outside your area |
Keep: searches that book
- “roof replacement [suburb]”Biggest ticket
- “roof leak repair near me”Urgent, ready to book
- “hail damage roof inspection [city]”Insurance work
Example search terms. Yours come from your account.
Step by step
The playbook
-
01
Work out what a signed contract is worth
Before you set a budget, know your average ticket, your close rate on estimates and how many more jobs your crews can take. That gives you a target cost per signed contract.
- Pull last year’s signed contracts and average ticket by job type
- Work out your close rate from estimate to contract
- Set a target cost per signed contract for each job type
-
02
Split repair, replacement and storm work
An emergency leak, a planned replacement and a hail claim are different searches, different pages and different budgets. Mixing them hides which one is paying.
- One campaign per job type, each with its own budget
- Ad copy that matches the search: fast response for leaks, proof and financing for replacements
- Insurance work kept apart from retail
-
03
Keep targeting inside your service area
Ads that show 100 miles away bring calls your crews can’t take. Target the suburbs you serve, and check that your ads show to people located in your area.
- Target by suburb or a radius around where your crews work
- Set location targeting to people in or regularly in your area
- Exclude areas you won’t drive to
-
04
Build a landing page for each campaign
Sending every click to your home page makes a homeowner hunt for the answer. Each campaign gets a page that matches the search.
- Photos of roofs you’ve done, by roof type
- Reviews, warranty and financing on the page
- A short estimate request: name, phone, address and what’s going on
-
05
Cut junk searches every month
Read the search terms report every month to see what people actually typed. Roofing budgets get wasted on job seekers, DIYers, material shoppers and free-roof searches.
- Add negatives for jobs, hiring, how-to and shingle prices
- Block free roof and grant program searches
- Check for out-of-area city names and exclude them
-
06
Use Meta while homeowners compare
Meta rarely starts a replacement. It works while a homeowner is collecting bids, by showing real crews, finished roofs nearby and financing to people who already visited your site.
- Target past site visitors and people who requested an estimate
- Show finished roofs in their part of town
- Pause it if it isn’t adding signed contracts
-
07
Track every signed contract to its ad, test, then improve
Calls and estimate requests are the way in, and signed contracts are the result. Tie each contract and its amount to the click that started it, send it back to both platforms, and test one thing at a time so the budget follows what sells.
- Count the signed contract as your main conversion, with calls and estimate requests tracked along the way
- Capture the click ID (gclid), the code that ties a lead to one ad click, on every estimate request, and send each contract and its amount back to both platforms as it’s signed
- Judge job types, searches and campaigns by cost per signed contract
- Test one change at a time, an ad, landing page, offer or bid, and keep what signs more contracts
Free PDF
Get the full roofing playbook as a PDF
All three guides, every checklist and the marketing calendar in one file you can print or hand to your office manager.
- Local SEO, ads and website, step by step
- Printable checklists
- A month-by-month marketing calendar
Tick it off as you go
Roofing ads checklist
0 of 11 done
Your ticks save in this browser, so you can come back to it.
What not to do
Common mistakes
Judging ads on cost per lead
A $228 lead that turns into a $10,000 roof beats five cheap leads that go nowhere. Cheap leads that never sign are the most expensive kind.
One campaign for every roofing job
Leaks, replacements and hail claims fight over the same budget, and you can’t tell which one is paying.
Ads that hint at a free roof
They bring calls from people hoping for something you can’t deliver, and they undercut the trust a job this size depends on.
Chasing storms out of your area
Pushing ads into markets your crews don’t serve spreads budget thin and leaves you without local reviews or follow-up. Storm work pays best where you already work.
Your monthly report
How to measure roofing ads
If it doesn’t tie back to a booked job, it’s a leading indicator at best. Track these every month.
- Cost per signed contractWhat each contract cost in ad spend, by campaign
- Estimate-to-contract rateHow many estimate requests from ads turned into signed contracts
- Revenue by campaignRepair, replacement and storm work, side by side
- Search terms cutJunk searches found and blocked each month
Questions
Roofing Google and Meta ads questions
How much should a roofing company spend on Google Ads?
Start from what a roofing job is worth, your close rate and how many more jobs your crews can take. Roofing and gutter leads on Google have a median cost of about $228 (LocaliQ, 2025), and not every lead signs. Size the budget to a target cost per signed contract and scale once the numbers hold.
Why are my roofing leads bad?
Usually one of four things: broad keywords with no negatives, ads running far outside your service area, landing pages with no real proof, or campaigns judged on form fills. The search terms report and a look at which leads actually closed tell you which ones you have.
Do Facebook ads work for roofing?
Not usually as the first touch for a replacement. They work well while a homeowner is comparing estimates, showing real crews, finished roofs in their neighborhood and financing options to people who already visited your site. Google comes first because it catches people already searching for a roofer.
Can I track roofing ads to signed contracts?
Yes. Track calls, forms and estimate requests and match them to jobs in your CRM, so you can see the contracts each campaign brought in and their revenue. How much you can match depends on what your CRM can connect to.
Should roofing ads target storm damage?
If you do insurance work, yes, in the area you already serve. Storm damage searches deserve their own campaign, pages that explain inspections and claims, and ad copy that stays honest. Don’t promise free roofs or push ads into markets your crews can’t cover well.
Rather not do it yourself?
We run this playbook for roofing companies
Same plan, run by a senior team and reported in booked jobs. Tell us your service area and the jobs you want more of.