Case studies
Three audits, walked through end to end.
Three anonymized audits from the North Shore corridor. Different problems, different priorities, same audit substrate. Names and specific dollar figures are stripped. Underlying findings, priority order, and recommended fixes are unchanged from the actual audit. Each one shows what the audit surfaced, what the priority order was, and what good would look like.
Case study 1 - the measurement gap
The contractor running ads with no way to measure them
A multi-service HVAC contractor on the North Shore. Active Google Ads spend, real ad impressions across local-pack-style placements. Strong website with promos and service-area pages, GBP claimed. The kind of operation that should be a known quantity in their market.
What the account looked like from outside: ads running, calls coming in, leads happening. What the audit found inside: the spend was real but the data telling Google what worked was missing. Smart Bidding optimizing on a coin flip.
What the audit found
- No conversion tracking installed. No Google Ads conversion tag, no GA4, no Tag Manager container, no call tracking vendor on the site. Every paid click is being charged for unmeasured.
- Missing from the local 3-pack on every captured search. Across the captured service searches in their primary town, the contractor's GBP did not appear in a single local-pack render.
- No brand defense. Competitors were observed bidding on the contractor's own business name. No defensive ad runs on their own brand searches.
- AI Overview cited competitors on every captured service search. Every search where Google rendered an AI Overview pulled from competitor domains, not from this contractor's site.
- Compelling on-site offers, none echoed in ads. A double-digit number of specific promos captured on the site. Zero of those promos appear in any active ad copy.
- Sparse GBP review base. Single-digit review count compared to local competitors averaging 100+. Review velocity is slow enough that paid clicks land on a profile that converts well below local benchmarks.
What I would do, in order
- Wire conversion tracking first. Google Ads conversion tag, GA4, GTM, call tracking. Until this is installed, every other recommendation is a guess. Foundation work; usually an afternoon.
- Run a brand-defense campaign. Tiny budget, tight match-type discipline. Defends against competitor brand-bid encroachment and reclaims own-brand search volume that should never have left.
- Sync the on-site promos to ad copy. Twelve unused signals on the site. Cheapest CTR work in the playbook. Each promo becomes an ad-copy variant with built-in differentiation.
- Review-velocity work on the GBP. Slower payoff but compounds. Until the rating moves, the ad account is capped from above on conversion rate.
What good would look like. Tracking lands first. Within 30 days, conversion data starts pricing every campaign and Smart Bidding has real signal to optimize against. The brand-defense and on-site-promo work close inside 60 days. The local-pack and AEO work are longer-arc but visible from day one. The honest version: most of the cost here is on the table because the measurement gap was masking what to fix.
Case study 2 - tracking that's lying
The contractor whose conversion tracking is fighting itself
A residential HVAC contractor with mature ad spend. Tracking IS installed: Google Ads conversion tag, GA4, Tag Manager. Active campaigns, real volume. The kind of account that looks healthy from the outside.
The audit found the trap that hides inside this profile. Tracking exists, but it is not what the ad account thinks it is. Two different conversion accounts firing on the same pages. A contact form built like a long-form questionnaire. Phone-call CTAs everywhere with nothing recording the calls. The bidder is making decisions on data that contradicts itself.
What the audit found
- Two different Google Ads conversion accounts firing on the same site. Two separate AW IDs loading on every page. Conversions counted in both, neither is the source of truth. Bidder optimizing against blended (and probably double-counted) signal.
- Phone calls invisible despite active phone-call CTAs. No call tracking vendor detected on the site. Every paid click that becomes a phone call is unmeasured.
- Missing from the local 3-pack on every captured search. Multiple service searches captured; none rendered the contractor's GBP in the local pack.
- Competitors bidding on every captured brand search. Every search for the contractor's own name showed competitor ads. No defense.
- Contact form has 9 input fields. Service-area lead-capture benchmark is 4 to 5 fields. Friction this heavy on a converting click is leaks happening at the last moment.
- AI Overview cites competitors on most captured service searches. Same pattern as the cleanest accounts on the North Shore. Visibility issue layered on top of the tracking issue.
What I would do, in order
- Resolve the dual conversion-tracking conflict. Pick the canonical account. Retire the second tag. Until done, every bidding decision is running on bad signal. This is the silent killer here.
- Install call tracking immediately. Whichever vendor (CallRail, CallTrackingMetrics, Google forwarding numbers; pick one). Every paid click that becomes a phone call has been invisible. Fix this before anything else creative-side.
- Trim the contact form. 4 to 5 fields max. Name, phone, service, town. Optional message. The other fields can come later in the conversation.
- Brand defense ad. Same playbook as the first case study.
- AEO content discipline. Clean Q&A on the services pages. Structured data marked up to match what's on the page. Local content that's actually local.
What good would look like. Conversion-data conflict is the silent killer here. Bidding decisions are running on bad signal. Once that resolves, the existing campaigns probably perform better with no other change. The form trim is a one-day win. Call tracking pays back the first week. Everything else is incremental on top of those three.
Case study 3 - strong site, invisible ad layer
The contractor whose site is doing the work the ads aren't
An established HVAC and plumbing contractor with a real digital footprint. Strong content on the site: a double-digit number of specific service promos captured. A service-area page that names dozens of towns. A real local presence in the trade.
The site is doing operator work. The ad layer is not picking up the slack. The audit found a clean visibility gap on top of a missing measurement layer. Different problem flavor from the first two case studies, same audit substrate, different priority order on the fix list.
What the audit found
- No conversion tracking despite running ads. Same gap as the first case study, but more visible here because the prospect already invested in the site substrate.
- AI Overview cites competitors on most captured service searches. Strong site content, real services covered, but the substrate is not earning answer-engine citations.
- Missing from the local 3-pack on every captured service search. A real local presence by every other measure, invisible in the placement that decides most local-services clicks.
- Absent from paid slots across every service-area town the site claims. The site says "we serve these towns." The ads were not running in any of them at the captured times.
- Twelve on-site promos, none echoed in any active ad. Site is screaming about real, specific offers. Ad copy is generic.
- No brand defense. Same competitor encroachment pattern.
What I would do, in order
- Wire tracking. Same first move as the first two case studies. No bidding decision is honest until the data lands.
- Mirror the on-site promos into ad copy. Lowest-cost-highest-yield CTR work in the playbook. Each promo on the site becomes an ad-copy variant with built-in differentiation.
- Schema and on-page Q&A for AEO. This contractor has the substrate to earn AI Overview citations. What's missing is the structural markup and the on-page Q&A pattern that the cited competitors are using.
- Geographic ad coverage matching the site claim. If the site claims a service area of dozens of towns, the ads should be set up so every one is reachable. Locations, bid modifiers, town-level landing pages where it's worth the build.
- Brand defense ad. Same as the first two.
What good would look like. This is the highest-leverage case in this set. The substrate is there. Most of the work is connecting layers that already exist independently. Site to ads. On-page content to schema. Service-area claim to campaign coverage. Each piece of work is small. Together they close a gap that has been costing the contractor leads they have already done the harder work to deserve.
About these case studies
Names are replaced with archetype descriptions. Specific dollar figures are stripped or generalized. Underlying findings and recommended fixes are unchanged from the actual audit. Anonymization is bulletproof. The numbers and the methodology are not.
Want this run on your account?
Send the domain. The audit will surface findings specific to your account in the same shape and same priority order as these case studies. Free.
Get an audit on your account