Your leads aren't bad. Your targeting radius is.
A solo detailer in a recent sales call described his experience with his previous Meta ads provider like this: he was getting leads, maybe one to four a month, but they were all 1.5 to 1.75 hours away. He couldn't service them himself. He ended up subcontracting the jobs out at $20 per job just to avoid wasting them entirely. On paper, the campaign was generating leads. In practice, it was generating work he couldn't do for a price that barely covered the subcontractor's gas.
That is not a lead quality problem. The leads were real people with real cars. The problem was structural, built into the campaign before the first dollar of ad spend went out.
What actually happened in that campaign
The previous agency deliberately cast a wide geographic net during the trial period. More leads look better. A campaign generating 30 leads from a 100-kilometer radius looks more impressive than one generating 8 leads from a 15-kilometer radius, even if 28 of those 30 leads are useless to a one-truck operation.
This is how the bait-and-switch trial works in practice. The agency runs a short trial with loose targeting to maximize lead volume. They present the numbers as proof the channel works. Then they quote $1,000 per month to continue. The contractor sees the lead count and thinks the system worked. The geography problem only surfaces when they try to actually book jobs.
The contractor in this call had already figured this out intuitively. He described his serviceable area clearly: west side, east side, but not that far in either direction. He had a mental map of where he could actually operate. The previous campaign simply ignored it.
Why this happens structurally
Meta's ad targeting defaults toward reach. The platform's optimization goal, when left to its own devices, is to spend the budget across the broadest audience that meets the basic parameters. For a service business, that creates a pull toward volume over geography. An agency that isn't actively constraining the radius is likely letting Meta optimize for impressions and clicks, not for bookings within a serviceable area.
There are two settings that matter here. The first is the geographic boundary in the campaign itself, set in Audience or Advantage+ Audience depending on how the campaign is structured. A radius of 20 to 25 kilometers around the contractor's home base is a reasonable starting point for most solo operators. Some markets need tighter. A detailer who can do three jobs a day and needs them all within 30 minutes of each other needs a tighter radius than a roofer booking two-week-out jobs.
The second setting is what the campaign is actually optimizing for. If it's optimizing for leads (Instant Form submissions or landing page conversions), Meta will find the people most likely to submit a form, which is not the same as finding the people most likely to become paying customers in the right neighborhood. Layering in location-specific creative, mentioning the specific suburb or city name in the ad copy, helps the algorithm self-select for people who recognize that geography as their own and respond because of it.
A campaign missing both of those will generate leads. It will just generate them from wherever the ad happened to reach someone who clicked.
The specific fix
The setup change is not complicated. It is just precise.
Set the location targeting to a radius that matches the contractor's real operating area, not a radius that maximizes lead volume. If a detailer can realistically travel 20 minutes, the radius should reflect that. If a painter works three suburbs, the targeting should name those suburbs, not "greater metro area."
Then align the ad copy to that geography. Mentioning the city or area in the headline ("Full detail in [Suburb], booked this week") does two things. It signals to people outside the area that this ad is not for them, which reduces wasted clicks. And it signals to people inside the area that this is local, which increases conversion rate from click to booked job.
The third piece is what happens after the lead submits the form. A solo operator getting a lead at 2pm on a Wednesday while they are elbow-deep in a car interior cannot respond in the next 5 minutes. But response speed matters, because leads that don't hear back within minutes often move on or forget they submitted. An automated follow-up, a text sent within seconds of form submission, that asks about the car and proposes a time window, removes the gap between "lead came in" and "lead is engaged." This is what Remi, ASN's AI follow-up assistant, does: it responds immediately, holds a back-and-forth conversation, and can even ask the lead to send photos of the car so the detailer knows what they are walking into before they show up.
Tighter targeting plus geography-matched copy plus immediate follow-up is the full structure. None of it is exotic. All three are setup decisions, made before the campaign launches, that determine whether the leads that come in are leads the contractor can actually work.
How to tell if your last campaign had this problem
Pull up whatever reporting your previous agency gave you, if they gave you any at all. Look for the geographic breakdown of where your leads came from. If the agency cannot show you that breakdown, or never provided it, there is a good chance the campaign was running broad. Broad is what creates impressive-looking lead counts and unusable geographies.
If you are evaluating a new agency, ask them specifically: what radius will you target, and why? Ask them to walk you through how they will align the ad copy to that area. If the answer is "we'll optimize based on what Meta learns," that is the platform's default behavior, not a deliberate targeting structure built around your operation.
The detailer in that call was getting leads. He had proof the channel worked. The only thing that needed to change was the geography. Getting that one parameter right is the difference between a campaign that fills your schedule and a campaign that fills someone else's.
What a correctly structured campaign looks like
ASN builds campaigns around the contractor's actual serviceable radius from the start, not a broad launch radius that gets narrowed down after the trial. The geographic boundary is set before the campaign goes live, the ad copy calls out the local area by name, and Remi handles follow-up within seconds so the leads that do come in get responded to before they lose interest.
If you have been burned by a campaign that generated the wrong geography, the first conversation worth having is about what radius was actually set and why. That is where to start. You can reach out at americanservicenetwork.com to walk through what your last campaign was actually doing and what a correctly targeted one would look like for your area.
ASN manages Meta ads for home service contractors with no setup fee and no contract. If you want to see what this looks like for your trade before committing to anything, the contact page is the right next step.
See how it works for your business