First-party signal,
properly stitched.
Enhanced Conversions for Web via gtag. Enhanced Offline Conversions from CRM / POS / ERP. Click-ID preserved through redirects. Match rate monitored. Smart Bidding learns on real signal, not lossy fragments.
Where Enhanced Conversions usually goes wrong.
- 01
Enhanced Conversions enabled — but match rate is 30%
Box ticked in Google Ads, gtag updated, and nobody verified the match rate. A low rate means Smart Bidding learns on a fraction of signal. We see EC 'live' with rates that make it actively harmful.
- 02
Backend orders never get back to Google
Order closes by phone, in store, or by manual invoice — never on the web. The gclid was captured but never matched back. Enhanced Offline Conversions exist for exactly this; almost no-one runs them.
- 03
Click ID dropped at the payment processor
Stripe, PayPal, third-party checkout — gclid lost in the redirect. EC can't stitch. Conversions look unattributed. We've recovered 40% of 'organic' purchase volume just by fixing the redirect chain.
- 04
EOC action created but never uploaded to
The conversion action exists in Google Ads. Nothing has been uploaded for 6 months. Bidding has zero offline signal. Common because EOC needs a real engineering pipeline, not a one-time UI click.
An EC stack engineered, not just enabled.
- 01Web
Enhanced Conversions for Web
Configured via gtag with hashed email, phone, name, address fields where available. Verified end-to-end in Tag Assistant and via diagnostic API.
- 02Backend
Enhanced Offline Conversions pipeline
Daily upload job from CRM / ERP / POS via UPLOAD_CLICKS conversion action. gclid stored at lead capture, matched back on close. Engineered as a real ETL, not a CSV upload.
- 03
Click-ID stitching
gclid, gbraid, wbraid preserved across redirects, payment processors, subdomains. Click ID survives the full conversion path so EC has something to match on.
- 04
Match rate monitoring
Daily check against Google Ads diagnostic. Alert when match rate drops below threshold. Slack or email.
- 05
Customer-data hashing
SHA-256 hashing client-side before submission. PII never leaves your domain unhashed. Compliant with EC requirements and GDPR.
- 06
Reconciliation against backend
Weekly: orders in CRM vs conversions uploaded vs conversions credited. Closes the loop and surfaces silent failures.
- 07
Documented uploader
Code for the upload pipeline lives in your repo or ours. Secret management, retry logic, idempotency. Transferable.
- 08
Bidding strategy adjustment
Once match rate stabilises, tCPA / tROAS targets recalibrated to the now-cleaner signal. Often unlocks meaningful CAC reduction without touching budgets.
Audit, web first, then offline.
- 01
EC audit
Phase 01 · 5 working daysInventory of current EC state, match rate baseline, gclid preservation check, gap analysis between web purchases and backend orders.
- →Current EC for Web status and match rate
- →EOC action presence and upload history
- →gclid drop points in conversion path
- →Web-vs-backend revenue gap
- 02
Web EC fixed first
Phase 02 · Week 1Hashing, field coverage, redirect chain repair. Match rate stabilised. Most accounts see meaningful uplift inside two weeks just from this.
- →Web EC field coverage expanded
- →gclid preserved through full path
- →Match rate baseline → target
- →Tag Assistant + diagnostic API verified
- 03
EOC pipeline
Phase 03 · Weeks 2–3UPLOAD_CLICKS conversion action created. Daily upload from CRM / ERP. Idempotency, retry, monitoring. 4–6 hours wait after action creation before first upload.
- →UPLOAD_CLICKS action created and verified
- →Daily upload job live with retry / idempotency
- →First successful upload confirmed
- →Reconciliation report wired to client team
- 04
Operate
Phase 04 · OngoingMatch rate monitoring, schema review, bidding adjustments as signal quality improves.
- →Daily match rate health check
- →Weekly upload reconciliation
- →Bidding strategy recalibration
- →Quarterly schema review
Selected EC work.
EVA Instruments
UPLOAD_CLICKS action 7648925020 + daily uploader from WooCommerce; match rate stabilised.
EC for Web + EOC live
Mill
Lead-to-deal upload pipeline; gclid captured at form, matched on close in CRM.
Consulting
Phone-call leads matched back; bidding learns on closed-won, not lead form.
Ararat
Cross-domain stitching repaired; click ID survives PayPal redirect.
Common questions.
For e-commerce with email at checkout, 70%+ is achievable; 80–90% is healthy. For B2B lead gen, 50–70% is normal — phone numbers and names vary in coverage. The number alone is less important than the trend: rising or stable is fine, dropping is an alert.
Yes — and it's often better. The user-data fields can be hashed server-side and sent via the server container, which protects PII from leaking client-side and avoids ad blocker interference. We do both client gtag and server reinforcement where available.
Server-Side Tracking is the broader architecture (GTM SS, MP, CAPI). Enhanced Conversions is specifically about the user-data first-party signal sent to Google Ads. They overlap and reinforce each other — most clients eventually do both.
Not required, but Smart Bidding is materially better with it — especially in cookieless / iOS / EU contexts. We treat it as table stakes for any account spending more than €5K / month.
Wait 4–6 hours after creation before the first upload. Google needs to provision the action backend. Uploading immediately returns success but the data isn't processed. We've seen this trip up teams; we always wait.
EC enabled but match rate is unknown?
Send Ads + gtag access. Five working days. Written diagnostic with match rate baseline and prioritised fixes.
No long contracts · Free audit before any work