01 · The Situation
This commercial cleaning and facilities maintenance operator runs US operations centered in Texas and Florida, UK operations in Manchester and Birmingham. Combined Google Ads spend: ~$28,000/month (USD equivalent).
Two agencies had built two stacks. US account optimized on HubSpot form fills. UK account optimized on call extension clicks. CRM closed-won jobs — the actual revenue event — lived in Salesforce for both markets but never imported to Google Ads.
US reported 4.1× ROAS. UK reported 3.6× ROAS. Group leadership suspected both numbers were fiction. Our local-services tracking benchmark: ~38% attribution loss without full call + offline import — typical trust score 58 for audited SMB accounts. The group scored 49 cross-market at day one.
02 · The Diagnosis
Duplicate GA4 properties with inconsistent event naming. US used generate_lead; UK used form_submit for the same action — breaking cross-market reporting.
No enhanced conversions on either account. iOS and browser privacy stripped 30–40% of visible conversions — consistent with our automotive/local-services attribution-loss ranges.
Call tracking fragmented. US used one vendor; UK used another. Numbers did not map to Google Ads conversion actions.
Currency and timezone reporting chaos. Weekly group reports manually stitched in spreadsheets — no single source of truth for "did this market improve?"
Smart Bidding trained on different events per market — impossible to compare or reallocate group budget rationally.
03 · What We Did
Single measurement architecture (days 1–20). One GA4 property, market dimension custom parameter. GTM containers standardized. Event taxonomy: qualified_lead, booked_job, closed_won — same names US and UK.
Enhanced conversions + offline import (days 10–35). Salesforce opportunity stages imported on schedule. Call tracking unified vendor with market-level dynamic insertion.
Conversion action parity (days 20–40). Primary conversion = CRM booked_job. Secondary = qualified form. Tertiary = calls for observation. Both accounts identical logic — currency localized, event logic shared.
Campaign structure untouched until day 45. Measurement first — our standard rule. No bid changes until seven clean days of imported data per market.
Group reporting layer. Looker Studio dashboard: ROAS, CPA, and pipeline by market on CRM truth — not platform fiction.
04 · The Results
At 60 days (measurement stable; bids adjusted weeks 7–8):
- Attribution trust score 49 → 76
- +34% conversions visible to Google Ads combined — recovered from previously invisible call + CRM paths
- US ROAS 4.1× → 6.2× — approaching 6.5× local-services top quartile
- UK ROAS 3.6× → 5.4× — above 3.5× median with room to 6.5× top quartile
- Group reallocated 15% of US budget to UK based on marginal ROAS on CRM jobs — decision impossible before unified tracking
The group consolidated to one strategist owning both markets under one measurement system at day 90.
05 · What's Next
Meta Ads CAPI rollout for UK brand awareness layer — same event taxonomy as Google.
Local SEO engagements starting UK-side to reduce paid dependency on high-CPC Manchester commercial queries.
“We had two agencies and two dashboards. Zenos gave us one measurement system — and both accounts finally optimize on jobs that invoice, not forms that ghost.”

