BlogConversion Tracking

Google Ads Enhanced Conversions Not Working? Causes and Fixes

Google Ads Enhanced Conversions Not Working? Causes and Fixes | Cut The Lag

You turned on Enhanced Conversions, waited a week, and the diagnostics still say something is wrong. Or worse, they say everything is fine while your match rate sits near zero and nothing has improved.

The short answer: when enhanced conversions are not working, the cause is almost always that user data is missing, malformed, or blocked at the moment the conversion tag fires. Fix how the email or phone number is captured, formatted, and consented, make sure it attaches to the right conversion action, then confirm in the Diagnostics tab that data is actually arriving.

What Enhanced Conversions actually needs to work

Enhanced Conversions sends a hashed version of first-party data (usually email, sometimes phone, name and address) alongside a conversion. Google matches that hash to signed-in Google accounts to recover conversions that cookies alone would miss.

For that to happen, four things must be true at the same time:

  1. The user data exists in the browser or in your server request when the conversion fires.
  2. It is formatted correctly (normalized) before it is hashed.
  3. Consent allows it to be sent.
  4. It is attached to a conversion action that Google Ads is set up to enhance.

Every common failure breaks one of those four.

1. The tag fires before the form data exists

This is the most frequent cause I find in audits. The conversion tag fires on a thank-you page, but the email field lived on the previous page. By the time the tag runs, there is nothing to read.

Typical symptoms:

  • Diagnostics report that enhanced conversions data is missing on most conversions.
  • Tag Assistant shows the conversion hit with an empty or absent user data object.
  • The form is embedded in an iframe (HubSpot, Calendly, Typeform) so the parent page never sees the fields.

How to fix it

  • Push the data to the dataLayer on submit. Capture the email and phone at the moment of submission and push them in the same event that triggers the conversion. Then read them with a Data Layer Variable in GTM.
  • Persist across a redirect. If the thank-you page is a separate URL, store the values briefly in sessionStorage on submit and read them on the confirmation page. Clear them afterward.
  • Use the form tool's own events. Most embedded form tools post a message or expose a callback on submit. Listen for that instead of scraping the DOM.

2. Hashing and normalization errors

Google can only match a hash if the input was normalized exactly the way it expects. One stray space or capital letter produces a completely different SHA-256 value, and the match silently fails.

Email

  • Trim leading and trailing whitespace.
  • Convert to lowercase.
  • For gmail.com and googlemail.com addresses, Google's guidance for manual hashing is to remove periods before the @.

Phone

  • Use E.164 format: a plus sign, country code, then the number with no spaces, dashes or parentheses. A US number looks like +15125550123.
  • A number collected as "(512) 555-0123" without the country code will not match.

When to hash yourself

If you pass plain-text values through the Google tag or GTM's user-provided data variable, Google normalizes and hashes them for you. Problems start when a developer hashes the data first but skips normalization, or hashes it twice. If you send pre-hashed values, use SHA-256, hex encoded, after normalization, and send them in the fields meant for hashed data.

3. Consent mode is blocking user data

With Consent Mode v2, user-provided data is only sent when the ad_user_data consent signal is granted. If your consent banner defaults it to denied and never updates it, Enhanced Conversions will look configured and send nothing.

Check these points:

  • Your consent platform sets ad_user_data, not just ad_storage and analytics_storage.
  • The consent update fires before the conversion tag, not after it.
  • US traffic is not given EU-style default denial unless your legal team intended it.

Use GTM Preview mode and look at the Consent tab on the conversion event. It shows the exact state each signal was in when the tag fired.

4. Automatic detection and CSS selectors break quietly

Automatic detection scans the page for something that looks like an email. It is quick to turn on and fragile in practice. It can miss fields inside iframes or shadow DOM, pick up the wrong field (a newsletter box in the footer), or stop working after a site redesign.

CSS selector setups have the same weakness. A developer renames a class, a form builder updates its markup, and the selector now points at nothing. Nobody notices because the conversion itself still records.

My recommendation: use code-based setup (dataLayer values mapped into the user-provided data variable, or user_data set through gtag) for any form that matters. It survives redesigns and is easy to verify.

5. The data is attached to the wrong conversion action

Enhanced Conversions data rides along with a specific conversion tag. If the tag sending user data is not the one tied to the conversion action you bid on, the improvement never reaches bidding.

Common versions of this problem:

  • User data is configured on a GA4 imported conversion while the Google Ads native tag is the primary action (or the reverse).
  • There are duplicate conversion actions with similar names, and the enhanced one is set as secondary.
  • A GTM tag uses an old conversion label from a deleted or replaced action.

Go to Goals > Conversions > Summary, open the action you actually optimize toward, and confirm its conversion ID and label match the GTM tag carrying user data.

6. Leads setup versus web setup confusion

There are two flavors, and mixing them up causes a lot of "it is not working" tickets.

Enhanced conversions for webEnhanced conversions for leads
What it improvesMeasurement of online conversions like form fills and purchasesMeasurement of offline outcomes like qualified leads and closed deals
Where data comes fromThe conversion tag on your siteHashed data captured on the form, then matched when you upload CRM outcomes
Upload neededNoYes, via the API, Data Manager, a CRM integration or file uploads

If you turned on the leads version but never set up an import of CRM outcomes, nothing will show up. If you are uploading offline conversions but the form never captured hashed user data, matches will be thin. Both halves have to be in place, and the import side is where most of the lead-quality gains come from.

Also confirm the account has accepted the customer data terms. Enhanced Conversions settings will not fully activate without them.

7. Reading the Diagnostics tab and match rate

Open the conversion action and look at the Diagnostics tab. It reports on enhanced conversions health, including whether data is being received, the share of conversions with user data, and specific issues such as formatting problems.

How to read it:

  • "No recent data" or "Unverified": the tag is not sending user data at all. Go back to causes 1, 3 and 4.
  • Data received but low coverage: some submissions carry data and others do not. Look for a second form, a different template, or a consent path that denies data.
  • Formatting warnings: normalization problems, usually phone numbers without a country code.

Give it time. Diagnostics typically need a few days of conversions before they update, and low-volume accounts may take longer to show a clear picture.

A quick verification routine

  1. Submit a test lead with a real email you control.
  2. In GTM Preview, confirm the conversion tag fired and the user-provided data variable holds the email and phone in the expected format.
  3. Check the Consent tab for ad_user_data: granted at the moment of firing.
  4. Confirm the conversion label matches the primary action in Google Ads.
  5. Recheck Diagnostics after a few days of normal traffic.

If the routine passes and match coverage is still weak, the problem is usually upstream: forms that do not ask for email, or traffic from users who are rarely signed in to Google. At that point, connecting CRM outcomes gives you more to gain than more tag tweaking. I handle both sides in my conversion tracking work when an account needs it.

FAQ

How long does it take for enhanced conversions to show as working?

Diagnostics usually update within a few days of conversions coming in with user data. Low-volume accounts can take longer, so allow at least a week before judging a fix.

Do I need to hash emails before sending them through Google Tag Manager?

No. If you pass plain-text values through the Google tag or GTM's user-provided data variable, Google normalizes and hashes them before sending. Only hash yourself if you have a reason to, and normalize first.

Can enhanced conversions work if users decline cookies?

It depends on your consent setup. User-provided data is only sent when ad_user_data is granted, so a declined or default-denied state will stop enhanced conversions data for that user.

Want me to look at your account?

Tell me what's going on. I'll reply within one business day with where I'd start.