The Problem
A US-based home services company came to us spending $12,000/month on Google Ads. On paper the account looked great — 127 conversions, $94 average CPL. In reality their CRM (GoHighLevel) was recording 48 actual leads.
The 79-lead gap wasn't a rounding error. It was feeding corrupted data to Smart Bidding, which was optimizing for ghost conversions.
Root Cause Diagnosis
Three separate problems:
- Browser-side GTM double-firing — thank-you page loaded twice on mobile Safari due to a redirect loop. Every mobile form submit counted as 2 conversions.
- No deduplication — same session could fire the conversion tag multiple times if the user hit back and resubmitted.
- Phone calls not tracked — all call leads were invisible to Google Ads. Smart Bidding was blind to 30% of actual conversions.
What We Did
Step 1 — Server-Side GTM on Stape.io
Moved all conversion tags off the browser onto a server-side container. Server-side firing is immune to double-fire and deduplication issues that plague browser GTM.
Step 2 — Enhanced Conversions
Added hashed email + phone matching. Google match rate improved from 61% to 89% — stronger signal on real leads.
Step 3 — GoHighLevel → Google Ads Offline Import
Built a Zapier workflow: when a lead reaches "Qualified" stage in GHL, it fires an offline conversion back to Google Ads with the original GCLID. Smart Bidding now optimizes for leads that actually answer the phone.
Step 4 — Call Tracking
Added call conversion tracking for calls >60 seconds. Previously untracked.
Results (30 Days Post-Launch)
| Metric | Before | After |
|---|---|---|
| Reported conversions | 127 | 52 |
| CRM-verified leads | 48 | 50 |
| Tracking accuracy | ~38% | 96% |
| Cost per lead | $210 | $67 |
| Monthly wasted spend | ~$8,400 | ~$480 |
The account looked worse on paper after the fix — conversion volume dropped from 127 to 52. But actual leads barely moved (48 → 50). The difference is Smart Bidding now has real data.
Key Takeaway
If your CRM lead count and Google Ads conversion count don't match within 10–15%, you have a tracking problem — not a performance problem. Fix the data before you optimize the campaign.