Why Likes and Followers Are the Wrong Scoreboard
A cheap social package sells vanity metrics because vanity metrics always go up. Post five times a week and your follower count climbs, your reach climbs, your "engagement" climbs. None of that pays for diesel. A roofing crew doesn't get dispatched because a post got 40 likes. It gets dispatched because someone messaged, called, or filled out a form after seeing job-site content and decided this crew looks like the one to hire.
The disconnect happens because reach and engagement are the metrics platforms hand you for free in the dashboard, and they're the metrics that make a management fee easy to justify without proving anything downstream. A contractor paying $400 to $800 a month for "social media management" deserves to know whether that spend produced a lead, not whether it produced an impression.
Here's the test: pull up your last 90 days of posts. Can you point to a specific post, reel, or ad and say "that's the one that got the Henderson kitchen remodel"? If the answer is no because there's no tracking in place, you don't have a social media problem yet, you have a measurement problem. Fix the measurement first, then judge the channel.
Vanity metrics aren't worthless entirely. Reach tells you whether your content is reaching new people versus the same 200 followers on repeat. Watch-time on a reel tells you whether the hook works. But these are diagnostic numbers for improving the content, not proof the content is making money. Keep them in a secondary tab. Keep cost-per-job on the dashboard that matters.
The Three Numbers That Actually Matter
Every social ROI calculation for a home-service business comes down to three inputs. Get sloppy on any one and the final number is fiction.
- Total monthly investment. Ad spend in Meta Ads Manager, plus production cost (a crew member's time shooting job-site footage, a freelance editor, or a management fee), plus any boosted-post spend. Owners routinely forget to count their own labor time here, which understates true cost.
- Trackable leads. Not "messages received," but leads you can trace to a social source specifically: a DM that converts to a phone call, a lead-form submission from a Meta or Instagram ad, a call to a phone number used only in your Instagram bio or Facebook page.
- Jobs closed from that lead pool. Your estimator or office manager needs to log lead source at intake, every time, not just when it's convenient. Without this step the whole exercise collapses back into guessing.
Once you have those three, the math is simple: cost per lead is total spend divided by trackable leads. Cost per job is total spend divided by jobs closed. Compare cost per job against what you already pay for leads from other channels (a paid lead aggregator, pay-per-lead directory, referral incentive) and you have an apples-to-apples number an owner can act on.
The gap most shops hit isn't the math, it's step two: nothing on the social side is set up to be traceable in the first place. A generic Facebook page posting job photos with no call-to-action, no tracked number, and no lead form isn't unmeasurable because social doesn't work. It's unmeasurable because nobody built a path from the scroll to the phone.
There's a fourth number worth tracking once the first three are solid: lifetime value on jobs that originated on social versus other channels. A roofing lead from a lead aggregator is usually a one-time transactional buyer shopping three quotes. A follower who's watched your crew's reels for six months before calling often arrives pre-sold on your work specifically and is more likely to call back for the next project, or the gutter job after the roof, without a second bidding war. That's a real advantage of the channel, but it only shows up if you're tracking repeat business by original lead source, which most shops aren't set up to do yet.
Setting Up Trackable Paths Before You Post Another Photo
You cannot retroactively measure a channel you never instrumented. Before judging whether social is worth the spend, put these in place:
- A dedicated tracking number in your Instagram and Facebook bio links, distinct from your Google Business Profile number and your website's main line. Call tracking software (or even a free Google Voice number routed to your cell) tells you instantly which calls came from social.
- UTM-tagged links on anything you post that points off-platform, so your website analytics show traffic and form fills attributed to "facebook" or "instagram" as a source, not lumped into "direct."
- Meta lead forms or Instagram "Book Now" buttons for paid campaigns, which capture the lead inside the platform and let Ads Manager report cost-per-lead natively, no external tracking required.
- A lead-source field at intake your office staff actually fills in on every call and every estimate, not an optional dropdown that gets skipped when the phone's ringing off the hook.
Organic posts (the ones with no ad spend behind them) are harder to trace precisely because there's no ad platform doing the attribution for you. That's fine. Use the tracked number and UTM links consistently and you'll see the pattern over a quarter, even without perfect per-post attribution. Paid social campaigns are easier: Meta's own reporting will show cost-per-lead and cost-per-result directly in Ads Manager, no extra setup beyond the lead form or landing page itself.
Do this before you spend another dollar on management or ad budget. A shop that sets up tracking first and posts second will know within one quarter whether the channel earns its keep. A shop that posts for a year first and asks the question later has a year of unmeasurable spend it can't get back.
What Realistic Numbers Look Like
There's no universal cost-per-lead figure that holds across every trade and every metro, and any agency handing you one number as gospel across all trades is guessing. What you can do is build a realistic range for your own shop and compare it to what you already know a lead costs from other channels.
Start with what you already pay elsewhere. If a lead aggregator charges you $60 to $150 per lead depending on trade and region, and you close one in four of those, your effective cost per job through that channel is $240 to $600. That's your benchmark. Paid social, run well with a tight geographic radius and a specific offer, should land in a comparable range for high-consideration trades like roofing, remodeling, or HVAC replacement. It often lands lower for smaller-ticket recurring services like lawn care or gutter cleaning, where a lower-friction offer (a fall cleanup special, a same-week estimate) can move faster through a feed.
| Metric | What it tells you | Where to find it |
|---|---|---|
| Cost per lead (paid) | Efficiency of an ad campaign | Meta Ads Manager, per campaign |
| Cost per lead (organic) | Whether unpaid posting is pulling weight | Tracked number + UTM traffic, divided by spend |
| Close rate by source | Whether social leads are as sales-ready as other channels | Intake log / CRM tagged by source |
| Cost per booked job | The number that decides if the channel stays | Total spend ÷ jobs closed from that source |
Two variables move that range more than anything else: geographic radius and offer specificity. A campaign targeting a whole metro area burns budget showing ads to homeowners three towns over who will never call. A campaign narrowed to a 10 to 15 mile service radius around actual job sites spends every dollar on someone who could plausibly become a customer this month. The same discipline applies to the offer itself. "Follow us for updates" gets scrolled past. "Free estimate this week, panel upgrades booking into next month" gives a prospect a reason to act today instead of saving the post for later and forgetting it.
Judge on a full quarter, not a single month. Home-service buying cycles for anything above a small repair run weeks, sometimes months, between first seeing your content and calling. A single slow month doesn't mean the channel failed. A full quarter with no trackable leads at all usually means the tracking, the content, or the offer needs to change, not that social is inherently a dead end for contractors.
Organic vs. Paid: Measuring Them Differently
Organic posting and paid social ads are different tools with different measurement timelines, and treating them the same is where a lot of ROI conversations go sideways.
Organic content (job-site photos, before-and-afters, a reel of a crew tearing off a roof) builds a body of proof over time. Its ROI shows up less in immediate leads and more in what happens when a prospect who found you through a Google search or a referral checks your Instagram before calling. If your feed is empty or stale, that's a silent no. If it's active and shows real jobs, it's the deciding factor that gets the call made instead of scrolled past. That effect is real but it's genuinely harder to isolate to a single dollar figure. Track it as a supporting metric: are website visits and calls from people who mention seeing your work "on Facebook" or "on Instagram" increasing, even if they didn't click a tracked link.
Paid social ads are the opposite: fast, and directly measurable. A Meta or Instagram lead-gen campaign targeting a defined radius with a specific offer will show cost-per-lead inside the ad platform within days. This is where a real ROI number is easiest to get, because the platform is built to report it. If you're only going to measure one thing rigorously this quarter, measure your paid campaigns first. The reporting infrastructure already exists.
There's also a compounding relationship between the two that a lot of shops miss. A cold paid campaign to an audience that's never seen your name before tends to underperform a paid campaign layered on top of an active organic presence, because the ad isn't the prospect's first impression of the business, the feed already is. Shops that run both together often see paid cost-per-lead improve over a few months as the organic content builds recognition in the same local audience the ads are targeting. That's a real effect, but it's a reason to track both consistently, not a reason to skip measuring either one.
Don't let a management contract report only reach and impressions when paid budget is in play. If you're spending ad dollars, you're entitled to cost-per-lead and cost-per-result numbers, full stop. If a vendor can't produce those numbers for a paid campaign, that's a red flag on the vendor, not proof social ads don't work for contractors.
When Social Media Isn't Worth the Line Item
Some shops shouldn't be running paid social spend at all, and it's worth saying that plainly before selling anyone on it. If your average ticket is small and margin is thin (a one-time gutter cleaning, a minor repair call), the math on paid social ads rarely closes: cost-per-lead in a competitive metro can eat the job's margin before the truck rolls. Organic posting still has a place there because it's cheap and builds trust, but don't force a paid campaign onto a trade where the ticket size can't support it.
Social also isn't the right first fix for a shop with no online presence at all. If people can't find you when they search your name or your trade plus your city, the map pack and website matter more urgently than the Instagram feed does. A gorgeous reel doesn't help if a prospect searches "roofer near me," can't find you, and calls a competitor instead. Social supports search and reputation, it doesn't replace them.
And if a shop has no capacity to take new work right now, no channel's ROI matters. Fix the pipeline problem you actually have before spending on a channel to generate more of a lead type you can't service.
There's also a content-supply problem that kills ROI before measurement even enters the picture. Social platforms reward frequency and job-site content is the only thing that makes a contractor's feed different from a competitor's. A shop that can't get raw footage off a job site consistently (because nobody on the crew is shooting it, or because jobs are scattered and unpredictable) will starve any management effort regardless of budget. Measure whether you have a reliable content pipeline before you measure ad performance. No amount of ad spend fixes an empty or repetitive feed.
The honest read: social media earns its budget line for contractors selling higher-ticket, more visual, more consideration-heavy work (roofing, remodeling, custom builds, landscape design, pool and outdoor living) where seeing the craft on a feed moves a buyer toward calling. It earns its budget more slowly for commodity, low-ticket, repeat services where the sale is decided on price and availability more than on a portfolio. Know which one you are before you commit a monthly number to it.