Blog What cost per appointment actually looks like across la...

What cost per appointment actually looks like across landscaping, driveway, and renovation trades on Meta

The number agencies love to lead with is cost per lead. It's the easiest metric to make look good. A lead is just someone who filled out a form. Whether they answered the phone, whether they were in your service area, whether the job was worth driving to, whether they ever booked anything at all, none of that changes the cost per lead number on the report.

Cost per appointment is different. An appointment means a real person, at a real address, expecting you to show up. That number is almost never in the case studies agencies share publicly, because it's harder to control and harder to make look clean. Understanding what it actually looks like across different trades is the difference between evaluating a Meta ads campaign correctly and getting sold a number that doesn't mean anything.

Why the gap between cost per lead and cost per appointment is bigger than it looks

Before getting into trade-specific numbers, it's worth being clear on how leads become appointments in the first place, because that process is where most of the cost gets hidden.

A landscaping company runs Meta ads, gets 80 leads in a month at $12 each. Total spend: $960. The agency sends a report showing $12 CPL and calls it a win. What the report doesn't show: 30 of those leads never picked up the phone. Another 20 were outside the serviceable radius. Fifteen responded but wanted a quote range over text and ghosted when they got one. Ten booked an estimate appointment and two cancelled the day before. That leaves eight actual appointments from 80 leads. Real cost per appointment: $120.

That math isn't unusual. It's actually close to average for a trade where jobs are seasonal, competitive, and where homeowners often request multiple quotes. The $12 CPL looked like a good number. The $120 cost per appointment is the number that tells you whether the campaign made business sense.

Now stack that against what the job is worth. A seasonal lawn care contract at $200/month recurring is a very different ROI than a one-time mow at $60. A driveway resurfacing job starting at $3,000 is a different conversation than a small patching job. The cost per appointment only has meaning when it sits next to the average job value in your specific trade, in your specific market.

What the numbers actually look like by trade

These are not averages pulled from a research report. They're reference points from real campaigns and real sales call context in the trades ASN works with.

For a rubber resurfacing company (Safe Step), Meta ads produced 247 leads at $11 cost per lead on $2,800 total ad spend. Rubber resurfacing sits between landscaping and renovation in ticket size, somewhere in the $800 to $2,500 range depending on scope. At that CPL, even accounting for a 25 to 30 percent lead-to-appointment conversion rate, the cost per appointment lands well under $50. Against a job that starts at $800, that math works comfortably.

For detailing, a one-person operation with a $100 to $200 per job average is working with tighter margins. A campaign running at $20 to $40 per appointment is workable. Anything above that and the margin on a single-visit detail gets thin fast. The campaigns that work for detailers typically use a promotional entry offer (a discounted first detail) to lower the barrier, then convert customers to recurring monthly maintenance. The cost per appointment on the front-end looks high against a single job. Against a $100/month recurring customer, it looks different.

Landscaping and driveway work tend to be seasonal and high-competition, which pushes CPL up in peak months. A driveway sealing or paving job with a ticket in the $1,500 to $5,000 range can absorb a higher cost per appointment, but only if the appointments actually convert to proposals and the proposals close. A campaign showing 40 leads at $25 each sounds reasonable until the operator realizes that only six of those leads resulted in an on-site estimate, and only two of those closed.

Renovation trades (epoxy flooring, painting, concrete coatings) typically have higher average job values and longer sales cycles. Cost per appointment can legitimately run $80 to $150 without being a bad campaign, because a single closed job at $4,000 to $8,000 still produces a strong return. The mistake contractors in these trades make is comparing their cost per appointment to landscaping benchmarks, which sets a false expectation.

The two things that make cost per appointment swing dramatically

Lead volume is downstream of ad targeting. But cost per appointment is downstream of two things that have nothing to do with the ads themselves: how fast you follow up, and whether the leads are geographically usable.

Geographic targeting is the version of this problem that shows up most often and gets discussed least. A solo detailer running ads in a major metro can generate 30 leads in a week, but if 20 of them are 90 minutes away, the effective lead pool is 10. Cost per usable lead just tripled. The campaign metrics look fine. The business result is not fine. This is the exact pattern that gets described when a previous agency "got me leads but they were all too far."

Follow-up speed is the other variable. A lead who fills out a Meta Instant Form at 7pm and gets a text response at 7:01pm is in a completely different frame than a lead who gets a call the next morning. The conversion rate from lead to booked appointment drops sharply the longer the gap. For a one-person or two-person operation that's actually out on jobs during the day, that gap is almost unavoidable without a system that responds automatically. The cost per appointment doesn't change because the lead went cold. The same ad spend just produced fewer appointments.

Both of these problems are solvable at the campaign setup level. Geographic radius targeting can be locked to a real serviceable area from the start. Automated follow-up (ASN uses Remi, an AI assistant that responds to leads within seconds) can close the response window without requiring the contractor to stop what they're doing mid-job.

How to evaluate a Meta campaign before you're in one

The number to ask for before committing to any Meta ads campaign is not CPL. It's the booked-appointment rate from leads, and ideally that number from a campaign in a trade close to yours.

When ASN showed a prospect in epoxy flooring the Safe Step results (247 leads, $11 CPL, $2,800 spend), it moved the conversation because rubber resurfacing is close enough in trade type and ticket size to be meaningful. A landscaping case study shown to a roofing company doesn't do that work. Generic ROAS numbers don't either, because ROAS on a low-ticket product looks nothing like ROAS on a $4,000 flooring job.

The second thing to check is the geographic setup. Ask exactly how the service radius was configured. Ask whether the targeting was adjusted after the first week based on where leads were actually coming from. A campaign that was deliberately kept broad to inflate lead count during a trial period is not a campaign that worked for you, regardless of what the lead numbers say.

If you want to see what this looks like with your trade and your service area before signing anything, the right next step is to talk through your specific situation at americanservicenetwork.com. No setup fee, no contract, and the conversation starts with your numbers, not ours.

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