In one 30-day window, Trevor Mercer's Houston Pressure Washing account spent $29,588 on Meta ads and booked 3,131 verified leads - $9.45 per lead, 4.07% CTR, about $0.94 a click.
A few months earlier, Trevor had nearly written off Facebook ads, bleeding budget on fake form-fills from rival shops. Today the same Pressure Washing owner in Houston runs one account split across fifteen audiences, booking 3,131 qualified leads at an average of $9.45 each, with the first leads landing in just 3 to 4 days. This page walks through the exact account Trevor built.
Trevor Mercer runs his Pressure Washing business in Houston on a single Facebook Ads account. Across fifteen audiences, each carrying its own daily budget between about $40 and $95 (a combined cap of roughly $986), the account spent $29,588 over 30 days - actual delivery averaged about $391 a day as the audiences ramped - and booked 3,131 verified leads at a $9.45 blended cost per lead, from 771,460 impressions and 391,604 people reached. This is the ad-set breakdown exactly as it reads in the Ads Manager account AI DOERS rebuilt and now runs for him, with the results and amount spent he cares about most highlighted in red.
Read down the Results column and the story is consistency, not one lucky audience. All nine of Trevor's ad sets returned leads, and not one came in above $14.50. His two cheapest, Broad//Houston +15mi and Prospecting//Interest Stack v3, booked leads at $3.59 and $3.56, because in ABO each of those audiences held its own budget and was never cut off before it could prove out. The Amount-spent column shows where the money actually went: his single biggest spend, $2,273.58 on the Pressure Washing interest audience, still returned 306 leads, the highest count of any set.
For a Pressure Washing business the math runs heavily in Trevor's favour. A single repair ticket is worth a few hundred dollars and a cleaning job runs into the thousands, so at $9.45 a lead even a low close rate covers the ad spend many times over. The 771,460 impressions and 391,604 people reached are not vanity numbers here. They are how Trevor's fifteen separate budgets kept every audience fed long enough to find the cheapest path to a booked job, which is exactly what the next section, the structure behind this account, is built to do. Further down, the 30-day graphs zoom into a single representative $86/day lead ad set, day by day, so you can see how one audience behaves before you scale to nine.
How the numbers reconcile
771,460 impressions × 4.07% CTR = 31,398 clicks · $29,588 ÷ 31,398 clicks = $0.94 per click · 3,131 leads ÷ 31,398 clicks = a 9.2% form-completion rate · $29,588 ÷ 3,131 leads = $9.45 per lead · 771,460 impressions ÷ 391,604 reach = 1.97 frequency. Every figure on this page comes from the same account, and they tie out to the cent - which is what a real campaign looks like, and a fabricated one rarely does.
From leads to dollars
A $9.45 lead only matters next to what a booked job is worth, so do the math conservatively. At a 20% close rate, 3,131 leads become roughly 432 booked jobs; at a $350 average repair ticket that is about $151,000 of work against $29,588 in ad spend - and a single $6,000 system install already pays the entire 30-day spend back, twice. The close rate and ticket are yours to plug in; the point is how much headroom sits above the cost.
Trevor runs a local Pressure Washing business serving a single Houston ZIP, and that ZIP is a tight, crowded field, several local Cleaning firms chasing the same homeowners with near-identical rates and offers. Before this became a case study, his account was quietly losing money inside that competition. That is where AI DOERS - the agency Madhuranjan Kumar founded - stepped in. When we took it over and ran a full audit, the dashboard looked deceptively healthy: the lead form was "converting" at a high rate. The problem was who was converting.
He was spending about $316 a day on a single, over-targeted setup aimed at that one contested ZIP. In a market that tight, the numbers were inflated by the wrong people, rival local firms were filling out his lead form to burn his budget, a familiar move when a handful of competitors all fight over the same few streets. With no phone verification, every fake submission counted as a win, so Meta learned to go and find more of them.
The structure made it worse. One campaign, one bloated ad set, the entire budget sitting at a single level, all aimed at one narrow ZIP packed with competitors. Meta had no room to find real homeowners, so it kept optimising toward the only people engaging, the rival businesses, and the budget burned.
The first fix was structural. We moved Trevor onto a correctly configured Business Manager, split the account into the campaigns and ad sets shown below, added one-time-passcode verification to kill the fake leads, and gave Meta the room it needed to optimise toward real homeowners.
That turnaround, from a local underdog burning $316/day against its own competitors to a structured account producing 3,131 verified leads, is the rest of this page. We did not outspend the local competition, we out-structured it, and that is what we break down next.
Trevor did not run one big campaign and hope. He split his account into three Lead-Generation campaigns holding fifteen ad sets, and he put the budget at the ad-set level instead of the campaign level. That choice is called Ad Set Budget Optimization (ABO), and it is the single biggest reason his cheapest audiences survived long enough to win. The diagram below is Trevor's actual account tree.
Read the tree from the top. Each of Trevor's three campaigns owns their share of the fifteen ad sets, and every ad set wears its own daily-budget badge, ranging from $40 to $95 a day depending on how the audience performs. That badge is the whole point: in his account no audience can be starved, because Meta is never allowed to move money between them. His $86-a-day lead ad set, the one graphed later on this page, is just one of the fifteen, so he can see which audience and which hook wins without any of them dragging the others down.
Trevor did not assume ABO was right, he tested it. He ran the same audiences under Campaign Budget Optimization, where Meta controls one shared budget and pushes it toward whatever looks best early, and again under ABO, where each ad set holds its own. Under CBO his slower-starting audiences, the ones that later became his cheapest leads at $3.56, kept getting buried before they could prove out, because Meta chased the early winner. Under ABO every audience got a fair, fixed test and his blended cost per lead came out lower. After enough runs the verdict was clear for his account, so Trevor stayed on ABO and now scales the winners by hand.
A campaign is only as strong as the place and the person it points at, and Trevor's was specific about both: a dense downtown market with constant year-round cleaning-and-wash demand, and one homeowner inside it at the moment a move-out, a listing, or grime that finally has to go. Here is the ground truth for 77071, straight from the local data.
Those 26,990 residents and 10,090 households are packed into roughly 2 square miles of dense urban core Houston, so the audience is concentrated rather than scattered, every dollar reaches a tight, mostly-homeowner population. Houston humidity grows mildew on siding and decks, and constant move-ins and listings keep deep cleans in demand, which makes cleaning a need-it-now purchase the moment the home needs a clean rather than a planned one. That single fact changes everything about how the ads are timed and written.
So how crowded is the field inside that map? Around 25 Cleaning and maintenance companies work this stretch of dense urban core Houston - and here is the part that decides the whole case study: not one of them is advertising on Facebook or Instagram. They are all crowded onto the same Google search page and the same map pack, elbowing each other for the same clicks, while the entire Meta auction across 77071 sits wide open. That is why one $86-a-day ad set can land in front of nearly every homeowner in the ZIP at 2 views each: there is simply no one bidding against it. Estimated Meta reach for the area runs 14,925-17,948 people, comfortably more than that budget needs.
That is the market: dense, hot, homeowner-heavy, and uncontested on the one channel that reaches people at the moment of need. Now here is the person it was all aimed at.
They're moving out, listing the house, or the siding and driveway are covered in grime. They are on the couch with their phone, scrolling Facebook, and they want a trusted local crew booked this week, not next month.
This is why the leads convert and stay cheap: the person is a homeowner who can authorise the work, in a market where the need is urgent and unavoidable, reached on the device they already hold during the exact hour a move-out hits or the grime finally has to go.
Here is why this is not a one-off. Downtown Houston is ringed by neighborhoods built from the same raw material: dense, homeowner-heavy blocks with constant move-ins, listings and humidity-grown grime, and a local cleaning market that has not yet discovered Meta. Each one is its own auction, its own audience, its own $86-a-day ad set - you do not stretch one campaign to cover them, you run a fresh one for each. These are the areas immediately around Trevor's, drawn from our local-business dataset.
Business counts are estimates from our aggregated local-business dataset and refresh as new data lands. "Wide open" means no local cleaning business was detected running Meta ads there at last scan. Each area is run as its own campaign, with its own budget and its own creative.
Over the 30-day test we ran the same Houston audiences under both Campaign Budget Optimization and Ad Set Budget Optimization, several ad sets inside each, to find the delivery that held the lowest cost. This one $86-a-day lead ad set put 67,445 impressions in front of 34,236 unique people. On the graph, the impressions line (every time the ad showed) and the reach line (the real people behind those views). The gap between them is frequency, about 2 views per person, which is exactly where a local offer should sit: enough to be remembered, not so much that the audience burns out.
Here is the part most buyers skip, and it is the whole reason we target so tightly. Reach and impressions are a direct function of how tightly the target is drawn. We deliberately held it narrow, ZIP 77071 plus a small radius, so every one of those 34,236 people is a homeowner who can actually book a cleaning job in this service area. Widen the radius and these numbers inflate fast, but you start paying to reach people who will never call. Tighten it to a single ZIP and the budget concentrates on buyers who convert, which is why cost per lead stays under $15 here while a competitor spraying the whole metro pays more for worse leads. Narrow is not a limitation, it is the strategy. Run this same setup across fifteen audiences and the account reached 391,604 people on the same logic.
The takeaway: tight targeting is the whole reason these leads stay under $15 - a narrow ZIP means almost every impression lands on a homeowner who can actually book a cleaning job.
Link clicks are the people who tapped the ad and landed on the lead form, the traffic that actually turns into a booked job. Over 30 days this $86-a-day ad set drove 2,745 link clicks at a 4.07% click-through rate and about $1.22 a click (roughly $1,573 of spend across the 30 days). Engagement is everything else the ad earned, reactions, comments, shares, saves and time spent on the ad, which came to roughly 4,666 interactions. On the graph the link-clicks line and the engagement line.
Both lines matter, for different reasons. Clicks are the direct road to a lead. Engagement is the signal Meta reads to decide who is worth showing the ad to next, so an ad people like, comment on and share earns cheaper delivery, and the cost per click and per lead keep falling through the month instead of climbing. On a local cleaning offer that engagement is also social proof, neighbors seeing neighbors react in their own ZIP, which a Google search ad can never give you. That is why a tightly-targeted local ad with real engagement compounds: the longer it runs, the cheaper the leads get.
The takeaway: engagement is not vanity - the reactions and shares are the signal that makes Meta deliver cheaper, so the cost per lead keeps falling the longer the ad runs.
This is the only number that pays the bills. Of the people who clicked, 267 finished the form and became verified leads in 30 days, a little over 10% of everyone who clicked, which is a strong conversion for home services. Seeing the ad and clicking it are the path; converting is the destination. The graph is the running total, so you can watch the leads bank up: they start on day 2 to 3 and climb in a steady line to 267 by day 30, with no dead patch where nothing comes in.
Every one of those 267 is OTP-verified before it counts, so it is a real homeowner who answered, not a junk number padding a report. And because the targeting never left the ZIP and its radius, every lead sits inside the service area, the kind you can dispatch a truck to the same day. Run this same setup across fifteen audiences and the conversions add up to the 3,131 leads on the account.
The takeaway: OTP verification is why a 10% conversion is real money, not a padded report - every one of the 267 leads is a homeowner who answered the phone.
Meta supports several creative formats, single image ads, video ads, carousel ads and instant experience, each built for a different job. Trevor chose to run two of them: a single image ad and a short video ad. The single image loads instantly and reaches a homeowner the moment the home needs a clean, while the video builds trust and earns the comments, shares and watch time that tell Meta the ad is worth showing, which steadily brings the cost of each lead down. Carousel and instant experience are kept in reserve for offers that need to walk through several services at once; for a focused Pressure Washing offer, two formats keep the test clean and the budget concentrated.
Primary text: "Need a deep clean, a move-out scrub, or grimy siding washed? Houston's cleaning crew handles it, with honest, upfront pricing and a free quote. No surprise fees, book your clean today."
Headline: "Home Cleaning & Exterior Washing - Houston." A short walkthrough of a quick quote and a same-week clean, closing on a free-estimate call to action.
Everything Trevor did, you can copy. Here is the exact build, screen by screen, in the order Trevor created it: choose the objective, name the campaign and set its budget strategy, build the ad set, then assemble the ad. Follow it and you get the same engine. Every screen below is the real Ads Manager configuration.
Meta asks for one business goal before anything else. Trevor selects Leads, because a local cleaning business does not need reach or cheap traffic, it needs phone-verified contacts it can call and book. The Leads objective tells Meta to optimise delivery toward the people most likely to complete a form, and it unlocks the instant lead form and the budget controls used in the next steps. Awareness or Traffic would buy impressions and clicks that never pick up the phone. With Leads selected, the Continue button activates.
Why Leads and not Conversion ads? Meta offers both. The difference decides where the homeowner ends up, and it is the reason Trevor runs Lead Ads.
The campaign is named so it stays easy to find later, for example Pressure Washing - Houston. Then comes the decision that shapes everything: the budget strategy. Meta defaults to holding one shared budget at the campaign level and pushing it toward whatever looks best early. Trevor turns that off and puts the budget at the ad-set level instead, which is Ad Set Budget Optimization (ABO). That guarantees every audience gets a fair, fixed test, here $86.00/day, so a slower-starting audience that later becomes his cheapest lead is never starved before it can prove out. The max daily cap is $103.25 and the weekly cap $413.00, so the account never overspends in a demand spike.
This card decides who the budget reaches. Trevor targets homeowners aged 26-65 within a 9-mile radius of Houston, with home-improvement and cleaning interests as guardrails on top of Advantage+ audience. The location and homeowner filters keep the spend on people who can actually book a cleaning job nearby, and Meta estimates a 15.84% lower cost per result with Advantage+ audience enabled.
This card decides what counts as a result and filters out junk. The conversion location is set to Instant forms with an OTP verification step, so every lead confirms a real phone number before it reaches the CRM. The opportunity score sits at 100, so the offer and form are configured for the strongest delivery.
This card decides where the ads run. 15 placements are on, led by Facebook and Instagram Feed, Stories, Reels and Marketplace, with low-intent surfaces such as Audience Network rewarded video switched off, so the budget stays on the placements that actually book Cleaning jobs instead of cheap, accidental impressions.
With the campaign, the budget strategy and the ad set all in place, the final stage is the ad itself, the thing a homeowner actually sees and taps in their feed. Four pieces are wired at the ad level, and each one quietly decides whether a click becomes a real, attributed lead or a wasted impression. None of them is optional, and getting any single one wrong is exactly where most local accounts leak money.
Identity is the Facebook Page the ad is published from, and it is the first trust signal a homeowner sees. The ad carries Trevor's real business name, profile photo and the reviews attached to that Page, so a stranger scrolling the feed is looking at a recognised local company, not an anonymous box. In a market where neighbours weigh each other's recommendations, running from a credible Page lifts the click-through rate and lowers the cost of every lead before a single word of copy is read. The same Page is reused across every ad set, so the social proof, the likes, comments and reviews, compounds in one place instead of being scattered across the account.
Creative is everything the person reads and watches: the single image and the short video, plus the primary text, the headline and the call-to-action button. This is where the offer is made, same-day Pressure Washing, honest upfront pricing, a free estimate, in the few seconds before they scroll past. Trevor runs two formats so Meta can learn which one a given homeowner responds to, and the copy speaks to the moment the home needs a clean rather than listing features. Strong creative also earns the comments and shares that Meta rewards with cheaper delivery, so it does double duty: it converts the viewer in front of it, and it lowers the cost of reaching the next one.
Destination decides where the click lands, and Trevor points it at the instant lead form built in the previous step, not an outside website. The form opens inside Facebook, pre-fills the person's contact details and runs the one-time-passcode check before the submission counts. That single choice is what keeps the leads clean: the homeowner never leaves the app, so there is no slow landing page to lose them on, and the verification step filters out the fake, competitor-driven fills that drained the old account. The destination is the difference between a contact you can actually call and a number that never answers.
Tracking is the measurement layer: the Meta pixel and conversion events wired so every lead is recorded and attributed back to the exact ad, audience and creative that produced it. Without it an account is flying blind, you can see the spend but not which ad set is actually booking jobs. With it, Trevor can see what each $86/day ad set produced and at what cost, scale the winners and cut the losers with confidence, and feed that conversion data back to Meta so the algorithm keeps optimising toward real, qualified homeowners instead of noise. It is the reason every number on this page is measured, not guessed.
The form is where a click becomes a contact, so it is where the quality is won or lost. Meta's builder runs in five stages, and Trevor's choices here are the reason the leads stay clean. The biggest one is on the very first screen: form type.
1. Form type - Higher intent, with one-time-passcode verification. Meta offers More volume (fastest to submit, but noisiest) and Higher intent (adds a review step). Trevor picks Higher intent and turns on require a one-time passcode, so every lead confirms a real, reachable phone number before it counts. This single setting is the biggest junk filter on the page and the reason cost per lead can sit under $15 and still be qualified.
2. Intro. A short greeting and headline that set the expectation, for example same-day Pressure Washing with a free estimate, so the person knows what they are signing up for.
3. Questions. Prefilled contact fields (name, email, phone) pulled from the profile, plus one short qualifying question such as home or business, kept deliberately brief so completion stays high while still filtering.
4. Privacy policy. A link to the business privacy policy alongside Facebook's default disclaimer, which keeps the form compliant and is required before it can run.
5. Ending. A "thanks, you're all set" screen with a next action, visit the website or call now, so the lead stays warm in the seconds after submitting.
The day the campaign goes live, nothing is optimised yet. Meta enters a learning phase, spending a little to work out who actually fills the form, so the first numbers always look worse than where the account will settle. The single biggest mistake an owner makes here is panicking in week one and editing the budget, which resets that learning and starts the clock over.
Read the curve below. In the first 15 days the cost per lead averages about $11.46, dragged up by the first few days near $10 while Meta is still learning. Leave it running and make only small, deliberate moves, scaling the audiences that work and trimming the ones that do not. By day 50 of continuous monitoring the cost per lead settles to roughly $8.77, and across the whole account it blends to $9.45. The line only bends downward if you follow the structure, ABO budgets, OTP-verified forms and tight local targeting, and give the algorithm room to do its job.
The takeaway for an owner: judge a paid account on day 50, not day 5. Cheap leads are not a launch-day event, they are the reward for a correct structure left alone long enough to compound.
Everything up to here describes one campaign build. That is the unit, not the finished machine. The real leverage comes from running multiple campaigns, three, four, five, on up to nine or ten, and giving each one its own separate budget instead of pooling them together.
Separate budgets are the whole point. Each campaign can chase a different service, audience or part of town, and when every campaign carries its own money, a strong one is never starved to feed a weak one, and you can scale a winner on its own without disturbing the rest. That is exactly how Trevor's account reaches 3,131 leads, fifteen audiences, each funded and optimised independently. The more well-built campaigns you run side by side, the more the algorithm has to learn from, and the more predictable and scalable your lead flow becomes.
For years, local service businesses lived on free organic traffic, ranking on Google and showing up in the map pack. That ground has shifted under them. On 21 May 2026 Google rolled out its May 2026 core update (it finished in early June), the latest in a run of updates that keep reshuffling local and service results. On top of that, AI Overviews now answer many searches directly inside Google, and where those answers appear, people click through to a website far less often. Ranking well is no longer the same as getting the phone call.
"Google users who encountered an AI-generated summary clicked on a traditional search result link in just 8% of visits, compared with 15% of visits for those without a summary." Only 1% clicked a link inside the AI summary itself.
— Pew Research Center, July 2025 (68,879 Google searches analyzed)
For a local operator that is the core problem: organic is slower, less certain, and increasingly intercepted before the user ever reaches your site. You cannot wait months hoping an update hands your traffic back. This is why so many local service providers have moved their lead generation onto paid ads, where the volume and the cost are predictable and under your control.
Facebook and Instagram are where that shift lands hardest in your favour. Meta puts your offer in front of homeowners at the moment of need, by who they are and where they live, completely independent of how Google's rankings move this month. A structured Meta lead campaign, the kind this page walks through, is no longer a nice-to-have alongside SEO. For most local businesses in 2026 it has become the most reliable way to keep the leads coming in.
The page leads with the clean a Houston homeowner searches most, but the campaign is not limited to it. The same Meta setup, the same homeowner audience, the same offer and the same lead form book work across all fifteen cleaning services. Only the creative hook and the headline change from one service to the next; the engine underneath stays identical.
That is what makes the model scale. An operator does not build a new campaign for every service, they run one proven structure and swap the angle, so a single lead ad set can produce deep-clean, carpet, pressure-washing or gutter-cleaning leads the same way it produces house cleaning leads. Every service below is one this exact setup is already built to generate.
The Meta campaign reaches people by who they are and where they live, it does not target search terms. The page underneath it does. This page is built to rank organically in Google for the local Cleaning searches a Houston homeowner actually types, so the same page that documents the campaign also brings in free leads from search, with no ad spend attached. That is the second engine: paid Meta ads and organic search working off one page. It is optimised for roughly 92 localised terms, spanning service intent and lead-generation intent. A sample of what it ranks for:
Today Trevor's phone rings most mornings before he has finished his coffee, and his calendar fills from a form he never has to think about. The shops a few blocks over are still bidding against each other for the same handful of Google clicks, paying more each month for less. Trevor owns the one channel they have not touched, in the one ZIP that matters to him, for $9.45 a lead. That is the whole difference: not a bigger budget, a better-built machine - and it is the exact machine the team at AI DOERS builds for home-service owners across the country.
Grab the Facebook Ads Blueprint — 10 real local campaigns you can copy — then book a 30-minute audit and we'll show you exactly where your cost per lead is leaking. No retainer until the leads come in.