Most small business owners calculate Facebook ads ROI wrong — not because the math is hard, but because they plug in the wrong numbers. The formula itself is simple: (Revenue from ads minus Ad spend) divided by Ad spend, times 100 to get a percentage. The problem is what goes into 'revenue from ads.' If you're counting leads or clicks instead of closed sales, your ROI number is fiction, and fiction is a bad reason to keep spending $800 or $2,000 a month.
This guide walks through the real formula, a full example with actual dollar figures, what counts as revenue versus what doesn't, the tracking setup that makes the number trustworthy, and — because most guides skip this — the specific situations where Facebook ads ROI will never look good no matter how well you run the campaign.
The ROI Formula That Actually Matters
The formula: ROI = (Revenue from ads − Ad spend) ÷ Ad spend × 100. If you spent $1,000 on ads and those ads generated $3,000 in closed sales, your ROI is (3,000 − 1,000) ÷ 1,000 × 100 = 200%. For every dollar spent, you made two dollars back on top of it.
That's the whole formula. The part that trips people up is 'revenue from ads.' A lead is not revenue. A click is not revenue. A phone call is not revenue. Revenue is the dollar amount of a job you actually got paid for, tied back to a lead that came from a Facebook or Instagram ad. Confusing cost per lead with ROI is the single most common mistake small business owners make when judging whether a campaign is working — see the cost-per-lead benchmarks by industry for what a 'good' lead cost actually looks like before you decide a campaign is expensive.
Launch your first Facebook & Instagram ad in 2 minutes
Describe your business: the AI writes the copy, designs the visual, sets the targeting, and publishes your ad. Leads arrive with their phone number.
Try Leadria free7-day free trial — no credit card — cancel anytime
Why Leads and Clicks Aren't Revenue
Say a landscaper spends $600 and gets 20 leads at a $30 cost per lead. That's a fine CPL — landscaping typically runs $20 to $40 per lead. But if only 3 of those 20 leads turn into paid jobs, and the average job is $350, actual revenue is $1,050. ROI is (1,050 − 600) ÷ 600 × 100 = 75%. Still profitable, but nowhere near as good as it looks if you stopped at '20 leads for $600, that's cheap.'
Now flip it: a chiropractor spends $900 and gets only 12 leads at $75 CPL, which sounds expensive next to the landscaper. But if 6 of those 12 book a first visit worth $120 and then stay on as patients averaging $900 in visits over the year, the real revenue from that single month of ads could be $5,400 over 12 months. Judged on CPL alone, the chiropractor campaign looks 2.5x worse than the landscaper's. Judged on ROI, it's dramatically better. This is why cost per lead is a diagnostic number, not a verdict — it tells you how efficiently you're generating interest, but only revenue tracking tells you if the campaign is making money. If leads are coming in but nothing is closing, the problem usually isn't the ad — it's follow-up speed, pricing, or targeting, all covered in why Facebook ads aren't converting to leads.
A Real Example: Ramirez Plumbing in Tucson, AZ
Here's a full walk-through with real numbers, the way it should actually be calculated.
Ramirez Plumbing runs $1,200/month in Facebook ads targeting homeowners within 12 miles of Tucson, AZ who searched or engaged with home repair content. Average cost per lead: $35. That's 34 leads for the month (1,200 ÷ 35 ≈ 34).
- Leads generated: 34
- Close rate: 25% (a realistic rate for plumbing emergency/repair leads)
- Jobs booked: 8.5, rounded to 9
- Average job value: $450
- Revenue from ads: 9 × $450 = $4,050
ROI = (4,050 − 1,200) ÷ 1,200 × 100 = 237.5%. For every dollar Ramirez Plumbing spent on ads, they made $2.37 back on top of the original dollar. That's a strong campaign — most profitable service-business campaigns land between 150% and 400% once you're tracking real closed jobs.
Now change one variable: if the close rate drops to 12% instead of 25% (a common problem when leads aren't called back within an hour), jobs booked falls to about 4, revenue drops to $1,800, and ROI becomes (1,800 − 1,200) ÷ 1,200 × 100 = 50%. Same ad spend, same leads, same CPL — half the close rate cuts ROI by nearly 5x. The ad isn't the variable that broke; the sales process is. This is exactly the kind of detail covered in Facebook ads for plumbers.
What Counts as Revenue From Ads
Getting this wrong is the second-biggest reason ROI calculations lie to owners. A few rules:
Use an attribution window that matches your sales cycle
A restaurant's sales cycle is same-day — someone sees an ad, books a reservation that night. A roofer's sales cycle might be 2-3 weeks between the lead and the signed contract. If you only count revenue that closed within 7 days of the ad click, you'll dramatically undercount ROI for longer sales cycles like roofing, solar, or law firms. Match your revenue-counting window to how long your business actually takes to close a deal — for roofing that's often 30 days, for solar it can be 60-90 days.
Count the full job, not the deposit
If a med spa closes a client on a $200 first treatment that turns into a $1,800 package over 3 months, count the $1,800, not just the $200 deposit — assuming the upsell reliably happens and you can track it. If it's inconsistent, count conservatively and treat the upsell revenue as a bonus, not a baseline assumption.
Factor in lifetime value for recurring businesses
Gyms, pest control, HVAC maintenance plans, and cleaning services all have recurring revenue. A pest control company converting a lead into a $95 quarterly plan should value that customer at roughly $380/year, not $95. Ignoring lifetime value makes recurring-revenue businesses look far less profitable on Facebook ads than they actually are — see Facebook ads for pest control for how this plays out with real plan pricing.
The Cost Side: What to Include Besides Ad Spend
The denominator in the ROI formula needs to include everything spent to generate the sale, not just what Meta charged your card. Leaving costs out doesn't make a campaign more profitable — it just hides the truth.
- Raw ad spend — what you actually paid Meta.
- Agency or management fees — if you're paying $500-$1,500/month for someone to run the campaign, that's part of your cost to acquire the sale. See what a Facebook ads agency actually costs for typical fee ranges.
- Creative costs — photography, video, or design work specifically made for the ads.
- Lead-tracking or CRM tools — if you pay $30-$100/month for software just to track ad leads, include it.
Example: a roofer spends $1,800/month on ads plus $750/month to an agency. Total cost is $2,550, not $1,800. If that campaign generates one $14,000 roof replacement, ROI is (14,000 − 2,550) ÷ 2,550 × 100 = 449% — still excellent, but if you'd only counted the $1,800 ad spend, you'd have overstated ROI at 678%, a difference big enough to change how much you're willing to reinvest.
Setting Up Tracking That Feeds the Formula
None of this works without knowing which sales came from which leads. Three things make that possible:
1. A source field on every lead
Every lead — whether from a form, a phone call, or a walk-in — needs a tagged source the moment it comes in. 'Facebook ad' has to be a dropdown option, not something someone tries to remember three weeks later when they're doing the books.
2. A dedicated tracking number or the Meta Pixel
If leads call in, use a separate tracking phone number for Facebook ads so every call is automatically source-tagged. If leads fill out a form, the Facebook Pixel tracks the conversion event back to the specific ad and audience that generated it, which matters for optimizing spend toward what's actually working. Lead ad forms inside Facebook itself also auto-tag the source — see the Facebook lead ads guide for setup.
3. A weekly close-the-loop habit
Once a week, someone needs to go through the leads tagged 'Facebook ad' and mark which ones became paying customers and for how much. This takes 15-20 minutes for a business getting 30-40 leads a month. Skipping this step is why most owners are stuck guessing at ROI instead of calculating it — for a broader look at getting leads that actually convert, see how to get leads from Facebook ads.
Benchmark CPLs and What Realistic ROI Looks Like by Industry
Cost per lead varies enormously by industry because job value and competition vary. Here's what typical numbers look like, and the ROI they tend to produce when close rates and job values are realistic:
| Industry | Typical CPL | Typical close rate | Avg job/sale value | Realistic ROI range |
|---|---|---|---|---|
| Plumbers | $20-$45 | 20-30% | $300-$600 | 150-350% |
| HVAC | $25-$60 | 15-25% | $400-$8,000 (install vs repair) | 100-400% |
| Roofers | $30-$70 | 10-20% | $8,000-$18,000 | 300-900% |
| Dentists | $15-$40 | 25-40% | $150-$3,000 | 150-500% |
| Med spas | $20-$50 | 20-35% | $200-$2,000 | 150-450% |
| Real estate agents | $10-$35 | 2-8% | $6,000-$15,000 (commission) | varies widely |
| Restaurants | $5-$15 | N/A (footfall) | $25-$60 per visit | often measured in visits, not ROI % |
| Gyms | $10-$25 | 10-20% | $50-$150/month, 6-12 month retention | 200-600% on LTV basis |
These ranges shift based on ZIP code competition, season, and offer strength. For a full breakdown by trade, the cost-per-lead by industry guide covers 15+ trades in more depth. For general budget-setting guidance before you even calculate ROI, see how much small businesses should budget for Facebook ads.
Common Mistakes That Skew Your ROI Numbers
Even owners who understand the formula make errors that inflate or deflate the result:
- Counting leads as sales. A 34-lead month with $1,200 spend is not automatically a win — only the jobs that closed count as revenue.
- Judging too early. Facebook's learning phase takes 7-10 days and roughly 50 conversions per ad set to stabilize. Calculating ROI on day 4 with $150 spent and 2 leads produces a meaningless number.
- Ignoring repeat business. Valuing a gym member or pest control customer at their first payment instead of their 12-month value understates ROI by 3-5x for recurring-revenue businesses.
- Leaving out management costs. Only counting Meta's charge, not the agency fee or tool subscription on top of it, overstates ROI.
- Mixing boosted posts with real campaigns. A $20 'boost this post' button and a properly targeted campaign with conversion tracking produce very different, non-comparable numbers — see boosted post vs. ad for why they shouldn't be judged the same way.
- Sample sizes too small to mean anything. 3 leads and 1 sale is not a 33% close rate you can plan around — it's a coin flip. Wait for at least 30-50 leads before trusting a close rate.
When Facebook Ads ROI Will Never Look Good (Be Honest With Yourself)
This is the section most guides skip, and it's the one that actually saves owners money. Facebook ads ROI will not look good, no matter how well the campaign is built, in these situations:
- Ticket size is too low to absorb the CPL. If your average job is $60 and your CPL in a competitive metro is $45, you need close to a 75% close rate just to break even — unrealistic for most cold leads. Businesses like small cleaning jobs or one-time handyman tasks under $150 often can't make the math work unless the close rate is unusually high.
- Sales cycles longer than 60-90 days without tracking discipline. Commercial construction, large B2B contracts, or custom home builds close so slowly that by the time revenue lands, nobody remembers or bothers to tie it back to the original ad. If you can't realistically track a sale 4 months after the lead, you can't calculate ROI — you can only guess.
- Ad spend under $300/month. At that level you get too few leads to calculate a meaningful close rate or ROI at all — 8-10 leads a month is not a sample size, it's noise. See minimum daily budget guidance before expecting reliable ROI data.
- No CRM, no source tracking, no follow-up discipline. If leads go into a group text or a notebook and nobody logs outcomes, there's no way to calculate real ROI regardless of how good the ads are. Fix tracking before spending more.
- Highly seasonal businesses running ads year-round without adjusting. A snow removal company running the same budget in July as January will show terrible 'annual ROI' that has nothing to do with ad quality. See Facebook ads for seasonal businesses for how to calculate ROI per season instead of per year.
- The offer itself is weak. No amount of targeting fixes a $99 diagnostic fee competitors offer for free, or a service with no clear differentiator. If ROI is consistently under 50% after fixing tracking and follow-up, the problem is usually the offer or the price — not the platform. Sometimes Google Ads is simply the better channel for high-intent, already-searching customers.
A Simple Monthly Routine to Track ROI Without a Data Team
You don't need analytics software to do this right — you need a habit. A basic monthly routine:
- Week 1: Confirm every new lead has a source tag ('Facebook ad'). Spot-check 5 leads to make sure it's happening consistently.
- Weekly: Mark closed sales against the leads that generated them, with dollar value attached.
- End of month: Add up total revenue from Facebook-tagged leads. Add up total cost (ad spend + management fees + tools).
- Calculate: (Revenue − Cost) ÷ Cost × 100.
- Compare to last month. A single month's ROI can swing with 2-3 big jobs closing or not closing — look at a 60-90 day trend before making budget decisions.
If ROI is trending above 150% consistently, that's a strong signal to increase budget. If it's stuck under 75% after 60 days with tracking in place, the fix usually isn't more ad spend — it's the landing page, the follow-up speed, or the offer, all covered in why your Facebook ads aren't working. Either way, the number only means something once it's built on actual closed sales — not leads, not clicks, and not hope.
