Yes, roofing Facebook ads can fill a schedule. They just don't work the way kitchen or deck ads do.
Hardly anyone scrolls Instagram hoping for a new roof. They want the leak gone, and a lot of them live with a ceiling stain for weeks before they call anybody.
On a roofing account, Bit House Digital brought in 82 landing-page leads at $68.80 each on $5,642 of managed spend, for roofs that usually run $10,000 to $25,000. That's the price of being the name they recognize before they type "roofer near me."
This guide to Facebook ads for roofers goes step by step: what moves the cost, why the offer beats the targeting, and how to time spend around storm season.
Have four things in place before you spend a dollar.
Ten steps, in order. The first one decides more than the other nine.
A roofing ad lives or dies on what it asks the homeowner to do.
"Free estimate" asks them to admit they need a new roof. Most people with a small stain haven't admitted that yet, so they keep scrolling.
An inspection asks for much less. You look, you take photos, you tell them what you found.
"Family-owned roofing. Quality work. Free estimates. Call today!"
It asks for a replacement decision before the homeowner knows what's wrong. Most roofers in town say the same thing.
"Free 21-point roof inspection with photos, and a written report in 24 hours."
A specific check, proof they can see, and a deadline you set for yourself. The homeowner learns something even if they don't hire you.
Same roofer, same market. The offer on the right asks for a look, not a decision.
Only advertise what you'd put in writing. If the ad says 24 hours, the report goes out in 24 hours.
The trade-off?
Inspection leads arrive earlier in the buying cycle than replacement quotes, so some turn into a repair or a "call me next spring."
That's the cost of meeting homeowners before the other roofers do.
This is about twenty minutes of setup, and you do it once.
You own the portfolio. An agency gets partner access, so the ad history stays with you when you part ways.
Build it in your own portfolio, even if you hire help later.
What happens if you don't?
Roofers who let someone else own the ad account lose its history when the relationship ends.
The click-by-click screens for this part are in our step-by-step guide to Facebook advertising for contractors, which covers any trade.
A tap on your ad goes somewhere. Pick that place first, because it shapes lead quality more than the ad does.
For roofing, send the click to a landing page that asks two or three questions before the phone number:
The questions in the middle keep renters and the merely curious out of your call list.
Install the Meta Pixel on that page and fire a Lead event when the form goes in.
That's how Meta learns which visitors turned into leads and finds more people like them.
In Ads Manager, hit Create and Meta asks for an objective.
A lot of roofers go wrong here by picking Engagement or by boosting a post instead.
Leads tells Meta to find people who fill out forms, not people who like roof photos.
Pick Leads, then set the conversion location to your website so the Pixel from step 3 does its job.
Start with one campaign, one ad set and one offer. Add a storm ad set later, when the weather gives you a reason.
Target the area your crews reach in a normal day and leave out the rest.
Why?
A lead 70 miles away costs the same as one down the street, and it's much harder to turn into a job.
Skip the stack of interest filters. Meta's delivery system finds homeowners well on its own when the area is right.
Normal months run on the radius. After a storm, the zips it crossed get their own ad set and storm footage.
When hail or wind hits part of your area, load those zip codes into a separate ad set with storm-specific creative.
Those homeowners have a reason to look up today.
Storm ad sets wear out fast. Two or three weeks after the storm, fold those zips back into the main campaign.
Pick a daily budget you can leave alone for a month.
Meta needs that long to settle, and pulling money in week two throws away what it learned.
A simple way to size it: enough to buy about one lead a day at your expected cost per lead.
Sizing a first month off Bit House Digital's measured roofing cost per lead. Your market sets your own number.
At the $68.80 Bit House Digital measured on a roofing account, one lead a day comes to about $2,064 over 30 days.
Now compare that to the job:
Against a $10,000 roof, the low end of the ticket, one signed job covers that month almost five times.
The roofing ads that hold attention look like they were shot between jobs, because they were.
Three kinds of footage carry most of the load:
The first line names a symptom. A ceiling stain or a shingle in the yard is something they've already seen.
The owner walks the roof. A homeowner who hasn't been up there sees what you look for.
Drone or tear-off footage proves it. Soft decking under old shingles explains a replacement without a word of copy.
One offer, one button. The inspection from step 1 and nothing else.
The anatomy of a roofing ad. The owner's face and the roof do the selling.
Talk the way you talk in a driveway.
If you wouldn't say "protect your most valuable investment" to a homeowner's face, leave it out of the ad.
Make three versions with different first lines and let them compete for a week.
Not comfortable on camera?
Drone and tear-off footage with captions works as a first ad.
Hit publish and don't touch it. Edits in the first week restart Meta's learning phase, and early costs swing a lot.
The first 30 days. The amber stretch is where a lot of roofers kill an ad that was about to work.
Week one has three jobs:
Two days and $40 of spend tell you almost nothing about an ad.
Ads Manager shows dozens of numbers. Three of them pay the bills:
| After one week | Example ad | Call |
|---|---|---|
| Cost per lead under your target | Owner inspection walk-through | Keep |
| $206 spent (3x a $68.80 target), zero leads | Drone pass, no offer on screen | Kill |
| Cheap leads, none book an inspection | Storm check, lead form | Fix the page |
Keep, kill or fix. Give each ad about three times your target cost per lead before you call it.
So what return makes the ads worth it?
If the ads bring back at least 2 to 3 times what you spend on them, you can run them profitably. Most of Bit House Digital's clients do at least 5x.
In roofing, one signed replacement can carry a month of spend, so count signed roofs at the end of the month, not leads.
A roofing lead is warmest the minute the form goes in.
After a storm, that homeowner may be filling out forms for other roofers within the hour.
Call right away. If they don't pick up, text who you are, then call again later that day and the next morning.
A simple follow-up ladder. The first call carries the most weight.
Across Bit House Digital's contractor accounts, clients report booking 50 to 80% of the leads we generate.
Speed on the phone is the part of that number you control.
Book the inspection on the first call, while they're still looking at the stain.
A fast call books the inspection. Getting the lead in the first place comes down to the ad, and three kinds of roofing ads do most of that work.
Three roofing Facebook ad examples cover most of what works: a free inspection ad, a post-storm ad and a financing ad.
What they see: the owner on a real roof, pointing at damage a homeowner can't see from the yard.
Why it works: it asks for a look, not a decision, and the photos promise proof.
What they see: drone footage of tarps on houses they drive past on the way home.
Why it works: the neighbors' tarps make the risk feel close. Run it only in the zips the storm hit, and only when the tarps are real.
What they see: rot under old shingles, then a clean new roof.
Why it works: it answers the cost question before they ask it. Name only the terms your lender gives you in writing.
Build each of the three around your own jobs: your footage, your street names, your lender's terms.
The post-storm ad tends to run hot for a couple of weeks and then fade.
The inspection ad is the one that carries the quiet months, and the offer inside it is the reason.
A free roof inspection works as a Facebook offer because it asks the homeowner for a look, not a five-figure decision.
You get on the roof, take photos and tell them what you found.
On a King and Snohomish County roofing account, Bit House Digital led with a roof condition check instead of a free estimate.
The check gave uneasy homeowners a reason to act before an emergency. That's a much bigger group than the people with water coming through the ceiling.
What about running a discount instead?
Discount ads pull in the wrong buyer. A homeowner choosing a roof on price alone can end up with the contractor most willing to cut corners where they can't see.
Discounts also produce quotes, not jobs: the homeowner takes your number to two other roofers and asks them to beat it.
Bottom line: an inspection starts the conversation with what you found instead of what you charge.
A competitor can't copy that by typing a smaller number.
Target roofing Facebook ads by the zip codes your crews reach in a normal day, and give storm-hit zip codes their own ad set when the weather gives you a reason.
Meta's location box takes zip codes directly, or a pin on your shop with a mile radius. Zip codes give you tighter control at the edges of your area.
After a storm, check the National Weather Service storm reports or a hail-map service the next morning, then load the hit zips into a separate ad set with storm footage.
Two or three weeks later, fold them back into the main campaign.
Watch the wording, though:
If an ad leads with loan terms, Meta can put it in the credit special ad category, which replaces zip-code targeting with a radius of at least 15 miles.
Storm zips often need more than shingles.
If your crews also replace siding after hail, run it as its own campaign. Our page on Facebook ads for siding contractors covers the offer for that trade.
For roofing, a landing page with a few questions usually produces better leads than a Facebook lead form, and a lead form usually produces cheaper ones.
A Facebook lead form opens inside the app with the homeowner's name, email and phone already filled in. Two taps and it's sent.
The result?
A lot of those homeowners don't remember submitting when you call.
A landing page makes the homeowner leave Facebook, see your roofs and answer a few questions first. Fewer people finish, and the ones who do expect your call.
Bit House Digital's 82 roofing leads at $68.80 each were landing-page leads, not lead-form fills.
If a landing page isn't realistic yet, use a lead form and set it up this way:
Landing-page leads usually cost more than form fills. The price itself comes down to three things, and the offer is one of them.
Bit House Digital paid $68.80 per lead on one roofing account, for roofs that usually run $10,000 to $25,000.
So what does that look like in a real account?
One roofer, one market, straight from Meta Ads Manager.
For a roofer serving King and Snohomish County, Washington, Bit House Digital generated 82 landing-page leads at $68.80 each on $5,642 of managed spend.
Bit House Digital's $68.80 lead is under 1% of a $10,000 roof, the low end of what a replacement usually runs.
Meta Ads Manager, one roofing client account, figures for the account's full run
82 leads is one account, and the smallest in Bit House Digital's dataset. Read it as one roofer's number in one market, not an industry average.
Roofing sets its own number for two reasons: the size of the ticket and the timing of the need.
A roof is a five-figure job that most homeowners put off until something forces it.
The lead costs what it takes to be in front of them before that moment, and the ticket is what makes that worth paying for.
Several roofing guides on page one of Google quote a cost per lead around $30, with no ad account behind the figure.
Across eight trades and $139,167 of managed spend, Bit House Digital's cost per lead ran from $29.45 to $119.18, 2,635 leads in total.
Three things move a roofing number most:
An inspection offer brings cheaper leads than a replacement quote, because the homeowner is agreeing to less.
If you want to see the same cost math on another exterior trade, we publish it for fence leads too.
Google search catches the homeowner who has already decided to call a roofer, and Facebook reaches the same homeowner in the weeks before, while the stain is still being ignored.
Search clicks for roofing cost more because you're bidding against a lot of the roofers in town for the same person on the same day.
Facebook makes you the name they already recognize when the ceiling finally forces the call.
So which one should a roofer run?
Plenty of roofers run both: search for the emergency, Facebook for the homeowners a few weeks away from one.
| Facebook ads | Google search | Angi / HomeAdvisor | |
|---|---|---|---|
| When you meet them | Weeks before they search | The day they search | After they ask for quotes |
| Who else they hear from | You, first | The roofers above and below your ad | 3 to 4 contractors per lead |
| What you keep if you stop | Footage, page, ad history | Account history | Nothing; leads stop that day |
Three ways to get a roofing lead, compared on timing, competition and what you own.
Angi's own site says a lead goes to three to four contractors at once, so the homeowner you call is already hearing from your competitors.
Angi's terms run 12 months, need 60 days' notice to cancel, and carry a 30 to 35% early-termination penalty.
The FTC's action against HomeAdvisor over how it sold leads to contractors ended in a $7.2 million order.
Ownership is the bigger difference.
Stop paying a marketplace and the leads stop that day. Stop running ads and the footage, the landing page and the ad account history stay yours.
Run roofing ads year-round at a steady floor, and raise the budget before your region's storm season starts, not the week after the first storm.
Here's why:
In the Pacific Northwest the pattern is rain, not hail. The first long wet stretch of autumn brings the leak calls, and the accounts already running catch them.
Starting a campaign after the storm means paying peak prices to show up late.
Floor budget. Inspection ads for homeowners who have watched a stain grow all season.
Replacement and financing ads while homeowners plan the year's projects.
Storm footage filmed and ready, so a storm ad set can launch the morning after hail or wind.
In rain-driven markets, budget up before the first long wet stretch brings the leak calls.
A year of roofing ads. The floor budget runs year-round; the rest moves with your weather.
Spring is planning season.
Homeowners who got through winter with a bucket in the attic decide in March they're not doing that again, and reaching them tends to cost less.
Don't go dark in the quiet months.
Cost per lead tends to be lowest when fewer roofers are bidding, and the pipeline you build then keeps crews busy when the season turns.
Stopping and restarting also costs you Meta's learning each time, so you pay for the expensive first weeks over and over.
Bit House Digital builds the offer first, because it decides more than the targeting does.
That means working out what to put in front of a homeowner who is uneasy but not yet panicking, and what happens on the call after they raise their hand.
Then we produce the creative: owner-to-camera video on what an inspection involves, drone and tear-off footage, and before-and-after work. We write it, direct it and edit it.
We build the landing page and wire the tracking, so each lead lands in your CRM and we can tell which ad produced which booked inspection.
We run the campaigns daily, refresh creative before it wears out, and give you a real number each week with a straight answer about what it means.
If your crews also do siding or windows, each trade gets its own offer and its own campaign rather than one ad trying to sell all three.
Free strategy call. No pressure. We'll show you exactly what this looks like for your roofing business and your market.