Enhanced Conversions Setup Guide (2026): Google Ads + GTM Step-by-Step
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
- GTM → Google Ads Conversion Tracking tag
- Enable Enhanced Conversions ✅
- Select Automatic collection
- GTM detects email/phone fields on conversion page
Step 2: Configure Consent Mode
Google Ads tag → Consent Settings:
- Require
ad_storagefor ad cookies - Require
ad_user_datafor enhanced conversion data (EEA)
Step 3: Test
- GTM Preview mode → complete test conversion
- Google Ads → Conversions → Diagnostics
- 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:
- Client container captures form data in Data Layer
- Server container receives event + user data
- Server Google Ads tag hashes and sends to Google
- 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.
Enhanced Conversions + Consent Mode v2
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
-
Phone format: Convert to E.164 (
+977XXXXXXXXXX) before hashing — many forms collect 10-digit without country code - Lead gen sites: Email + phone on same form maximizes match rate
- COD e-commerce: Enhanced Conversions on checkout email still helps even if final sale is COD
- 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 |
