Get your Enhanced Conversions tracking to 95%+ accuracy guaranteed in writing.
Most Enhanced Conversions problems aren't Enhanced Conversions problems. The conversion action itself is firing on the wrong page, firing twice, or not firing at all for the customers who pay through a hosted checkout — and hashed email won't rescue an event that never happened. We fix the event, then attach clean first-party identifiers to it from your order record.
Free30 minutesNo obligation
Enhanced Conversions · what breaks
The symptoms that bring people to this page — Enhanced Conversions
- 01
Diagnostics say "Recording" but the match rate stays flat
The user-provided data tag is live and sending empty strings — your checkout clears the email field on submit, so the tag reads a blank input. Google reports the conversion as enhanced-eligible and matches nothing.
- 02
Your identifiers are scraped with CSS selectors
Auto-detect and manual selector setups read #email or .customer-phone off the rendered page. One theme update, one A/B test, one framework re-render and the selector points at nothing — silently, with no error anywhere in the UI.
- 03
EC is layered on a conversion that never fires
The purchase conversion is a URL-contains trigger on /thank-you, and PayPal or a hosted gateway returns some buyers to a different path. Enriching a missing event does nothing; the conversion is absent, not unmatched.
- 04
The 2026 unified toggle switched on more than you scoped
Google consolidated enhanced conversions for web, for leads, and customer data handling under one account-level control. Teams flip it on without checking which conversion actions inherit it, or what their consent banner is actually passing.
Enhanced Conversions · the fix
What changes once Enhanced Conversions are built properly
Identifiers come from your backend, not the rendered page
Email, phone, first and last name, street, city, state, ZIP and country are read from the order record server-side. A redesign can't break what never depended on a selector.
Smart Bidding gets a value it can act on
Value-based bidding is only as good as the conversion value you send. We pass the real order total from the source of truth, minus tax and shipping if that's how you measure margin.
iOS and Safari purchases stop disappearing from the report
When the conversion is sent server-side with hashed identifiers and the stored click ID, ITP cookie truncation on the browser side stops deciding whether Google ever hears about the sale.
You can finally answer "is Google's number right?"
We reconcile Google Ads conversions against your order or CRM records and label the remaining gap as attribution modeling, not data loss. Those two things need different fixes.
Enhanced Conversions · architecture
How an enriched Google Ads conversion is actually assembled
Enhanced Conversions is the last step, not the first one. The click ID has to be stored, the money event has to originate from your order record, and only then does hashed customer data have anything to attach to.
- 1
Click lands, click ID stored first-party
gclid, wbraid or gbraid is captured on the landing page with its timestamp and written to a first-party cookie set through your own subdomain, so it outlives a multi-day consideration window.
- 2
The money event fires at order creation
The conversion is keyed to your backend marking the order paid, not to a visitor reaching a /thank-you URL that a hosted gateway may never send them to.
- 3
Identifiers normalized, then SHA-256 hashed
Email lowercased and trimmed, phone rewritten to E.164 with the country code, name and address fields normalized to Google's expected shape before hashing.
- 4
Server container sends the conversion
A GTM server container on your domain posts the conversion with the stored click ID and the user-provided data block, so nothing depends on what the browser still has.
- 5
Rows reconciled against real orders
Google Ads conversions are matched to your order or CRM records for the validation window, and the residual gap is labeled as modeling or as loss.
Enhanced Conversions · events
What we send to Google Ads, and where each piece comes from — Enhanced Conversions
A developer should be able to build from this table without asking us what a field means.
| Event | Fires when | Key parameters | Sent from |
|---|---|---|---|
| page_view (landing) | A visitor arrives from an ad | gclid, wbraid, gbraid, click timestamp, landing_page | Browser, stored first-party |
| purchase | Your backend marks the order paid | value, currency, transaction_id, items[] | Server |
| generate_lead | The backend accepts the lead, not on submit click | value, currency, lead_id, form_name | Server |
| user_provided_data | Attached to a conversion, never sent on its own | sha256_email, sha256_phone (E.164), sha256_first_name, sha256_last_name, street, city, region, postal_code, country | Server |
| conversion_adjustment | An order is refunded or its value restated | transaction_id, adjusted_value, adjustment_type, adjustment_time | Server |
| offline_conversion_import | Your CRM marks the deal closed-won | gclid or wbraid, conversion_time, value, currency | CRM to Google Ads API |
| consent_update | The visitor changes their CMP choice | ad_user_data, ad_personalization, ad_storage, analytics_storage | Browser |
Enhanced Conversions · prove
How we prove the enrichment did something — Enhanced Conversions
Diagnostics saying "Recording" is not evidence. The evidence is your Google Ads conversion rows lining up with orders you were actually paid for.
Source of truth
Paid orders in your ecommerce backend, or closed-won deals in your CRM
- Export Google Ads conversions by day and by conversion action, then export the same days of paid orders.
- Match on transaction_id, not on daily totals: sums can agree while individual orders are missing or doubled.
- Read the match rate per conversion action; a live tag sending empty strings still reports as recording.
- Run a real order through every payment path, including the hosted gateway, and confirm one row appears.
- Label the residual gap: attribution model and conversion window differences are expected, missing IDs are not.
- Re-run the comparison 14 days later so conversions credited outside the first window are counted too.
Enhanced Conversions · free audit
What we check in the free audit
- Diagnostics say "Recording" but the match rate stays flat
- Your identifiers are scraped with CSS selectors
- EC is layered on a conversion that never fires
- The 2026 unified toggle switched on more than you scoped
Checked against
Paid orders in your ecommerce backend, or closed-won deals in your CRM
Free30 minutesNo obligation
Enhanced Conversions · when not to buy
When Enhanced Conversions is the wrong thing to buy
These are the calls where we tell people to keep their money.
- Your Google Ads conversions already reconcile with your orders within a few percent and the diagnostics match rate is healthy.
- Your conversion is a phone call or an offline close. That is an offline conversion import problem; enriching a form fill will not touch it.
- Your checkout collects an email and nothing else. We will tell you the match ceiling before you sign rather than bill you to discover it.
- You are not running Google Ads yet. This improves bidding on an account that already has spend and conversion history to learn from.
Enhanced Conversions · what we deliver
What the Enhanced Conversions engagement includes
Conversion action audit, one row per action
Every conversion action in the account: what triggers it, whether it double-fires, its counting setting, attribution model, and whether it should exist at all. Most accounts are carrying two or three duplicates.
Rebuilt purchase or lead event on a real signal
The money event moves off a thank-you-page URL guess onto an order-confirmation signal — a dataLayer push at order creation, a webhook, or a server-side event keyed to the order ID.
First-party data captured and hashed correctly
Normalization before hashing — lowercase, trimmed, phone in E.164 with the country code — then SHA-256. Google rejects or mismatches sloppily formatted identifiers without telling you why.
Server-side delivery through your own subdomain
The conversion goes out through a GTM server container on your domain, carrying gclid, wbraid or gbraid captured at landing and stored first-party, so click IDs survive a multi-day consideration window.
Consent wiring documented against your banner
Consent Mode v2 signals mapped to your actual CMP categories, with ad_user_data and ad_personalization behaving the way your policy says they should. We document what is sent under each state.
Backend reconciliation report and handover doc
A side-by-side of Google Ads conversions versus your orders for the validation window, plus a written spec of every tag, variable and trigger so your developer can maintain it without us.
Written guarantee
95%+ tracking accuracy
Measured against Paid orders in your ecommerce backend, or closed-won deals in your CRM. Miss it and we keep working at no cost.
FAQ
Enhanced Conversions questions, answered
Not in readable form. The identifiers are normalized and SHA-256 hashed before they leave your environment, and Google matches the hash against its own hashed data. That said, you're still processing customer data for advertising purposes, so your privacy policy and consent flow have to reflect it — we'll tell you what to disclose, and your counsel signs off.
It will let Google attribute purchases that are currently arriving without a usable identifier. Be clear about the mechanism though: those orders already happened and you already got the revenue. What's broken is attribution, not sales. Fixing attribution changes what Smart Bidding learns from, which is where the actual value is.
You can turn it on in a minute. Whether it does anything depends on whether the identifiers exist on the page at the moment the tag reads them, whether they're formatted the way Google expects, and whether the conversion fires reliably in the first place. The toggle is easy. The plumbing behind it is the job.
Google folded enhanced conversions for web, enhanced conversions for leads, and the customer data terms into a single account-level control instead of per-conversion-action switches. Practically, it means one flip can affect conversion actions you never intended to enrich. We inventory which actions inherit the setting and what data each one is actually sending.
No — browser-side Enhanced Conversions works. Server-side is better for two specific reasons: identifiers come from your order record instead of the DOM, and the stored click ID survives ITP cookie lifetimes on Safari. If you're spending modestly and your checkout is a simple hosted page, browser-side may be enough for now.
If Google Ads conversions already reconcile against your orders inside a few percent, your match rate in diagnostics is healthy, and your checkout doesn't route through a third-party gateway, leave it alone. Also skip it if your conversion is a phone call or an offline close — that's an offline conversion import problem, and enriching a form fill won't touch it. We'll say so on the call rather than sell you a rebuild.
The Source-of-Truth Reconciliation Method: we pick the real business conversion, identify the system that owns it, then compare Google Ads conversions against that system row by row for the validation window. Our written guarantee is 95%+ accuracy against your backend, and we separate attribution modeling differences from genuine technical loss so you know which is which.
More on Enhanced Conversions
- GuideGoogle Ads Enhanced Conversions Setup: The Complete 2026 Guide
- GuideEnhanced Conversions for Lead Gen: GoHighLevel, ClickFunnels, and Custom Funnels
- Enhanced Conversions not workingWhy are my Google Ads Enhanced Conversions not working?
- Enhanced Conversions needs attentionWhy does Google Ads say my Enhanced Conversions needs attention?
- Enhanced ConversionsFixing Enhanced Conversions that report active and recover nothing
Free · 30 min
Let's find out whether your conversions fire before we enrich them
Free30 minutesNo obligation
