Case study · 90-day engagement

From $112 cost per lead to $34 in 14 weeks.

A Phoenix HVAC owner had been spending $9,400 a month on Google Ads with the same agency for 13 months. The phone rang, sometimes. The cost per lead had crept up every quarter. He could not get a straight answer about why.

The challenge

"We are getting the same calls but they cost more every month."

The owner came in through our free audit. The bot scored the account at 61 and flagged search term hygiene as the top issue. He had been with a generalist agency that was running 22 other accounts. They had not opened a search term report in months.

We pulled the last 12 months of search terms. The damage:

  • 1,872 unique queries served in the last 12 months. Only 184 had ever produced a phone call.
  • "hvac repair" was matching to "diy hvac repair" and "free hvac repair classes." About 14% of monthly spend was going to people who were never going to pay for a tech.
  • Conversion tracking had broken in March when the website was rebuilt. Nine months of optimization had been done blind.
  • LSA application was sitting half-filled in their Google account. The previous agency had started it and never finished.

The previous agency was charging $1,250 a month for management. The audit alone cost us six hours of work. The first quarter of changes paid for the next two years of our retainer.

The plan

Three priorities, ordered by speed to revenue.

Priority 1: Finish the LSA application (week 1)

The owner already had the licensing, the insurance, and the reviews. The application had been 80% finished for six months. We submitted it on Tuesday, the background check cleared Friday, and they were live in the LSA pack the following Monday. First booked job came in at 11:47 AM that day.

Priority 2: Negative keyword overhaul (week 2)

We pulled every search term that had ever served, scored it for commercial intent, and bulk-added 412 negatives. A lot of these were low-intent words ("cheap," "free," "diy," "training," "school"). Some were brand confusions (the city has a competitor with a similar name). Some were just noise. Spend dropped 23% the same week. Booked jobs went up.

Priority 3: Rebuild conversion tracking (week 3)

GA4 had an empty events container. The phone-click event was firing on every page load instead of on click. The form was tracked twice (once via gtag, once via WordPress). We rebuilt the entire measurement layer from scratch. Within ten days the bid algorithms had real data to work with and the same daily budget started returning more booked jobs.

Priority 4 (bonus): Search ad copy rewrite

The headlines were running on the platform-suggested defaults. We wrote 18 unique headlines built around what an HVAC customer in Phoenix actually searches in summer ("AC down today," "house is 95 inside," "freon recharge near me"). CTR went from 2.1% to 4.7% over six weeks.

AI tools we used

The internal stack that did the heavy lifting.

We do not pretend the work happens by hand. Three of our internal tools are the reason this engagement moved as fast as it did. Each of them replaces what used to be days of human time.

Tool 01Internal search-term scoring

Custom AI we built that grades every search term on commercial intent, urgency, and local match in under a second. Replaces a half-day human audit.

Tool 02Negative keyword expander

Takes one bad search term and proposes the related variants we should also negate before they show up. Found 87 negatives nobody had thought of.

Tool 03Conversion tracking validator

Crawls the site and fires every conversion event in a sandbox so you can see what is actually being recorded vs what should be. Caught the duplicate form fire in 4 minutes.

The execution

Week-by-week timeline.

WeekWhat we shippedWhat moved
Week 1LSA application finished and submitted, audit completeLSA approved by day 7
Week 2412 negatives bulk-added, ad group restructureSpend down 23%, booked jobs up 11%
Week 3Tracking rebuild: GA4 events + Google Ads importBid algorithm has real data again
Week 418 new headline variants live, RSAs rebuiltCTR climbing toward 4.7%
Week 6First quote-aware landing pages shippedForm-fill rate doubled
Week 8LSA bid + budget tuning after enough dataLSA cost per lead settles at $28
Week 12Quarterly review, retainer continuesRun rate stable at $34 blended CPL

The numbers

What changed in the data.

-70%
CPL drop in 90 days
+118%
Booked jobs per month
4.4×
ROI on retainer

The $34 blended CPL breaks down to:

The previous agency had been charging $1,250 a month for 13 months. Total spend with them: $16,250. They had no after-the-fact plan to fix what they were doing wrong. Our 90-day engagement at $799/mo cost $2,397 and freed up $3,600 a month in wasted spend. The owner kept us on retainer.

I spent a year asking my last agency to explain the spike in CPL. The answer was always "Google is changing." Mark sent me a Loom video the same week we signed showing me which 412 keywords were the problem. I never got that out of the other guys.

HVAC owner·Phoenix, AZ · 11 techs, three trucks

Keep reading

Three more turnarounds you might find useful.

Want a story like this with your numbers on it?

Thirty minutes. We pull up your account on screen. We tell you what we would do, what we would not do, and whether we are the right fit for your business.

Book my 30 min call Run my free audit