Skip to main content
Back to Guides
Integration14 min read

Google Enhanced Conversions: Server-Side Implementation Guide

Implement Google Enhanced Conversions server-side to recover lost conversion data from privacy-restricted browsers and consented users. Use hashed first-party data to improve bidding accuracy without violating privacy regulations.

What Are Google Enhanced Conversions?

Enhanced Conversions is a Google Ads feature that improves the accuracy of your conversion measurement by supplementing your existing conversion tags with hashed, privacy-safe first-party customer data — such as email addresses and phone numbers collected at the point of conversion.

When a customer converts on your site, you send their hashed customer data to Google alongside the standard conversion tag. Google then matches this data against signed-in Google accounts to attribute the conversion even when cookies aren't available due to:

  • iOS Intelligent Tracking Prevention (ITP)
  • Cookie consent refusal under GDPR
  • Cross-device conversions (user researched on phone, purchased on desktop)
  • Ad blocker interference

Enhanced Conversions Can Recover 15–30% of Lost Conversions

Google's own studies show that advertisers implementing Enhanced Conversions see a 15–30% increase in measured conversions on average. This data feeds directly into Smart Bidding algorithms, improving tROAS and tCPA performance over time.

Standard Conversions vs Enhanced Conversions

AspectStandard Conversion TagEnhanced Conversions
Data usedBrowser cookies (gclid, wbraid)Cookies + hashed customer data (email, phone)
Cross-device attributionLimitedStrong — matches via Google account
iOS ITP impactMajor degradationPartial recovery via email matching
Consent requiredYes, for cookie placementYes, for sending customer data (ad_user_data)
Smart Bidding signal qualityBaselineSignificantly improved
ImplementationSimple tagRequires hashed PII from server

Server-Side vs On-Page Enhanced Conversions

Google offers two implementation methods. For privacy-conscious implementations and maximum data quality, the server-side approach is strongly preferred:

  • On-page (gtag.js): JavaScript reads form data from the DOM and hashes it in the browser. Simpler but exposed to ad blockers and relies on cookies.
  • Server-side (via Google Ads API or sGTM): Your backend hashes the customer data and sends it directly to Google. Not affected by ad blockers, works without client-side cookies.

Server-Side Enhanced Conversions Setup

1

Enable Enhanced Conversions in Google Ads

In Google Ads, go to Tools & Settings → Measurement → Conversions. Select your conversion action, click Settings, and scroll to Enhanced conversions. Enable it and choose 'API' as the implementation method.

2

Accept Google's customer data terms

Navigate to Admin → Account Settings → Conversion settings and accept the Customer Data Terms. This is required before any customer data can be sent to Google.

3

Collect customer data at conversion

On your order confirmation or lead submission page, capture the user's email and/or phone number from the submitted form. Also capture the gclid parameter from the landing page URL (Google Click ID) — this links the data to the specific ad click.

4

Hash customer data with SHA-256

Before sending to Google, normalize and hash each field: lowercase the email, remove spaces from phone numbers and include country code. Apply SHA-256 hashing. Never send raw PII.

5

Send via Google Ads API or sGTM

Use the Google Ads API UploadClickConversions endpoint, or configure an Enhanced Conversions tag in your sGTM server container. Include the conversion_date_time, gclid, conversion_action, and hashed customer data.

6

Verify in Diagnostics

In Google Ads, check Tools → Measurement → Conversions → Diagnostics. You should see 'Enhanced conversions active' and match rate data within 24–48 hours.

enhanced-conversions.js

Consent Mode + Enhanced Conversions

You must only send hashed customer data to Google when the user has consented to ad_user_data (a Consent Mode v2 signal). Without this consent, sending customer data violates GDPR. CookieBeam's sGTM integration automatically gates enhanced conversion data based on the user's consent state.

Enhanced Conversions Launch Checklist

  • Enhanced Conversions enabled in Google Ads conversion action settings

    Select 'API' as implementation method for server-side.

  • Customer Data Terms accepted in account settings

    Required before any customer data can be transmitted to Google.

  • gclid captured and stored at landing page

    Store the gclid in session/cookie at the first page view so it's available at conversion time.

  • Email and/or phone hashed with SHA-256

    Normalize before hashing: lowercase, trim whitespace. Phone must include country code.

  • Consent check before sending

    Only send enhanced conversion data when ad_user_data consent signal is 'granted'.

  • Match rate verified in Diagnostics

    Target match rate of 40%+. Below 20% suggests data quality issues.

Enhanced Conversions for Leads (EC for Leads)

Distinct from EC for Web

Enhanced Conversions for Leads is a separate product from Enhanced Conversions for web. While both use hashed customer data to improve match rates, the use case and data flow are fundamentally different:

  • Enhanced Conversions for Web is designed for online transactions where the conversion happens on your website. You send hashed customer data alongside the Google Ads conversion tag at the moment of conversion.
  • Enhanced Conversions for Leads is designed for lead generation businesses where the conversion (a closed sale or qualified lead) happens offline — in a CRM, after a sales call, or after a trial period ends. You upload hashed lead data to Google Ads post-conversion.

