What contractors mean when they ask about cost per appointment (and why the number alone won't help you)
The question shows up in contractor forums constantly: "what's a good cost per appointment for Meta ads?" Someone posts a number. Replies pile on with completely different numbers. Nobody agrees. The thread dies without anyone being helped.
That's not because contractors are asking the wrong question. It's because cost per appointment is a ratio, and ratios need both sides filled in before they tell you anything. A $40 cost per appointment is either a bargain or a bleed-out depending on what happens next, and the forum thread never gets to that part.
What you're actually trying to calculate
The real question under "what's my cost per appointment" is: will this pay off? That's a profit math question, not an ad metric question.
To answer it honestly, you need three numbers: what you charge per job, how many appointments actually convert to paid work, and what percentage of leads that come in are even in a location you can service. Strip out any one of those and the cost-per-appointment figure is decoration.
Take a detailer. If his average job is $100 and he closes 50% of appointments, he can afford to spend about $50 per appointment before he breaks even on the first job. But if the leads are coming from 90 minutes away, the math collapses completely. He can't service them without subcontracting, and once he's paying someone $20 to run a job he didn't price for the drive, a $35 cost per appointment isn't a win. This is exactly what happened to a prospect who came to a recent ASN call. His previous agency had generated leads during a trial period, but the targeting was too broad. Leads were coming from 1.5 to 1.75 hours out. He ended up subcontracting jobs at $20 each just to avoid wasting the leads entirely, and the agency quoted $1,000 per month at the end of the trial with no forewarning.
The cost per appointment looked fine on paper. The business result was that he lost money.
Why ticket size changes everything
A roofing company and a detailer should never use the same cost-per-appointment benchmark. A roofer with a $12,000 average ticket can tolerate a $200 cost per appointment and still run a healthy margin. A detailer at $100 per service cannot.
This matters because agencies pitching you a number ("we average $18 per lead") are not hiding their math. They're just showing you the only number that looks good in a vacuum. Lead volume and cost per lead are the metrics that are easiest to produce and hardest to connect to your actual bank account.
The Safe Step rubber resurfacing campaign ASN ran is a useful illustration. 247 leads at $11 per lead on $2,800 total spend. Those numbers are specific enough to mean something because the ticket size on a rubber resurfacing job is high enough that even a moderate close rate turns $2,800 in ad spend into significant revenue. If you tried to evaluate that campaign by CPL alone, stripped of the business context, $11 looks good but you wouldn't know whether it was transformational or average. Paired with ticket size and close rate, it tells a complete story.
When you're evaluating any agency's case study, or any benchmark from a forum, the first thing to ask is: what does a job actually pay in that trade? If the case study is for a service with a $4,000 average ticket, the math doesn't transfer to your $200 window cleaning jobs. This was a real problem in ASN sales calls where a prospect rejected a case study from a different industry entirely. He was right to reject it. Generic proof doesn't tell you whether the same performance will hold in your specific trade.
How service radius interacts with the numbers
Geographic targeting is the variable that almost never gets discussed when contractors compare notes on ad performance, and it's the one that most directly controls whether a generated lead is usable.
A lead 3 miles away from a solo painter's home base is a different asset than a lead 90 minutes away. They might show up identically in an agency's reporting dashboard. Same form fill. Same CPL. One becomes a booked job. One gets ignored or subcontracted at a loss.
The way this shows up in practice: agencies optimizing for lead volume have an incentive to cast a wide geographic net during early campaigns. More leads make the trial period look productive. The contractor, who is thinking about their operational radius, not campaign metrics, realizes the problem only when they start calling leads. By then, the contract is signed, the setup fee is paid, and the exit costs more than staying.
When you're evaluating an agency or comparing notes with other contractors, the service radius question is as important as the CPL question. A good answer to "what's your cost per appointment" has to include something like "within a 20-mile radius" or "targeting our three core zip codes," otherwise the number is not anchored to anything real.
What to actually ask before you test Meta ads again
If you've been burned before, the cost-per-appointment question is usually a proxy for: "how do I know this won't be a repeat of last time?" The real checklist is more specific than a single metric.
First, work out your own break-even before talking to any agency. Take your average ticket, multiply it by your typical close rate on appointments, and that gives you the maximum you can spend per appointment and still profit on the first job. If your average job is $400 and you close 40% of appointments, your break-even cost per appointment is $160. Any agency quoting you lower than that is in the viable range. Any agency who can't connect their CPL to your break-even math isn't doing the analysis.
Second, ask for proof from a business model close to yours, not just the same category. A pressure washing case study doesn't transfer to epoxy flooring. A roofing case study doesn't tell you anything about HVAC. The Safe Step case study moved a skeptical prospect in a live call specifically because the trade and ticket size were close enough to her own business to be legible. Generic ROAS numbers from a mismatched industry close conversations, they don't open them.
Third, understand what happens to a lead in the first five minutes after the form is filled. An appointment rate isn't just a targeting question, it's a follow-up question. A lead that doesn't get contacted within a few minutes of opting in goes cold fast. If the agency's model generates leads and then relies entirely on you to follow up manually while you're on a job site, the cost per appointment will always look worse than it could.
If you're ready to run the math for your own business
ASN works with home service contractors across Canada and the US on Meta ads campaigns where no setup fee and no contract are the starting point, not the pitch. If you want to talk through the specific numbers for your trade, ticket size, and service area before deciding whether paid ads make sense for you right now, the contact page is the right place to start.
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