
You put a few hundred dollars behind a post, the likes came in, and nothing on the schedule ever traced back to the spend. That is how a lot of first attempts go, and the campaign was not broken when it happened. It did what it was told to do, which was go find attention. Learning how to run Facebook ads that pay for themselves is mostly a matter of changing that instruction.
Facebook ads work on the first of the six growth levers, Attention. Paid attention is one of the few things a local business can buy on demand, which is most of why it is worth doing at all. It also stays a cost until the next two levers catch it, meaning somebody responds to the person who raised their hand and turns that into a booked appointment. Protecting your budget comes down to keeping the spend tied to that chain instead of to the numbers Ads Manager puts on the screen by default.
What one lead is allowed to cost
The number that decides whether a lead was expensive comes out of your own books, not out of a benchmark article. Take the gross profit on a first job, multiply it by the share of leads you actually close, then multiply that by the portion of the profit you are willing to spend on winning the customer.
Maximum affordable cost per lead = first job gross profit × lead to sale close rate × allowable acquisition share
Run it with HVAC numbers for a second. Six hundred dollars of gross profit on a first job, a 25% close rate on leads, and a decision to spend 30% of that profit on acquisition puts the ceiling at $45 per lead. Your own inputs might land you at $18 or at $90. Either answer is worth more than a gut reaction to the cost-per-lead figure Facebook reports, because now you have something to measure it against.
For outside context, LocaliQ's 2025 Facebook benchmark study looked at 726 US lead campaigns running between April 2024 and June 2025 and reported median costs per lead of $27.66 across all industries, $41.26 in home and home improvement, $30.57 in personal services, and roughly $51 to $53 in beauty and fitness. Those are medians across very broad categories, so treat them as a sanity check rather than a quote for your market.
Tell Meta to find the outcome you need
Meta's auction goes looking for people likely to take the action attached to your objective, which makes the objective a delivery instruction rather than a label on a folder. Choose Awareness and the system gets efficient at finding cheap reach, because that is the job you gave it. Choose Engagement and it gets efficient at finding reactions, comments, and video views. Both work well, which is exactly why you can end up with a great-looking report and a quiet phone.
When what you need is a name and a number, the Leads objective is the one built for that. It covers instant forms, calls, and click-to-message ads where the qualifying questions and the follow-up happen in the same thread. Meta's own guidance points toward Leads, Messaging, or Conversion when the goal is a lead or a sale, which leaves Traffic for the times a page visit genuinely is the outcome you want.
Engagement is not the wrong choice everywhere. It earns its place when a real conversation or an event response is the point. The trouble only starts when a report on likes gets read as a report on customer acquisition.
The boost button is a visibility tool
A boost starts from a post that already exists and gives you a short set of choices about audience, budget, and how long it runs. That is a reasonable fit when more local people seeing something is the actual outcome, like a new location opening or a seasonal reminder.
As a lead system it runs out of room quickly. The text and image of a published post cannot be edited, so testing a second hook means publishing a second post, and you skip the campaign structure that makes calls, forms, and bookings accountable later on. Worth knowing before your next one: Meta notes that a 30% Apple service fee may apply when a boost is purchased inside the Facebook app on an iPhone or iPad, and Apple keeps that fee. Buying from a desktop browser or from Ads Manager avoids that path.
Keep the map honest about where your crew works
Eligible Leads campaigns switch on Advantage+ by default, which turns on audience expansion, placements, and campaign budget together. In that state your age, gender, and interest selections behave more like suggestions the system is allowed to reach past. Location works differently, because Meta treats it as a control that stays strict, along with minimum age, language, and your custom audience exclusions.
Facebook ads for a local business hinge on that distinction. Put your genuine coverage into the location settings, down to the cities and ZIP codes a truck will actually reach, and then let the system optimize inside that boundary. A tidy 15 mile ring drawn around town tends to get the map wrong in both directions at once, pulling in places your crew will not cross the county for while cutting off the customer 20 miles out on a road you already drive every week.

