Paid ads
Facebook Ads for Roofers: A Step-by-Step Setup
Facebook ads can fill your schedule or burn your budget, and the difference usually isn't the platform. It's the offer, the targeting, and how fast someone answers when a lead comes in. Here's how to set it up right, step by step.

Do Facebook ads work for roofers?
Yes, but not the same way Google ads work, and that difference trips up a lot of roofing companies on their first try. Google catches someone who already knows they need a roof and is searching for who to call. Facebook interrupts someone scrolling who hasn’t started looking yet. You’re not capturing demand, you’re creating it.
For residential roofing, that makes Facebook a good fit for storm-damage awareness, financing offers, and retargeting people who already visited your site. It’s a weaker fit as your only channel if you don’t have an offer worth stopping for, or a way to answer the leads it generates fast. Typical cost per lead runs $40 to $80 in a normal month, and can drop to $10 to $22 during the first 72 hours after a hailstorm when a whole neighborhood is thinking about their roof at once, per PipelineOn’s roofing Facebook ads data.
Facebook tends to earn its keep in a few specific windows: right after a hailstorm when a whole neighborhood needs a roof and hasn’t decided who to call yet, during slower months when you need to create demand instead of waiting for it, and any time you’re pushing a financing offer that lowers the barrier to booking an estimate. It tends to waste money as a set-it-and-forget-it channel with no plan for what happens after someone fills out the form.
If you haven’t built the rest of the system yet, start with the roofing marketing guide before you put money into any single channel. And if you’re weighing Facebook against search ads for your budget, google ads for roofers breaks down how that channel behaves differently.
Before you spend: the offer and the landing page
Get this part right before you touch the ad manager. Most wasted Facebook budget traces back to a vague offer or a landing page that doesn’t match it.
“Free estimate” isn’t an offer anymore, every roofing company in your market already says it. Get specific: a free storm damage inspection, a same-week roof check before winter, financing available on approval. Specific offers stop the scroll and set up the next click correctly.
The landing page has one job: prove the ad wasn’t a bait and switch. That means:
- The headline on the page matches the promise in the ad, word for word if possible.
- One form, asking for the minimum needed to call someone back.
- Your phone number visible without scrolling.
- A page that loads fast on a phone, since almost all of this traffic is mobile.
Send the click straight to that page. Sending Facebook traffic to your homepage and hoping they find the offer themselves is how a good ad turns into a wasted budget.
Rotate the offer with the season if you can. Storm damage inspections make sense right after a weather event, roof age checks and financing pushes make more sense in a quiet stretch. The mechanics of the ad stay the same, but a stale offer run year-round stops converting long before the budget runs out.
Targeting a service area without wasting budget
Start with a radius around your actual service area, not a whole metro. A homeowner forty miles outside where your crews run isn’t a lead, they’re a wasted impression.
From there, narrow further:
- Exclude interests and behaviors that signal DIY intent, not hiring intent.
- Build an audience from your own customer list if you have one. Facebook can find people who look like your past customers, which usually outperforms broad interest targeting.
- Keep the radius tight enough that every dollar has a real shot at becoming a job in your area, not someone else’s.
Homeownership and age range matter too. Renters and homeowners in an apartment complex aren’t your buyer, so it’s worth filtering them out where the platform allows it rather than paying to reach them. And resist the urge to go too narrow. An audience that’s too small runs out of new people to show ads to within days, which drives your cost per lead up for no reason.
This is the same principle behind keeping leads exclusive in the first place. Relay’s lead generation work is built around one roofer per area, so the leads a campaign generates aren’t split three or four ways before your team even calls.
Creative that works for roofing (real photos, real crews)
Stock photos of a generic house and a generic roof get scrolled past. Real photos of your actual crew, your actual trucks, and a real before-and-after from a job you did get stopped on.
A few things that consistently work better for roofing specifically:
- Before-and-after shots from real jobs, not staged ones.
- A short video of the owner or a crew lead talking plainly about the work, not reading a script.
- Photos that show your name on the truck or the shirt. Homeowners are hiring a person and a crew, not a logo.
Skip the overly polished, agency-stock look. It reads as generic and roofers lose the trust edge that a real crew photo gives them for free.
On format, a single strong image or a short video usually beats a multi-image carousel for a first campaign. Carousels ask a scrolling homeowner to do more work than they’re willing to give an ad they didn’t ask for. Keep the on-image text short, the offer clear, and let the caption below the image carry the rest of the pitch. For a closer look at what this looks like in practice, roofing ads examples walks through real ad breakdowns.
Budget and what a lead should cost
Start smaller than you think you need to. Meta’s algorithm needs roughly 50 conversions in a week per ad set to fully exit its learning phase, which is a higher bar than most first-time roofing advertisers expect, but even a modest $20 to $50 a day is usually enough to learn whether an offer and audience are working before you commit real money, based on Meta ads budget benchmarks for small business. Give it at least 7 days before judging results, and don’t trust anything you see in the first 72 hours, that window is mostly noise while the algorithm is still finding its footing. Facebook’s algorithm needs time and data to find the right people, and killing a campaign after two days almost never gives it a fair shot.
Track cost per lead, but don’t stop there. The number that actually matters is cost per booked job. A cheap lead that never answers the phone or never shows real interest costs you more than an expensive lead that turns into a signed contract. Think in booked jobs and dollars, not just cost per click.
Once you find a combination of offer, audience, and creative that’s producing booked jobs at a cost you’re comfortable with, that’s the one to scale, not a brand new idea. Adding budget to a proven winner is almost always a better move than launching three new campaigns at once and splitting your data three ways.
The follow-up rule: reply in minutes or do not run the ad
This is the part almost nobody talks about, and it’s the difference between a Facebook campaign that pays for itself and one that just generates activity.
A lead from a Facebook form isn’t standing there with the phone in hand the way a Google searcher often is. They filled out a form mid-scroll and moved on with their day. If nobody calls them back within minutes, the moment passes and they’ve likely already forgotten which ad they clicked.
The rule is simple: if you can’t answer a Facebook lead in minutes, don’t run the ad yet. Fix the follow-up first, then turn the budget on. That means someone is assigned to check for new leads constantly, not once at the end of the day, and that person calls before they text or email. A phone call gets picked up far more often than either.
Relay’s speed-to-lead work exists to close exactly that gap, so a form fill on a Tuesday night doesn’t sit untouched until Wednesday morning.
Retargeting past visitors
Not everyone who lands on your page fills out the form the first time. Retargeting puts your ad back in front of people who already looked at your site but didn’t convert, which is a warmer, cheaper audience than cold traffic.
The same applies to old leads who never booked. A retargeting campaign aimed at people who showed interest months ago can turn some of that graveyard into new jobs, often for less than what it costs to find a brand new prospect.
A window of roughly 30 days is a reasonable starting point for a website retargeting audience, or a tighter 7-day window if you want to stay closer to people still actively deciding, per PipelineOn’s recommended retargeting windows for roofing. Long enough to catch someone still deciding, short enough that the ad still feels relevant. Once someone converts, make sure they’re excluded from future ad spend for that offer. Showing an ad for a free inspection to someone who already booked one just wastes money and looks careless. For more ways to keep the pipeline full without paying for every lead as new, see how to get roofing leads.
Ready to stop losing jobs you already paid for?
We'll look at your market and show you where leads are slipping through. No contract, no pressure.