The distinction matters because EC for Leads requires a different API endpoint (UploadClickConversions with a gclid or wbraid identifier) and a different attribution window — typically 30–90 days after the initial click, rather than same-session.

Setting Up Enhanced Conversions for Leads: Key Steps

  1. Enable EC for Leads in Google Ads under Tools → Measurement → Conversions. Select a conversion action of type Import from CRM or Lead form submission.
  2. Capture the gclid (Google Click ID) from the URL when a user lands on your site from a Google Ad. Store it in your CRM against the lead record. CookieBeam automatically captures and stores the gclid in a first-party cookie on landing.
  3. When a lead converts offline (e.g., closes in your CRM), retrieve the stored gclid, hash the lead's email and phone, and call UploadClickConversions with the conversion time, conversion action, and hashed customer data.
  4. Google matches the gclid to the original ad click and attributes the offline conversion to the correct campaign, ad group, and keyword — feeding Smart Bidding with signals it would never receive from online-only tracking.

How Google Matches Your Data: The Technology Behind Enhanced Conversions

Understanding how Google processes your hashed customer data is essential both for setting realistic expectations about match rates and for explaining the privacy protections to stakeholders and data protection officers.

Google Enhanced Conversions uses two core privacy-preserving technologies:

Keyed Data (One-Way Hashing)

When you send a hashed email address to Google, you are sending a one-way cryptographic hash (SHA-256). Google cannot reverse this hash to recover the original email address. Instead, Google maintains a hashed index of signed-in Google account email addresses. When your hashed email arrives, Google computes the same hash of its stored emails and looks for a match. The match tells Google that this conversion belongs to a known Google user — but the actual email address never leaves your server in plaintext.

Private Join and Compute (PJAC)

For cases where the hashed data does not match a signed-in session directly, Google uses a technique called Private Join and Compute. This is a cryptographic protocol that allows two parties (you and Google) to jointly compute a match without either party revealing their underlying data to the other. In practice, this means Google can attribute conversions to ad clicks even when the user was not signed into their Google account at the time of the ad click — extending the match reach significantly beyond standard hashed matching.

The result: a higher match rate than simple hash comparison alone, while preserving the mathematical guarantee that neither party can extract raw personal data from the other's dataset. This architecture is what allows Enhanced Conversions to operate within GDPR's data minimisation requirements — provided you have obtained the appropriate consent (ad_user_data signal) before sending customer data.

Smart Bidding Signal Quality: Before and After Enhanced Conversions

Bidding SignalWithout Enhanced ConversionsWith Enhanced Conversions
Conversion measurement completeness60–75% of actual conversions visible (iOS, ad blockers, cookie refusals create blind spots)85–95% of actual conversions measurable via hash matching and PJAC
Cross-device attributionMinimal — click on mobile, purchase on desktop is typically unattributedStrong — Google account sign-in bridges the device gap via email matching
tCPA (target CPA) accuracyBidding model sees incomplete signal; tends to over-bid on low-value trafficBidding model sees fuller signal; CPA targets tighten by 10–25% on average
tROAS (target ROAS) accuracyRevenue under-reported; ROAS target met on paper but reflects only partial conversionsRevenue more accurately reported; ROAS targets become meaningful and achievable
Audience list quality (Remarketing)Purchaser lists thin — many converters missing from the list due to cookie gapsPurchaser lists more complete — known customers can be excluded or targeted more precisely
Smart Bidding learning periodLonger — algorithm needs more time to stabilise on noisy dataShorter — cleaner signal allows the algorithm to exit learning mode faster

Offline Conversion Imports vs Enhanced Conversions: Which to Use?

DimensionOffline Conversion Import (OCI)Enhanced Conversions (EC)
Primary use caseConversions that happen entirely offline (phone sales, in-store, CRM closes)Online conversions where cookies or tags may be missing or blocked
Data sent to Googlegclid or wbraid + conversion value + conversion timeHashed customer data (email, phone) + standard conversion data
Attribution mechanismDirect match on click ID — highly deterministicProbabilistic + hash match — broader but slightly less precise
LatencyCan be days or weeks after the click (CRM pipeline delay)Near real-time — sent at point of on-site conversion
Technical requirementCRM integration to capture and upload gclid. Typically a scheduled batch job.Server-side hashing at conversion point. Works well with sGTM or direct API calls.
Consent requirementgclid capture requires ad_storage consent at landing timeSending hashed PII requires ad_user_data consent
Best combined withLead generation, B2B, high-value retail with long sales cyclesE-commerce, SaaS sign-ups, any online conversion with customer data available

Troubleshooting Low Match Rates

A match rate below 20% in Google Ads Diagnostics indicates that your hashed customer data is not matching Google accounts effectively. The checklist below covers the most common causes. Work through each item systematically before concluding that your data quality is the limiting factor.

