Setting Up Enhanced Conversions in Google Tag Manager — GA4 & Google Ads
TL;DR: Enhanced Conversions send hashed first-party data (email, phone) alongside conversion events, improving attribution by 5-15%. Set up in GTM using automatic CSS collection, manual selectors, or data layer variables. GTM handles SHA-256 hashing automatically — send plaintext values. Enable Enhanced Conversions in both GTM and Google Ads/GA4 admin.
Third-party cookies are disappearing. Browser privacy features block traditional conversion tracking. Enhanced Conversions is Google's answer: it sends hashed first-party data (email, phone, address) alongside conversion events, letting Google match conversions to ad clicks more accurately — without relying on cookies.
This guide covers setting up Enhanced Conversions for both GA4 and Google Ads using Google Tag Manager, including the hashing requirements, data sources, and common pitfalls.
What Are Enhanced Conversions?
Enhanced Conversions supplement your existing conversion tags with hashed user-provided data. When a user completes a conversion (purchase, signup, lead form), the tag collects data the user voluntarily entered — email address, phone number, name, or address — hashes it with SHA-256, and sends it to Google alongside the conversion event.
Google uses this hashed data to match the conversion back to the user's Google account, improving conversion attribution accuracy by 5-15% according to Google's own benchmarks.
What Data Can Be Sent?
- Email address — most impactful, recommended minimum
- Phone number — include country code, digits only
- Name — first and last name separately
- Address — street, city, region, postal code, country
At minimum, send the email address. Each additional field improves match rates.
What do I need before setting up Enhanced Conversions?
- Google Tag Manager container on your site
- Existing conversion tracking (GA4 Event tag or Google Ads Conversion tag)
- A form or page where users provide their data (checkout, signup, contact form)
- Enhanced Conversions enabled in your Google Ads or GA4 account settings
Enable in Google Ads
- Go to Goals → Conversions → Settings
- Expand "Enhanced conversions"
- Check "Turn on enhanced conversions"
- Select "Google Tag Manager" as the method
- Save
Enable in GA4
- Go to Admin → Data collection and modification → Data collection
- Toggle on "User-provided data collection"
- Accept the terms
How do I set up automatic Enhanced Conversions collection?
The simplest approach. GTM scans the page for form fields matching known patterns (email inputs, phone inputs) and automatically collects + hashes the values.
Setup Steps
- In GTM, open your existing Google Ads Conversion tag or GA4 Event tag
- Check "Include user-provided data from your website"
- Select "Automatic collection"
- Save and publish
GTM looks for standard form fields: input[type="email"], input[name="email"], input[autocomplete="email"], and similar patterns for phone and address fields.
Limitation: Automatic collection only works if your form uses standard HTML input elements with recognizable attributes. Custom form components, shadow DOM, or non-standard field names won't be detected.
How do I configure Enhanced Conversions manually?
When automatic collection doesn't find your fields, specify the CSS selectors manually.
Setup Steps
- In your conversion tag, check "Include user-provided data from your website"
- Select "Manual configuration" → "CSS Selectors"
- For each data field, enter the CSS selector:
- Email:
#checkout-emailorinput[name="user_email"] - Phone:
#phone-fieldorinput[type="tel"]
- Email:
- Save and publish
The CSS selectors here follow the same stability rules as trigger selectors. Avoid generated class names; prefer id, name, or data-* attributes.
How do I set up Enhanced Conversions via data layer?
For maximum control, push user data to the data layer and reference it in GTM.
Data Layer Push
dataLayer.push({
event: 'purchase',
user_data: {
email: '[email protected]',
phone_number: '+1234567890',
address: {
first_name: 'John',
last_name: 'Doe',
street: '123 Main St',
city: 'New York',
region: 'NY',
postal_code: '10001',
country: 'US'
}
}
});
GTM Configuration
- Create Data Layer Variables for each field:
user_data.email,user_data.phone_number, etc. - Create a "User-Provided Data" variable (new variable type in GTM)
- Map each field to the corresponding Data Layer Variable
- In your conversion tag, select "Manual configuration" → "Variables" and use the User-Provided Data variable
SHA-256 Hashing: Do You Need to Hash Manually?
No. GTM handles SHA-256 hashing automatically before sending data to Google. You should send plaintext values to GTM — it hashes them client-side before transmission.
If you pre-hash data (for example, from your server), GTM won't double-hash it — but you need to tell GTM the data is already hashed by checking the "Data is already hashed" option.
Hashing Requirements
- Email: Lowercase, trim whitespace, then SHA-256. Example:
" [email protected] "→"[email protected]"→ SHA-256 hash - Phone: Include country code, digits only.
+1 (555) 123-4567→+15551234567→ SHA-256 hash - Name: Lowercase, trim whitespace
GTM Event Helper includes built-in SHA-256 hashing for Enhanced Conversions. When you create a GA4 Event or Google Ads Conversion tag, the extension detects email and phone fields on the page and can automatically include them with proper hashing.
How do I test Enhanced Conversions?
- GTM Preview mode: Fire the conversion tag and check the tag details. You should see "User-provided data" with hashed values in the tag output.
- Google Ads: Go to Goals → Conversions → your conversion action → Diagnostics. Look for "Enhanced conversions" status. It may take 48-72 hours after first data to show results.
- GA4: Check DebugView for the event. User-provided data isn't visible in DebugView directly, but you can verify the tag fired with the correct trigger.
Diagnostic Statuses
| Status | Meaning |
|---|---|
| Not recording | No enhanced conversion data received yet |
| Recording | Data is being received and used for matching |
| Tag inactive | Tag hasn't fired recently — check your trigger |
| No recent user-provided data | Tag fires but isn't collecting user data — check CSS selectors or data layer |
What are common Enhanced Conversions mistakes?
- Not enabling Enhanced Conversions in the platform. You must turn it on in both GTM and Google Ads/GA4 admin. The GTM tag alone isn't enough.
- Sending hashed data without marking it as pre-hashed. GTM will double-hash it, producing invalid data.
- Wrong CSS selectors. If the selector doesn't match the actual form field, no data is collected. Test selectors in the browser console:
document.querySelector('#your-selector').value - Firing on the wrong page. Enhanced Conversions data must be collected on the same page/event as the conversion. Collecting email on the signup page but firing the conversion tag on the thank-you page won't work unless you pass the data through.
- Privacy compliance. Enhanced Conversions requires that users voluntarily provide their data. Ensure your privacy policy covers this use case and respect consent signals.
What is the difference between Enhanced Conversions for Web and Enhanced Conversions for Leads?
Google offers two distinct Enhanced Conversions products, and mixing them up is one of the most common setup mistakes.
Enhanced Conversions for Web captures user-provided data at the moment of an online conversion. When a user completes a purchase or submits a lead form on your site, the tag grabs their email, phone, or address from the page and sends it alongside the conversion hit. Everything happens client-side through GTM — no backend integration required.
Enhanced Conversions for Leads works differently. It captures a hashed identifier (typically email) at the lead form submission, then later matches it against offline conversion data you upload from your CRM. This is for businesses where the actual conversion (sale, contract) happens offline — car dealerships, B2B SaaS with sales-assisted deals, real estate.
| Feature | Enhanced Conversions for Web | Enhanced Conversions for Leads |
|---|---|---|
| Data source | User-provided data on the page (forms, checkout) | CRM / offline conversion upload |
| Conversion happens | Online (purchase, signup) | Offline (phone call, in-store, contract signed) |
| Setup complexity | Low — GTM tag configuration only | Medium — requires CRM integration + scheduled uploads |
| Hashing | GTM handles automatically | You hash before uploading, or use Google Ads API |
| Best for | E-commerce, SaaS signups, online lead gen | B2B sales, automotive, financial services |
If your conversions happen entirely online, start with Enhanced Conversions for Web. You can always add Leads later when you have an offline conversion pipeline in place.
How do Enhanced Conversions affect conversion attribution?
Enhanced Conversions don't create new conversions — they improve the accuracy of conversions you're already tracking. The impact shows up in three areas.
Match rate improvement. Without Enhanced Conversions, Google relies on cookies and click IDs to attribute conversions. When users switch devices, clear cookies, or use privacy-focused browsers, the click-to-conversion chain breaks. Enhanced Conversions fill these gaps by matching hashed user data to Google accounts. Most advertisers see a 5-15% increase in attributed conversions, with some verticals (travel, B2B) seeing up to 20%.
Smart Bidding signal quality. Automated bidding strategies (Target CPA, Target ROAS, Maximize Conversions) optimize based on conversion data. More accurate attribution means more signal, which means the algorithm has a better picture of which clicks actually convert. The practical result: bidding stabilizes faster on new campaigns and performs better on existing ones.
Cross-device attribution. A user clicks your ad on mobile, then converts on desktop the next day. Without Enhanced Conversions, this conversion is often lost. With hashed email matching, Google can reconnect the two sessions through the user's Google account, attributing the conversion to the original ad click.
Enhanced Conversions also help during cookie consent scenarios. If a user declines cookies but still submits a form with their email, the hashed data can still be matched — providing attribution where cookie-based tracking would report zero.
What are the privacy and consent requirements for Enhanced Conversions?
Enhanced Conversions send hashed personal data to Google, which makes privacy compliance non-optional. Here's what you need to address.
User must voluntarily provide the data. Enhanced Conversions can only use data that users actively entered — form fields they filled out themselves. You cannot scrape email addresses from page content, local storage, or third-party scripts. Google's terms explicitly prohibit collecting data the user did not intentionally submit.
GDPR compliance (EU/EEA). Under GDPR, hashed email addresses are still personal data (pseudonymized, not anonymized). You need a lawful basis — typically legitimate interest for existing conversion tracking, or explicit consent. Your Data Processing Agreement with Google covers the processor relationship, but you're still the controller.
CCPA/CPRA compliance (California). Enhanced Conversions data falls under "sale or sharing of personal information" if used for cross-context behavioral advertising. Ensure your privacy notice discloses this, and honor opt-out signals (Global Privacy Control).
Consent Mode v2 integration. If you use Google Consent Mode, Enhanced Conversions respects the ad_user_data consent signal. When ad_user_data is denied, the tag won't send user-provided data — even if it's available on the page. Make sure your Consent Mode implementation sets this signal correctly based on user choice.
Privacy policy updates. Add language covering: (1) collection of user-provided data for conversion measurement, (2) SHA-256 hashing before transmission, (3) sharing with Google for ad attribution purposes, and (4) data retention period (Google retains matched data for 63 days).
How do I troubleshoot low Enhanced Conversion match rates?
You've set up Enhanced Conversions but the diagnostics show a low match rate, or the "Recording" status doesn't appear. Work through these checks in order.
Check the diagnostic status meaning. "Not recording" means Google hasn't received any Enhanced Conversion data — your tag isn't collecting or sending user data at all. "No recent user-provided data" means the tag fires but the user data fields are empty. Both point to collection issues, not matching issues.
Verify CSS selectors are correct. Open GTM Preview mode, trigger a conversion, and inspect the tag details. If the user-provided data section shows empty or null values, your CSS selectors aren't matching the form fields. Test in the browser console:
// Check if your selector finds the right element
document.querySelector('#checkout-email')?.value
// Should return the email the user entered
Confirm you're collecting on the right page. Enhanced Conversions data must be available on the same page where the conversion tag fires. If your conversion fires on a thank-you page but the email field was on the previous checkout step, the selector won't find it. Solutions: pass the email via data layer, URL parameter, or server-side session.
Check for empty or malformed values. Whitespace-only emails, phone numbers without country codes, or placeholder text like "Enter your email" all reduce match rates. Validate that the collected value is a real email before the tag sends it.
Test with a known Google account. Submit a test conversion using an email address associated with a Google account you control. Wait 48-72 hours and check if the conversion appears with Enhanced Conversions attribution in your Google Ads report.
Allow time for full assessment. Google recommends waiting 30 days after setup to evaluate Enhanced Conversions performance. Match rates fluctuate early on and stabilize as the system accumulates more data points.
GTM Event Helper's AI Agent detects form fields on the page and validates selectors before creating tags — eliminating the most common cause of low match rates: wrong or broken CSS selectors pointing at empty elements.
Is there a faster way to set up Enhanced Conversions?
Setting up Enhanced Conversions manually involves identifying form fields, writing CSS selectors, configuring the tag, and testing across multiple screens. GTM Event Helper simplifies this:
- Click the form element on your page
- The extension detects email and phone fields automatically
- SHA-256 hashing is applied with no additional configuration
- Trigger + tag + Enhanced Conversions are created in one click
Set up Enhanced Conversions without the headache.
Install GTM Event HelperExternal Resources
- Google Ads: About enhanced conversions
- Google Ads: Set up enhanced conversions with GTM
- GA4: User-provided data collection