A Facebook Ads case study is most useful when it shows the actual sequence of decisions behind a campaign, not just a final results screenshot. Below is an illustrative walkthrough — a composite scenario built from the kinds of decisions practitioners make on real accounts — following a mid-size home services business from a blank ad account to a scaled, profitable campaign.
The scenario: a regional HVAC company wants to generate booked maintenance appointments during shoulder season, when call volume naturally dips. The account has a pixel installed but has never run a structured campaign. What follows is the process, decision by decision.
Before any campaign gets built, the real business goal has to be pinned down in specific terms. “More leads” isn’t a workable target — “booked maintenance appointments at a cost the business can absorb given average job value” is. For this scenario, the team learns the average maintenance visit converts to roughly $220 in immediate revenue plus a meaningful chance of a larger repair down the line, which sets a rough ceiling on acceptable cost per lead.
This step also surfaces what “success” will be measured against — calls, form fills, or both — and who on the client’s side is responsible for answering the phone and logging outcomes. Skipping this conversation is the single most common reason a campaign gets judged unfairly later.
The pixel was installed correctly, but it was only tracking PageView — no Lead or Contact events were firing on the thank-you page or the call-tracking number. The first real work isn’t creative or targeting; it’s plumbing. The team adds a Lead event on form submission, connects CallRail so tracked phone numbers fire a Conversions API event, and confirms both show up correctly in Events Manager using test traffic before spending a dollar.
Only after events are verified does the campaign structure get built. This ordering matters: a campaign launched on broken tracking looks like it’s underperforming even when it isn’t, and the account never gets a fair read.
The team builds a single Sales campaign objective using Meta’s simplified structure, with campaign budget optimization on and one ad set targeting a 15-mile radius around the service area, layered with a 2% lookalike built from the client’s existing customer list. A second ad set tests Meta’s Advantage+ audience with only the radius as a hard boundary, to see whether automated targeting outperforms the manual lookalike once data starts flowing.
With a starting daily budget of $40, splitting further across more ad sets or objectives would starve each one of the volume needed to exit the learning phase. Two ad sets, each with a clear hypothesis to test, is the right amount of complexity for this budget — more structure isn’t more sophistication if the account can’t feed it enough data.
Three ad variations launch simultaneously: a short phone-shot video of a technician explaining what a maintenance visit actually includes, a static image of the branded truck with a clear seasonal offer, and a carousel showing before/after photos from a recent repair job. Copy leads with the specific pain point — “Is your AC ready for the first real heat wave?” — rather than a generic “Book now” line.
The offer is a free diagnostic check bundled with the maintenance visit, not a discount, because pricing discounts on HVAC services can read as suspicious to homeowners who associate cheap service with cut corners. Each ad routes to a short landing page with a single visible form above the fold and the tracked phone number in the header.
For roughly the first two weeks, cost per lead fluctuates significantly day to day — normal behavior while Meta’s delivery system is still learning who responds. The team resists the urge to pause or edit the ad set daily, since substantive edits reset the learning phase and extend the volatile period.
By the end of the learning window, a clear pattern emerges: the phone-shot technician video ad set outperforms the polished truck image on cost per lead by a wide margin, and the manual lookalike audience is outperforming the Advantage+ test. Both findings get documented — not just acted on — because they inform every future creative and targeting decision on this account.
Rather than touching the winning ad set, the team turns off the underperforming Advantage+ ad set and reallocates that portion of budget into the lookalike ad set, letting the winner scale rather than restarting a new test from zero. The underperforming truck-image creative is paused; the video and before/after carousel continue running since both are still generating leads at an acceptable cost.
A second video is produced in the same phone-shot, technician-led style but featuring a different team member, both to prevent creative fatigue and to test whether the format’s success depended on the specific person or the format itself. It performs comparably — confirming the format, not the individual, was the driver.
Once cost per lead stabilizes below the target threshold for two consecutive weeks, the team increases the daily budget in increments of roughly 20% every few days rather than doubling it overnight — a large single jump can throw the ad set back into a learning-phase-like instability. Two additional creative variations get introduced during scaling to prevent the existing ads from wearing out with the larger audience exposure.
By the end of the shoulder-season push, the campaign is generating a steady volume of booked maintenance appointments at a cost comfortably below the ceiling set back in step one — and, just as importantly, the client’s team has clean data on which creative formats, offers, and audiences actually work for future campaigns.
The pattern that repeats across real accounts, illustrated here in one composite scenario, is: fix tracking before spending, structure conservatively for the actual budget, test a small number of real hypotheses rather than many small variations, let the learning phase run its course, and scale gradually off documented winners. None of that requires a large budget or an unusual amount of platform sophistication — it requires discipline and patience, which is a large part of what separates accounts that compound over time from accounts that churn through budget chasing daily noise.
Give a new ad set at least its full learning phase — generally until it has accumulated roughly fifty conversion events — before making a judgment call, and avoid editing it daily in the meantime.
Launching before conversion tracking is verified — a broken or incomplete pixel and Conversions API setup makes even a well-built campaign look like it's failing.
Keep it to as few ad sets as the budget can meaningfully feed; splitting a small daily budget across many ad sets usually starves all of them of the data needed to optimize.
Wait for cost per result to stabilize at an acceptable level for a sustained stretch, then increase budget in modest increments rather than large jumps to avoid resetting delivery stability.
Both matter, but in practice creative is often the bigger lever — the same audience frequently responds very differently to an authentic, person-led video versus a polished static image.
For trust-sensitive categories like home services, a steep discount can unintentionally signal low quality; a free diagnostic or low-commitment offer often converts better because it lowers risk without cheapening the brand.
Terry has 30+ years in software and SEO. He’s the founder of Salterra Digital Services and SEO Spring Training, host of the Roundtable SEO Mastermind, and lead instructor at SEO University — teaching the exact tactics his team uses on client work.
This guide is one lesson from the Facebook Ads with GoHighLevel course. Get every lesson, framework and checklist — plus the full 38-course catalog — inside SEO University.
Practitioner-focused training across the full digital marketing stack — from technical SEO to conversion optimization and the AI search era. By Salterra Digital Services, since 2011.