How to Calculate Google Ads ROI
for Service Businesses
The formula, the benchmarks, and the attribution method that actually tells you whether your Google Ads are working — not just spending.
Google Ads ROI for service businesses is calculated as (Revenue from Ads - Ad Spend - Management Fees) / (Ad Spend + Management Fees). A roofing company spending $3,000/month that books 8 jobs at $6,000 average ticket generates $48,000 revenue for a 15:1 ROI on total investment including management fees.
The ROI Formula — Worked Example
The Google Ads ROI formula is simple, but most businesses use it wrong. They divide revenue only by ad spend, ignoring management fees. That inflates the apparent return. Use total investment in the denominator.
Here is how that formula plays out for a real plumbing company:
Monthly Investment
Ad spend: $2,000 | Management fee: $600 | Total: $2,600/month
Lead Volume
Clicks: 180 | Landing page conversion rate: 14% | Leads generated: ~25
Jobs Booked
Close rate from booked estimate to paid job: 35% | Jobs booked: ~8–9
Revenue Generated
Average job ticket: $420 | Jobs: 8.75 | Revenue from ads: ~$3,675
ROI Calculation
($3,675 - $2,000 - $600) / ($2,000 + $600) = $1,075 / $2,600 = 0.41
At first glance this looks like a losing campaign. But this plumber charges for maintenance contracts. Read the next section to see why first-job ROI is the wrong metric for most service businesses.
Lifetime Value vs. First-Job Value — Why LTV Changes Everything
The plumbing company above looks unprofitable on a first-job basis. But consider what happens when you account for the full customer relationship over 3 years:
The value most businesses use to evaluate campaign performance. At $420 average ticket, a $104 CPL (from our example above) delivers negative ROI. Campaigns look like they are failing.
Same plumber: customers average 2 additional service calls per year at $350 each for 3 years = $2,100 LTV. At a $104 CPL, the real ROI per customer is $2,100 / $104 = 20:1. The campaign is performing exceptionally well.
Calculating your LTV requires CRM data — average repeat bookings, average years retained, average upsell rate. If you do not have this data yet, use a conservative estimate: multiply your first-job average ticket by 2.5 for repeat-service businesses. That is your working LTV for ROI calculations until you have real retention numbers.
LTV-Adjusted ROI Formula
(LTV per Customer x Close Rate x Leads) - Total Investment
Plumbing example: ($2,100 x 35% x 25) - $2,600 = $18,375 - $2,600 = $15,775 net return on a $2,600 investment. That is a 6.1:1 ROI on the full customer lifetime — not 0.41:1.
What Counts as Revenue from Ads — Proper Attribution
Before you can calculate ROI, you need to know which revenue actually came from Google Ads. Most businesses either over-attribute (claiming all revenue) or under-attribute (missing offline jobs). Here is the correct method.
Count: Form Submissions with UTM Tracking
Leads that came through your Google Ads landing page with UTM parameters tracked in your CRM. These are direct attribution — Google Ads drove the lead.
Count: Call Tracking Numbers from Ads
Calls to a dynamic number shown only to Google Ads visitors. Google Ads call extensions and call tracking tools like CallRail attribute these correctly to the campaign.
Count: Offline Conversion Imports
Jobs booked from Google Ads leads that were closed offline (phone quote, in-home estimate). Import these back to Google Ads via the Offline Conversion Import feature so the algorithm optimizes toward actual revenue, not just form fills.
Do Not Count: Organic or Direct Traffic Revenue
Revenue from customers who found you via Google Search (organic), direct type-in, referrals, or other channels should not be credited to Google Ads. Including it inflates your apparent ROI and makes it impossible to accurately judge campaign performance.
Do Not Count: Last-Click Attribution for Multi-Touch Journeys
If a customer clicked your Google Ad, left, then came back 3 weeks later via a direct link and booked, last-click attributes it to direct. Use data-driven attribution in Google Ads to get a more accurate picture across multi-session journeys.
Industry ROI Benchmarks — How Does Your Vertical Compare?
These benchmarks are based on optimized campaigns running at least 90 days with proper conversion tracking. New campaigns will have lower ROI in Month 1–2. Use these as targets, not guarantees.
| Industry | Monthly Ad Spend | Avg CPL | Close Rate | Avg Ticket | Typical ROI |
|---|---|---|---|---|---|
| Roofing | $2,500 | $90 | 28% | $9,500 | 12:1 |
| HVAC Replacement | $2,200 | $85 | 32% | $7,800 | 10:1 |
| Water Damage | $3,500 | $130 | 55% | $4,200 | 8:1 |
| Plumbing | $1,800 | $55 | 38% | $420 | 3:1* |
| Electrical | $1,800 | $60 | 35% | $550 | 4:1 |
| Window Replacement | $2,500 | $95 | 25% | $6,500 | 7:1 |
| Pest Control | $1,200 | $40 | 42% | $280 | 5:1** |
| HVAC Service/Repair | $1,500 | $65 | 45% | $380 | 4:1* |
* First-job ROI only. LTV-adjusted ROI for service/repair businesses is typically 3–8x higher when repeat visit rates are factored in. ** Pest control benefits from subscription model — recurring monthly revenue dramatically improves LTV.
The Break-Even CPL Formula — Know Your Ceiling
Before launching a campaign, calculate your maximum viable CPL. This tells you how much you can afford to pay per lead while still generating a positive return. It is your bidding ceiling.
Your actual target CPL should be 40–60% of your break-even CPL to give yourself a healthy margin. If your break-even CPL is $1,330 (roofing example), target a CPL of $75–$150 in your campaigns. The gap between target and break-even is your profit cushion and your room to increase bids for better position during peak season.
Why Vanity Metrics Mask True ROI
Google Ads dashboards are full of metrics that feel important but tell you nothing about whether you are making money. Here is what to ignore and what to actually watch:
The single most important number in any local service Google Ads account is CPL trended over time. If your CPL is decreasing month-over-month and your lead volume is stable or growing, the campaign is working. Everything else is context.