Case Study · Home Services

From 284 fragmented campaigns to a 7.6× return on ad spend

We took over a home-services Google Ads account that looked busy and felt broken. There were 284 separate city-level campaigns, thousands of poor-strength ads, an average cost per click north of $21, and, the real problem, no connection between ad spend and actual revenue. The account could tell you about clicks. It could not tell you about money.

So we rebuilt it. We collapsed the sprawl into a tight, manageable structure, fixed ad strength across the board, and wired the account into ServiceTitan with our closed-loop attribution system so Google’s Smart Bidding could optimize toward booked and sold jobs instead of cheap clicks. Then we let the data do its job.

The dashboard below is the client’s own Q1 reporting. To respect their confidentiality we’ve left out raw spend and revenue totals and kept the numbers that actually matter to you: return on ad spend, cost per lead, cost per job, and the conversion rates underneath them.

Southeast US Home Services Company

Google Ads Performance Dashboard · Q1 2026 (Jan – Mar)
March Return on Ad Spend
7.6×
Revenue per $1 Spent
$7.61
▲ vs $1.91 in Feb
March return on ad spend
Cost Per Lead
$124
▼ -44% vs Feb
Down from $221 in February
Sold Jobs
105
▲ +144% vs Feb
Up from 43 in February
Cost Per Ran Job
$129
▼ -54% vs Feb
Down from $281 in February
Month-Over-Month Performance
Metric
January
February
March
Return on Ad Spend
69%
191%
761% +570pp
Leads
217
130
215 +65%
Cost Per Lead
$200
$221
$124 -44%
Booked Jobs
159
125
254 +103%
Sold Jobs
72
43
105 +144%
The Structural Transformation

January (before)

📊
Active Campaigns
284 city-level campaigns
💰
Monthly Ad Spend
Baseline (unmanaged)
🖱
Avg. Cost Per Click
$21.67
Poor-Strength Ads
6,475
🔇
Revenue Tracking
Not connected to ServiceTitan

March (after)

📊
Active Campaigns
Streamlined structure
💰
Monthly Ad Spend
-39% vs January
🖱
Avg. Cost Per Click
$8.79 -59%
Ad Strength
0 Poor, all Average or Good
📈
Revenue Tracking
Full ServiceTitan attribution
Sales funnel: February vs. March

February 2026

Note: A call-center issue through ~mid-Feb depressed booking rate and the metrics downstream of it.
📞
Call Booking Rate
56%
🔧
Run Rate
82%
💰
Close Rate
34%

March 2026 ▲ Improved

📞
Call Booking Rate
74% +18pp
🔧
Run Rate
81% ≈ flat
💰
Close Rate
41% +7pp

The bottom line

In January, the account was running 284 fragmented campaigns with no revenue tracking. After a complete restructure and closed-loop attribution, March cut ad spend 39% while producing 177% more revenue. Cost per lead dropped from $200 to $124, sold jobs grew from 72 to 105, and the call booking rate jumped from 56% to 74%.

$7.61
Revenue per $1 spent
Data source: ServiceTitan Marketing Overview · Client reporting, Q1 2026
Results shown are from a single client engagement and are illustrative; results vary. These figures are not guarantees; actual results depend on your offer, landing page, speed-to-lead, competition, and seasonality.

Why it worked

None of this came from a clever trick. It came from fixing fundamentals in the right order: structure first, ad quality second, and revenue tracking as the foundation under both. Once Google could see which clicks turned into sold jobs, not just leads, Smart Bidding had something real to optimize toward, and the cost per lead and cost per job fell on their own.

That closed-loop system is the same one we run for every client. We call it Trailhead, and it’s why we can manage spend toward booked revenue instead of vanity metrics.

Want results like these?

Let’s see what your account is leaving on the table