Classic Google Ads conversion tracking reaches 60-70% match rate. The rest is lost to ad blockers (in Germany ~49% adoption), iOS ATT and Safari ITP. Enhanced Conversions supplement GCLID-based cookie matching with hash-matched user data (email, phone, name) and raise match rate to over 90%. Advertisers report 5-10% more measured conversions after activation, with YouTube campaigns at median +17%.

This guide walks through the clean setup via Server-Side GTM in five steps: Conversion Linker, user data in dataLayer, Google Ads conversion tag in sGTM, activating Enhanced Conversions in Google Ads, and verifying match rate. Plus: why you should NOT hash user data yourself (most common mistake, affects ~30% of all setups).

Prerequisite: Server-Side GTM container already running. If not: walk through the Stape.io setup guide first. For background: the Pillar article on Server-Side Tracking.

1. What Enhanced Conversions are

Standard Google Ads tracking works via the GCLID (Google Click Identifier): on ad click a cookie is set, on conversion event this cookie is sent back to Google. Works - as long as cookies live.

Problem: Safari caps cookie lifetime to 7 days (ITP - details and how to bypass it), iOS restricts app tracking, and ad blockers (~49% adoption in Germany) block cookies entirely. Result: match rate falls from theoretical 100% to a real 60-70%.

Enhanced Conversions supplement GCLID matching: in addition to cookies, hash-matched user data (email, phone, name, address) is sent to Google. Google matches this against its own data model - independent of cookies. Match rate rises to over 90%, advertisers see 5-10% more measured conversions, YouTube campaigns at median +17% per Google's own data.

Why does the data match at all?
Google has user profiles from 4+ billion accounts (Gmail, YouTube, Search, Android). If your conversion event sends a hash email that matches Google's hash, Google knows: this was the same user. No cookie needed. No ad blocker can block this.

2. Web vs Leads - now unified (April 2026)

Until April 2026 there were two separate Enhanced Conversions settings:

  • Enhanced Conversions for Web: user data comes from the website form on conversion (e.g. newsletter signup, order).
  • Enhanced Conversions for Leads: upgrade of the classic offline conversion import - user data comes from the CRM after lead qualification (B2B sales cycle).

Since April 2026 both are unified: Google Ads simultaneously accepts user data from website tags, Data Manager and API connections - you no longer have to choose. This guide covers the Web setup path (most common), the CRM variant follows in step 9.

3. Prerequisites

  • Server-Side GTM container running with own subdomain. If not: Stape setup guide.
  • Google Ads account with existing conversion (GCLID-only OK - will be upgraded)
  • Google Tag Manager access to Web and Server containers (edit rights)
  • Consent Mode v2 active in Web container
  • At least 1 conversion event that captures user data (e.g. order form with email field)

4. Step 1: Conversion Linker in Web container (5 min)

Conversion Linker is the prerequisite for ALL Google Ads tracking. It collects GCLID, gclsrc, gbraid, wbraid (all click identifiers) from URL parameters and stores them in first-party cookies (cookie name: _gcl_*).

  1. Open Web container → Tags → New
  2. Tag type: Conversion Linker
  3. Trigger: All Pages
  4. Save - tag name: Conversion Linker

Conversion Linker is passive - fires on every page, writes cookies, no configuration needed.

5. Step 2: Capture user data in dataLayer (10 min)

On every conversion event you must push user data to the dataLayer. Which fields:

FieldFormatMatch impact
emailplaintext, lowercase, trimmed⭐ very high (80%+ of matches)
phone_numberE.164 format (+491522…)high
address.first_nameplaintext, lowercasemedium
address.last_nameplaintext, lowercasemedium
address.streetplaintext, lowercaselow
address.cityplaintext, lowercaselow
address.regionplaintext, lowercaselow
address.postal_codeplaintextmedium
address.countryISO 3166 alpha-2 (e.g. DE)low
IMPORTANT: do NOT hash the data yourself!
Most common mistake in EC setups (~30% of all implementations): data is pre-hashed in GTM with SHA-256. Google's Conversion tag then hashes again - double hashing makes matching impossible. Send unhashed - Google does the rest. (Unlike Meta CAPI, where you have to hash yourself!)

Example dataLayer push on Purchase event

dataLayer Push
dataLayer.push({
  event: 'purchase',
  value: 89.95,
  currency: 'EUR',
  transaction_id: '12345',
  user_data: {
    email: 'customer@example.com',
    phone_number: '+491522123456',
    address: {
      first_name: 'max',
      last_name: 'mustermann',
      street: 'beispielstrasse 12',
      city: 'wuerzburg',
      region: 'bayern',
      postal_code: '97070',
      country: 'DE'
    }
  }
});

6. Step 3: Google Ads conversion tag in sGTM container (10 min)

  1. sGTM Server container → Tags → New
  2. Tag type: Google Ads Conversion Tracking
  3. Conversion ID: from Google Ads → Tools → Conversions → your conversion → Tag Setup (format: AW-1234567890)
  4. Conversion Label: from the same place
  5. Conversion Value: {{Event Data - value}}
  6. Currency Code: {{Event Data - currency}}
  7. Transaction ID: {{Event Data - transaction_id}}
  8. User-Provided Data: set to Enabled, source {{Event Data - user_data}}
  9. Trigger: Custom Event on purchase (or your event name)
  10. Save + publish container

