Marketing · How-to
Facebook ads for contractors: how to get local jobs from Facebook and Instagram
Run a Leads campaign with an instant form, aimed at the area where you want work, using real photos and a short owner video from your own jobs. Call every lead within minutes, and judge each ad by what it costs per booked job, not per lead. Check early whether Meta treats your ad as a housing ad, because that category forces a wider radius.
Step 1: Pick what you want the ad to produce
Meta has six campaign objectives: Awareness, Traffic, Engagement, Leads, App promotion and Sales [1]. Start with Leads. Inside a Leads campaign you choose where the lead lands: a website, an instant form, Messenger, calls or an app [2]. Skip Awareness, Traffic and Engagement until you have a working lead ad. They buy views, clicks and likes, and a thousand cheap clicks from people who will never hire a roofer are still just clicks.
Instant form
A short form opens inside Facebook or Instagram, already filled with name and phone. Most volume for the money, and the most tire-kickers, so call fast and qualify on the phone.
Messenger
The ad opens a chat with your page. Good for cleaning, lawn and handyman work where people want a rough number first. Someone has to answer within minutes, evenings included.
Calls
A call button dials your line. Fewer leads, but each is a live conversation. Pick it only if every call gets answered while the ad runs.
Website
The ad sends people to a quote page. Works if the page loads fast on a phone and has one short form, and needs the Meta pixel set up to track.
For a first campaign, use an instant form with your phone number on the thank-you screen so the impatient homeowner can call right away.
Step 2: The Special Ad Category question
Every Meta campaign has to declare a Special Ad Category, or declare none. The categories cover housing, employment, financial products and services, and social issues, elections or politics [3]. Housing is the one that can catch a contractor.
Meta’s own help page defining housing blocks automated readers, so we couldn’t open it. Meta ads trainer Jon Loomer quotes the definition, and it lists “housing repairs” next to home sales, rentals, mortgages and homeowners insurance [4]. Whether a furnace tune-up, a lawn plan or a house cleaning counts is not spelled out anywhere we could read. Roofing, siding, basement and remodeling ads look closest to the definition; lawn care and cleaning look furthest from it.
What the housing category changes in the US and Canada, per Meta’s developer documentation [3]:
- Radius: any location you target must cover at least 15 miles (25 km).
- No excluded areas: you can’t cut out a town or ZIP you don’t serve.
- Age and gender: age stays open from 18 to 65+, and all genders are included.
- No lookalikes and no demographic or behavior targeting.
- Read the category description in Ads Manager when you set up the campaign.
- If the ad offers to fix or improve a house, lean toward Housing. A rejected ad or restricted account costs more than a wider radius.
- If Meta flags an ad as housing, accept it and rebuild it in the category.
- Filter with words, not targeting. Name your towns in the headline and on the form (“Serving Woodbury, Cottage Grove and Hastings”) so people outside them scroll past.
Step 3: Draw the map around where you want to work
Local ads live or die on the map. Most small shops target too wide and pay to reach people they’ll never drive to.
- Start from where your best jobs already are. Pull last year’s invoices and mark the 20 jobs you’d most like to repeat. Your circle goes around that cluster, not around your shop.
- Use a pin and a radius, not a whole city. Typing a city name often grabs suburbs on the far side of a river or a toll bridge.
- Check the audience estimate. After you set the circle, look at the estimated reach Ads Manager shows. If it’s far bigger than the number of homes you could serve in a season, the circle is too big.
- Leave interests mostly alone. Under the housing category they’re off anyway; let the photo and headline do the filtering.
- Run one campaign per service area if you split your week between two towns, so you can see which one fills.
Step 4: Make ads that look like your actual work
Stock photos blend into the feed. A phone photo of a real job on a real street gets noticed because it looks like something a neighbor posted.
- Before and after, same angle. A torn-off roof and the new one. A rusted water heater and the new install. A weedy bed and the clean edge.
- The owner on camera, 20 to 30 seconds. Shot vertically on a phone, outside, in daylight, with your truck or the job behind you. No script cards, no music needed.
- A crew member doing the work. Hands on the panel, the mower striping the lawn, the tile going down.
- Captions burned in. Many people watch with the sound off.
- The town name in the first line. Local beats clever.
Owner video script (example, HVAC): “I’m Dan, I own Northside Heating, and I’m standing in a driveway in Maplewood where we just swapped out a 22-year-old furnace. If yours is making noises it didn’t make last winter, tap the button, give us your number, and I’ll call you back today to set up a look.”
Ad text (example, roofing): “Hail hit Eagan last week. We’re on roofs in your neighborhood now. Tap below for a roof check, and we’ll send you photos of what we find, good or bad.”
Ad text (example, house cleaning): “Two openings left for every-other-week cleans in Highland Park. Same two-person team every visit. Tap to get a price for your house.”
Make three versions at once: one photo, one before-and-after, one owner video. Let them run against each other for a week before you decide which one is the winner.
Step 5: Set up the lead form so the leads are real
Meta’s instant forms come in a “More volume” type, which is the default, and a “Higher intent” type that adds a review screen so people confirm their details before sending [5]. For trades, pick Higher intent. The extra tap weeds out people who hit submit by accident.
- Keep the prefilled fields: name, phone, email. Add ZIP code or street address so you can see if they’re in your area.
- Add one or two questions in your words, as multiple choice: “What do you need? Repair / Replacement / Not sure”, “When? This week / This month / Just planning”. Instant forms also support conditional questions that branch based on earlier answers [5].
- Write a short intro that says what happens next: “We’ll call within the hour during business hours.” Then actually do it.
- Put your phone number on the thank-you screen with a call button.
- Get the leads out of Facebook. Leads can be downloaded, pulled through an integration with your CRM or job software, or accessed through Meta’s API [5]. At minimum, turn on notifications so each new lead pings your phone.
When should you use a call ad instead? When the job is urgent (a leak, no heat, a lockout) and someone answers every call. A homeowner with water on the floor does not want to fill out a form. Pair call ads with a plan for after-hours calls or run them only during your open hours.
Step 6: Test with a small budget, then scale what works
There is no right budget, only a test long enough to learn something. For reference, LocaliQ, which sells ad management, published 2026 benchmarks putting Home & Home Improvement lead campaigns at $2.18 a click, a 5.32% conversion rate and $42.95 per lead, against $27.39 per lead across all industries [6]. LocaliQ doesn’t state the date range or sample size. Treat it as a ballpark, not a target.
| Week | What you do | Example spend |
|---|---|---|
| 1–2 | One campaign, one area, three ads (photo, before/after, video). Don’t touch it. | $20 a day = $280 |
| 3 | Turn off the weakest ad. Call every lead within minutes and note who books. | $20 a day = $140 |
| 4 | If cost per booked job is acceptable, raise the budget about a fifth. If not, change the offer or photo, not the targeting. | $24 a day = $168 |
The spend figures are an example, not a recommendation.
- Change one thing at a time, or you won’t know what helped.
- Pause in your busy weeks. If the schedule is full for three weeks, more leads just go cold.
- Time it to the season: AC tune-ups in spring, furnace checks and gutters in fall.
Step 7: Call or text every lead in minutes
A form lead is a person who was scrolling, saw your ad and tapped. Ten minutes later they are doing something else. Harvard Business Review research on 2,241 US companies found firms that contacted a lead within an hour were nearly seven times as likely to qualify it as firms that waited longer [7]. It wasn’t a contractor study, but the lesson carries. More in how fast to call back leads.
First text (send right away): “Hi Karen, this is Mike from Rivera Plumbing. Got your request about the water heater. I can call you in 10 minutes, or is later today better?”
Phone opener: “Hi, this is Mike with Rivera Plumbing, you filled out our form on Facebook a few minutes ago about your water heater. Is now still a good time? Tell me what’s going on with it.”
No answer after two tries: “Tried you twice, Karen. No pressure. Reply with a good time and I’ll call then, or text me a photo of the unit’s label and I can tell you more.”
Many form leads will call you back instead of answering. If you can’t pick up, a missed-call text back keeps them from going to the next ad in their feed.
Step 8: Judge the ads by cost per booked job
Meta will report cost per lead. That number flatters bad campaigns. A $25 lead that never answers is worse than a $60 lead who books a $9,000 roof. Track every lead from the ad to the calendar.
| Example month | Ad A: before/after photo | Ad B: owner video |
|---|---|---|
| Spend | $300 | $300 |
| Leads | 12 | 7 |
| Cost per lead | $25 | $43 |
| Reached on phone | 6 | 6 |
| Booked jobs | 1 | 3 |
| Cost per booked job | $300 | $100 |
Invented numbers to show the math. In this example the “expensive” ad is three times better.
- Tag every Facebook lead in your job software or a sheet with which ad it came from.
- Mark the outcome after the call: no answer, not a fit, estimate set, booked.
- Once a month, divide spend by booked jobs for each ad.
- Compare that to your average job profit, not your revenue.
If a lot of customers see the ad and then call your main number instead of filling the form, you’ll undercount. A separate tracking number on the ad fixes that; see call tracking for contractors. To set the spend from your own job math, use how much to spend on marketing. For how Facebook stacks up against Google, Nextdoor and mail, see every marketing option compared, and for the order to add channels in, the full contractor marketing guide.
Common questions
Rather not run the ads yourself?
Outfitter can run your Facebook and Instagram ads for you at ad spend plus 30%, and your first $10 of Facebook ads is free. There’s no contract; it all comes out of one prepaid token balance (1 token = 1 cent). Everything above still works if you do it yourself.
See how marketing worksSources and how we compared
Ad objectives and Special Ad Category rules come from Meta’s developer documentation and blog, with Meta’s housing definition and form details from Jon Loomer’s guides because Meta’s help pages block automated readers; benchmarks are LocaliQ vendor research; all pages were opened October 4, 2026, and the dollar tables are labeled examples.
- Meta for Developers: Simplifying campaign objectives (outcome-driven ad experiences) — December 21, 2021
- Jon Loomer: ODAX Facebook objectives (conversion locations) — Updated March 2025; independent Meta ads trainer
- Meta for Developers: Special Ad Categories
- Jon Loomer: Special Ad Categories, a guide for Meta ads (quotes Meta’s housing definition) — Secondary source; Meta’s own help page could not be opened
- Jon Loomer: A guide to instant forms — Updated March 2025
- LocaliQ: Facebook advertising benchmarks — Updated September 2026; vendor research, date range not stated
- Venture Harbour: How fast do marketing leads turn cold? (quotes the Harvard Business Review study) — Secondhand report of HBR, March 2011
Last updated October 4, 2026. Prices change; if something here is out of date, call or text (507) 628-0400 and we’ll fix it.