One update if your last setup came from an older tutorial: Meta removed detailed targeting exclusions from new ad sets and from active campaigns starting March 31, 2025. The interest-stacking work that used to fill an afternoon is no longer there to build, so location carries more of the weight now.
How to run Facebook ads as one small test
The smallest interpretable setup is one Leads campaign and one ad set behind a single offer, a single service area, and one lead path, with two or three ads carrying genuinely different hooks or proof rather than different button colors. Splitting a small budget across five audiences gives none of them enough delivery to tell you anything, and Meta's own advice runs the same direction, toward consolidating similar ad sets rather than multiplying them.
A Facebook ads budget for a first test only has to be big enough to produce a readable answer. Fund 14 days at $25 to $40 a day, which puts $350 to $560 through the system, with the lower end suiting a straightforward offer and the upper end fitting the home improvement, beauty, and fitness ranges above. If that is out of reach this quarter, run one ad set for longer rather than adding more of them, and accept a slower and less conclusive answer.
Two mechanics surprise people on the first bill. Meta's guidance is to give a campaign enough budget to run at least seven days so delivery can learn, and your daily budget is an average rather than a ceiling, so Meta may spend up to 75% above it on a given day while weekly spend stays inside seven times the daily number. If you want a hard cap on the test, a lifetime budget is the cleaner instrument.
New ad sets sit in a learning period while Meta explores delivery, and results during that stretch are less stable and usually more expensive than what follows. Significant edits send delivery back into it. So for the first seven days, check daily for hard failures only: geography delivering somewhere strange, a broken form or phone number, leads not reaching whoever is supposed to call them, a rejected ad, or spend running well outside your intended weekly cap. Fix those the day you see them, and leave everything else alone.
Somebody has to answer the leads you buy
Paid attention hands off to Response, and that handoff decides what the budget was worth. A person filling out your form at 8 p.m. is usually filling out two other forms in the same sitting, so a callback at 10 a.m. the next morning arrives into a decision that has already moved.
Before the campaign turns on, settle who owns a new lead, how they hear about it within minutes, what the customer gets back immediately, and how many follow-up attempts happen before you close the file. We have written about what it takes to answer every call, text, and message without adding headcount, and that machinery is the other half of an ad budget. If you want that side running as a system instead of a habit, that is what we build in the Lead Conversion Engine.
The lead path itself follows the same logic. An instant form inside Facebook is fast, prefills what Meta already knows, and brings in more submissions, some of them casual. A form on your own page adds friction that filters some of that out, and it suits a bigger decision better. Pick the one your sales process can genuinely handle today, then compare the two later, once the budget supports a clean test.
Read the numbers past the form fill
Cost per lead is the first number Ads Manager shows you and the least conclusive one on the list. A cheap lead can be out of area, unreachable, shopping a job for next spring, or already booked with somebody else by the time you dial.
Keep a simple sheet, one row per lead, with the date, the ad it came from, the ZIP, and then columns you fill in as the week goes: valid, qualified, contacted, booked, sold, gross profit. Ten minutes a week of that gives you cost per qualified lead, cost per booking, and gross profit after ad spend. Those are the numbers that decide whether to spend more, and none of them exist inside Facebook.
When to spend more
Ten or more raw leads by day 14, with an acceptable qualified rate and a qualified cost per lead under your ceiling, is a campaign worth funding harder, raising budget in steps of roughly 15% to 20% rather than doubling it and restarting learning. Five to nine leads, or a cost sitting right at your limit, is worth another week with one bottleneck repaired. Qualified leads that nobody calls back is a Response problem, and spending more on attention will not fix it.
It is also fair to conclude that Facebook is the wrong room for this particular offer. Meta finds people who were not looking for you and gives them a reason to raise a hand, which suits a seasonal tune-up or a membership promotion. Google Search reaches people already typing the problem into a phone, which usually suits the emergency call better. Compare the two on cost per sold job, not on cost per click.
If you would rather not run this test alone, the Attention Generation Engine is how we build and manage this side of the wheel with the response side connected to it.



