GTM·Google Tag Manager·critical

Enhanced Conversions Missing User Data

Enhanced Conversions is turned on for one of your conversion tags. The user-data fields are empty. So the feature is on in name only. Google Ads receives the conversion but none of the hashed identifier that makes Enhanced Conversions worth turning on in the first place. Match rate sits at zero. The team probably thinks the feature doesn't work.

CL
By Christopher LandaverdeCreator of AdLint · ad-tech tracking specialistUpdated

Why It Matters

Enhanced Conversions is the highest-leverage measurement feature Google Ads has shipped since GDPR started shrinking attribution. The mechanic: when a user completes a conversion, GTM grabs their email (or phone, name, address) from the conversion page, hashes it with SHA-256, and sends it to Google Ads alongside the conversion. Google looks at signed-in users who clicked an ad. If the hashed identifier matches, attribution is restored, even when the third-party cookie was blocked. It works. When configured. The whole mechanism falls apart if user data is missing at conversion time. The failure mode looks like this: the tag has Enhanced Conversions turned on, but the user-data parameter is either unmapped, mapped to a Data Layer Variable that resolves to empty, or pointed at a dataLayer field the conversion page never pushes. The tag fires. Google records the conversion. The hashed identifier is missing. Google has nothing to match against. The Diagnostics panel in Google Ads shows a 0% match rate. When teams see 0% they almost always blame the feature, not the implementation. That gets the diagnosis backwards. The feature works. Yours isn't feeding it data.

How To Fix It

  1. Pick a conversion page. Order-confirmation, signup-success, lead-thank-you. Open the rendered HTML or inspect the dataLayer at that moment. The user's email or phone should be present in the dataLayer or in a known DOM element. If neither, talk to the engineer who owns the page first; you cannot fix this from GTM alone.
  2. In GTM, create a Data Layer Variable per field (e.g. `DLV - customer.email`). Do not hash anything in GTM. Google does the hashing automatically inside the Enhanced Conversions parameter. Hashing twice gives Google an unmatchable token.
  3. Open the Google Ads Conversion Tracking tag, turn on Enhanced Conversions, pick "Code" mode (more reliable than "Automatic" for non-trivial conversion pages), and map `email`, `phone_number`, `address.first_name`, `address.last_name`, `address.postal_code`, `address.country` to the corresponding DLVs.
  4. In Preview mode, complete a real test conversion. Use DevTools → Network to inspect the outgoing request to googleads.g.doubleclick.net or googleadservices.com. Look for a `pii=` or `em=` parameter with a hashed value (long base64 string). If the parameter is missing or empty, the mapping is broken.
  5. Wait 7-14 days, then check Google Ads → Tools → Conversions → Diagnostics. Match rate above 70% means the feature is doing real work. Below 30% means the DLVs are mostly resolving empty in production even if Preview looked fine.

Example

Configuration
Tag: Google Ads - Purchase Conversion
Enhanced Conversions: Enabled, mode = Code
email: {{DLV - customer.email}}
phone_number: {{DLV - customer.phone}}
address.first_name: {{DLV - customer.firstName}}
address.last_name: {{DLV - customer.lastName}}
address.postal_code: {{DLV - customer.postalCode}}
address.country: {{DLV - customer.country}}
For Your Client Report

This GTM container has Enhanced Conversions enabled on one or more Google Ads Conversion Tracking tags, but the user-data fields are unmapped or resolve to empty values. Per Google's Enhanced Conversions for Web documentation, the feature requires populated first-party user data (email, phone, or address) at conversion time to recover attribution lost to cookie restrictions and cross-device gaps. Without populated user data, the conversion is reported but no match signal is sent: the match rate is zero and Enhanced Conversions provides no measurable lift. Fix: map first-party customer fields from the conversion-page dataLayer into the tag's Enhanced Conversions configuration, then verify the Diagnostics match rate in Google Ads after 7-14 days. Source: support.google.com/google-ads/answer/9888656.

Drop this paragraph into your client deliverable. Sources back to the canonical platform documentation linked below.

References

Audit your own files for this check

AdLint runs this check (and 177 others) against your GTM, Google Ads, Meta, TikTok, LinkedIn, Pinterest, Twitter/X, and Snapchat exports. Everything stays in your browser. No uploads, no accounts.

Run a free audit