Low Match Rate Troubleshooting Checklist

  • Email normalisation: are you lowercasing before hashing?

    SHA-256('[email protected]') ≠ SHA-256('[email protected]'). Always lowercase and trim whitespace before hashing. This single issue accounts for ~30% of match rate failures.

  • Phone number format: is the country code included?

    Google requires E.164 format: +447911123456. SHA-256('07911123456') will not match SHA-256('+447911123456'). Strip all non-numeric characters except the leading + sign.

  • Are you sending the most recent customer email?

    Users who created accounts years ago may have changed their primary Google email. If you have multiple email addresses for a customer, send all of them (as separate em values in the array). Google will attempt to match each.

  • Is the gclid being captured at landing page load?

    The gclid must be captured from the URL on the first page load after an ad click — not after redirect or page navigation. CookieBeam automatically reads and stores gclid, wbraid, and gbraid on landing.

  • Is ad_user_data consent being checked before sending?

    If you only send EC data for users who consented, a low match rate may reflect a low consent rate rather than a data quality issue. Check your CookieBeam consent analytics to see what % of converters gave ad_user_data consent.

  • Have you accepted Google's Customer Data Terms?

    Without accepting the terms in Google Ads Admin → Account Settings → Conversion settings, EC data is silently dropped. Verify acceptance status and re-accept if the terms have been updated.

  • Are you sending enough volume for Google to report statistics?

    Google requires a minimum of ~50 conversions per month to report meaningful match rate data. If you are below this threshold, match rate will show as unavailable or unreliable.

  • Is there a conversion window mismatch?

    For EC for Leads, ensure the conversion date_time sent to Google falls within your conversion action's attribution window (default 30 days). Conversions outside the window are accepted but not attributed to campaigns.

Frequently Asked Questions: Google Enhanced Conversions

Does Enhanced Conversions work with Google Analytics 4 (GA4) conversions imported into Google Ads?

Yes, and this is the recommended setup for most advertisers. When you import GA4 conversion events into Google Ads, Enhanced Conversions enrichment is applied automatically if you have enabled Enhanced Conversions for web on the GA4 property and have the relevant Google tag in place. The hashed customer data sent via the Enhanced Conversions tag on your site enriches the GA4 conversion events as they are imported into Google Ads. You do not need a separate Google Ads conversion tag if you are importing from GA4.

Is Enhanced Conversions the same as Customer Match?

No. They are related technologies but serve different purposes. Customer Match uses hashed customer data to build audience lists in Google Ads — used for targeting, exclusion, and similar audiences. Enhanced Conversions uses hashed customer data to attribute conversions more accurately and feed better signals to Smart Bidding. The underlying hashing mechanism is the same (SHA-256), but the data flows to different parts of the Google Ads system. CookieBeam supports both: EC via the server-side integration, and Customer Match via a scheduled CRM export.

What consent is required to use Enhanced Conversions under GDPR?

Sending hashed customer data to Google for conversion attribution requires that the user has consented to the ad_user_data signal under Google Consent Mode v2. This signal indicates the user consents to their data being sent to Google for advertising purposes. Without this consent, sending customer data — even hashed — constitutes a GDPR violation under the data minimisation and purpose limitation principles. CookieBeam enforces this: when a user declines marketing cookies, the EC data enrichment is automatically stripped from the conversion payload before it is sent server-side.

How long does it take to see improvements in campaign performance after enabling Enhanced Conversions?

Google's Smart Bidding algorithms require a learning period of approximately 2–4 weeks after a significant change to the conversion signal. After enabling Enhanced Conversions, expect your campaign performance to fluctuate during this period. The algorithm is recalibrating against the new, richer signal. After the learning period, most advertisers see a 10–25% improvement in CPA or ROAS compared to their pre-EC baseline. Monitor the All Conversions column (which includes modelled conversions) rather than just Conversions during the transition.

Can I use Enhanced Conversions without server-side infrastructure?

Yes — Google offers an on-page implementation using gtag.js that reads form data from the DOM and hashes it in the browser. However, this approach has significant limitations: it relies on client-side JavaScript (blocked by ad blockers), it requires cookie consent for the gtag.js script to execute, and it is harder to audit for PII leakage. CookieBeam recommends the server-side approach via sGTM for all production deployments, as it provides better data quality, is immune to ad blockers, and is easier to audit for GDPR compliance. The on-page approach is acceptable only for low-traffic sites or as a quick proof-of-concept.

What happens if I accidentally send unhashed customer data?

Google's API will typically return a validation error and reject the event if it detects recognisable PII patterns (e.g., strings containing @ symbols that look like email addresses, or 10–13 digit strings that look like phone numbers) in the customer data fields. However, this detection is heuristic, not guaranteed. To prevent accidental PII exposure, CookieBeam's server-side EC integration validates that all customer data fields are 64-character hex strings (the correct format for SHA-256 hashes) before dispatching any event. Events that fail this validation are logged in the CookieBeam diagnostics panel for review.

Enhanced Conversions Is Live — What to Watch

Within 24–48 hours of enabling Enhanced Conversions through CookieBeam, check Google Ads → Tools → Measurement → Conversions → Diagnostics for the 'Enhanced conversions active' status and initial match rate. Target a match rate above 40% and a steady upward trend in your All Conversions column. If your match rate is below 20%, work through the troubleshooting checklist above — normalisation issues with email or phone number format account for the majority of low-match-rate cases.

Google Enhanced Conversions Server-Side Guide | CookieBeam | CookieBeam