7. Step 4: Activate Enhanced Conversions in Google Ads (2 min)

  1. Google Ads UI → Tools → Conversions
  2. Select your conversion → Edit Settings
  3. Open „Enhanced Conversions" section
  4. Activate „Turn on enhanced conversions"
  5. Implementation method: „Google Tag" (for GTM setup)
  6. Enter Privacy Policy URL (required!)
  7. Save

8. Step 5: Check match rate + optimize (3 min)

Match rate is calculated ~48 hours after going live. Where to find it:

  1. Google Ads UI → Tools → Conversions
  2. Select your conversion → Diagnostics tab
  3. „Enhanced Conversions Diagnostics" section
  4. Match rate should be above 70% (goal: 90%+)
If match rate is under 50%:
Usually data capture is broken or hash format is wrong. Check Diagnostics: common error hint is „Enhancement rate low" with a concrete note which field is missing or wrongly formatted.

9. Conversion Import / CRM connection (optional)

For B2B SaaS with long sales cycles, web tracking isn't enough: a trial sign-up today might only become a paying customer in 3 months. To let Google match this, you need Enhanced Conversions for Leads (= conversion import + EC):

  1. In the CRM: on deal-closed, capture email + GCLID of original click
  2. Send data to Google Ads via:
    • Google Ads Data Manager (UI-based, easy)
    • Google Ads API (developer-friendly, automated)
    • Zapier / Salesforce integration (ready-made connectors)
  3. Google matches the email against the original click and attributes the conversion back

For B2B SaaS with HubSpot or Pipedrive the CRM path is always worth it - otherwise Smart Bidding only optimizes for sign-ups, not for paying customers.

10. Common problems & solutions

ProblemSolution
Match rate stays under 50%Data capture broken OR hash format wrong. Do NOT hash yourself - send plaintext.
„Enhancement rate low" in DiagnosticsEmail missing in many conversions or wrong format (e.g. not trimmed). Lowercase + trim email.
Double hashingIf you send PII already hashed and Google hashes again: nothing matches. Send unhashed - Google's tag hashes itself.
EC active but match rate = 0%User-Provided-Data not enabled in tag OR trigger doesn't fire. Check Server container preview mode.
Privacy policy error in EC setupPrivacy Policy URL is a required field. Enter it, otherwise Google won't let you activate EC.
Conversion Linker missingWithout Conversion Linker, no GCLID cookie capture → no EC effect. Add tag to Web container.

11. GDPR + data minimization

Enhanced Conversions is GDPR-compliant if properly implemented:

  • Consent Mode v2 active: tags only fire with consent
  • Data minimization (Art. 5(1)(c) GDPR): only user data you already collect in your form
  • Privacy Policy mentions Google Ads as data recipient and Enhanced Conversions explicitly
  • DPA with Google: Data Processing Agreement under Art. 28 GDPR
  • Server-side hashing: plaintext PII only briefly in server memory (Google's servers in EU for EU users)
  • No sensitive data: health data, financial data, political data must not end up in user data fields

12. FAQ

What are Enhanced Conversions?

Enhanced Conversions supplement classic GCLID-based tracking with hash-matched user data (email, phone, name). This allows Google to match without a cookie - match rate typically rises from 60-70% to over 90%. Advertisers report 5-10% more measured conversions after activation, with YouTube campaigns even seeing a median +17%.

What is the difference between Enhanced Conversions for Web and for Leads?

Enhanced Conversions for Web are for online conversions (sale, sign-up) - user data comes from the website form. Enhanced Conversions for Leads are for offline conversions - user data comes from the CRM after lead qualification. As of April 2026, both are unified into a single setting - Google Ads simultaneously accepts user data from website tags, Data Manager and API connections.

Should I hash the user data myself?

No - that's the most common mistake (industry estimates ~30% of all setups). Google's Conversion tag automatically hashes user data with SHA-256. If you hash yourself (e.g. because you're used to it from Meta CAPI), it gets double-hashed and Google can't match anything. Send unhashed email, phone etc. - Google does the rest.

Why Server-Side GTM and not Web container?

Web container tracking is limited by ad blockers (49% adoption in Germany), iOS ATT and Safari ITP. Server-Side GTM runs on your own subdomain - independent of browser JavaScript. This makes conversion events arrive more reliably. The combination Server-Side GTM + Enhanced Conversions closes both the browser gap and the cookie gap.

Is Enhanced Conversions GDPR-compliant?

If properly implemented: yes. Requirements are Consent Mode v2 (tags block without consent), data minimization (only what you need), DPA with Google (Data Processing Agreement under Art. 28 GDPR) and no sensitive data in the user-provided fields. Google hashes server-side with SHA-256 - no plaintext transmission path exists.

Which user data belongs in Enhanced Conversions?

Required for high match rate: email (most important - 80%+ of matches come from this), phone (E.164 format), first name, last name. Optional: address (street, city, region, postal_code, country). More fields = higher match rate. Email alone moves the score the most - if you can only add one field, make it email.

Want Enhanced Conversions set up cleanly?

I set up Enhanced Conversions via sGTM end-to-end - with Conversion Linker, user-data pipeline and match rate at 90%+. As Google Ads module from €200.

Request setup
Back to Blog