Enhanced Conversions improves Google Ads attribution by sending hashed first-party customer data (email, phone, name) alongside conversion events. Essential when cookies are blocked or iOS limits tracking.

Enhanced Conversions dictionary · Consent Mode v2 · GA4 Metrics Reference

What gets sent (hashed SHA-256)

Field Source Impact on match rate
Email (em) Form field, checkout High
Phone (ph) Form field (E.164 format) High
First name (fn) Form field Medium
Last name (ln) Form field Medium
Street address Checkout Low–medium

Google never receives plain-text PII — only SHA-256 hashes.

Prerequisites

  • Google Ads conversion tracking via GTM (or gtag.js)
  • Consent Mode v2 if EEA/UK traffic → Setup guide
  • Form fields collect email and/or phone on conversion pages
  • Privacy policy discloses data use for advertising measurement

Method 1: GTM automatic collection (easiest)

Step 1: Enable in Google Ads tag

  1. GTM → Google Ads Conversion Tracking tag
  2. Enable Enhanced Conversions
  3. Select Automatic collection
  4. GTM detects email/phone fields on conversion page

Google Ads tag → Consent Settings:

Enhanced Conversions Setup Guide (2026): Google Ads + GTM Step-by-Step
  • Require ad_storage for ad cookies
  • Require ad_user_data for enhanced conversion data (EEA)

Step 3: Test

  1. GTM Preview mode → complete test conversion
  2. Google Ads → Conversions → Diagnostics
  3. Look for “Enhanced conversions” status: Recording

Method 2: Manual Data Layer (more control)

Push user data to Data Layer on form submit:

window.dataLayer = window.dataLayer || [];
dataLayer.push({
  event: 'generate_lead',
  user_data: {
    email: 'user@example.com', // GTM hashes automatically
    phone_number: '+9779800000000', // E.164 format required
  },
});

GTM → Google Ads tag → Enhanced Conversions → Manual configuration:

  • Map user_data.email → Email
  • Map user_data.phone_number → Phone number

Trigger: Custom Event generate_lead

Method 3: Server-side (advanced)

For server-side GTM:

  1. Client container captures form data in Data Layer
  2. Server container receives event + user data
  3. Server Google Ads tag hashes and sends to Google
  4. Better control over what data leaves your infrastructure

E-commerce (WooCommerce / Shopify)

Platform Setup
Shopify Google & YouTube app enables Enhanced Conversions automatically
WooCommerce GTM plugin + automatic collection on checkout thank-you page
Custom Manual Data Layer on order confirmation with billing email/phone

Ensure conversion value and transaction ID are also passed.

Verify in Google Ads Diagnostics

Goals → Conversions → [Your action] → Diagnostics

Status Meaning
Recording Working correctly
Needs attention Tag firing but low match rate
Not configured Enhanced Conversions not enabled

Target match rate: 60%+ is good; 80%+ is excellent.

User denies ad_user_data consent
  → Enhanced conversion data NOT sent
  → Google models the gap

User grants ad_user_data consent
  → Hashed email/phone sent
  → Higher match rate, better bidding

Do not send enhanced data without consent in EEA/UK.

Nepal-specific tips

  1. Phone format: Convert to E.164 (+977XXXXXXXXXX) before hashing — many forms collect 10-digit without country code
  2. Lead gen sites: Email + phone on same form maximizes match rate
  3. COD e-commerce: Enhanced Conversions on checkout email still helps even if final sale is COD
  4. Low match rates: Common with shared family emails — phone matching often performs better in Nepal

Troubleshooting

Problem Fix
“Not configured” in diagnostics Enable in GTM tag, publish container
Low match rate Add phone field; verify E.164 format
Tag fires but no enhanced data Check Consent Mode — ad_user_data may be denied
Duplicate conversions Verify only one conversion tag fires per action