Google Ads enhanced conversions send data the customer has given you (email, phone, name and address), hashed with SHA256, at the moment of conversion, so Google can attribute conversions that cookies no longer see. On the website you set them up with the Google tag or Google Tag Manager; for leads, you complete them later by importing what happens in your CRM. If your account bids with Smart Bidding and they’re switched off, the algorithm is learning from part of your conversions, not all of them.
This guide is the step-by-step implementation I follow when I set up measurement on an account, including what changed in 2026, which is quite a lot. Which CRM stage to optimise for in B2B, and how to stop paying for junk leads, I’ve already covered in Google Ads B2B: lead quality and offline conversions. This post is the technical side: switching them on, sending the data, respecting consent and checking that it works.
In 30 seconds:
- Since April 2026, enhanced conversions for web and for leads are a single on/off setting in Google Ads, and the account accepts data from the tag, Data Manager and the API at the same time.
- Since 15 June 2026, offline conversion imports and enhanced conversions for leads uploads have moved to the Data Manager API and are blocked in the Google Ads API for most developers.
- On the website there are three ways to capture the data: automatic detection, CSS selectors or variables, and code. Automatic is the fastest; code is the most reliable.
- In the European Economic Area, the consent parameter that matters here is
ad_user_data. Without a properly built Consent Mode, don’t send user data.- You verify it in two places: the
emparameter in the conversion request, and the diagnostics report, which takes about 48 hours to fill up.
What changed with enhanced conversions in 2026?
Google renames and moves these features often, so before configuring anything it’s worth knowing where they stand. This is the state of play as of October 2026, according to the official Google Ads Help:
| Date | Change | What it means for you |
|---|---|---|
| 31 May 2025 | Support ends for the legacy Salesforce integration | Salesforce imports must run through Data Manager (Google Ads Help) |
| April 2026 | Web and leads become one on/off setting | You no longer pick a single method; the account accepts data from the tag, Data Manager and the API (Google Ads Help) |
| 15 June 2026 | Offline and leads imports migrate to the Data Manager API | Custom integrations uploading through the Google Ads API need migrating (Google Ads Help) |
| Current status (October 2026) | File-based GCLID import is labelled “legacy” | Google recommends starting straight away with enhanced conversions for leads (Google Ads Help) |
The line from the documentation I care most about is this one: “Enhanced conversions for web and leads are now combined into a single on/off setting.” Accounts that already had them switched on were migrated automatically. What doesn’t migrate itself is your website: if nothing is sending the data, a switched-on setting does nothing.
On the API side, Google is explicit: from 15 June 2026, offline conversion and enhanced conversions for leads uploads move to the Data Manager API and are blocked in the Google Ads API. Developer tokens that sent no request between January and June 2026 aren’t allowlisted for legacy access. If an agency or a developer built you an upload script years ago, ask them today whether it still works.
How do enhanced conversions for web, for leads and offline imports differ?
All three solve the same problem (conversions Google can’t attribute with cookies) at different points in the funnel.
| Enhanced conversions for web | Enhanced conversions for leads | GCLID offline import | |
|---|---|---|---|
| When the conversion happens | On the website: purchase, sign-up, form | Later, in your CRM: qualified lead, sale | Later, in your CRM |
| What’s sent | Hashed user data alongside the tag’s conversion | Hashed data captured on the form and uploaded later | The click identifier (GCLID) |
| How it’s sent | Google tag or Tag Manager | Tag on the form + Data Manager or API | File, Data Manager or API |
| Upload window | Real time | Up to 63 days | Up to 90 days after the click |
| Best for | Ecommerce and any conversion that happens on site | Lead generation with a sales cycle | Accounts that already have it running well |
The windows come from Google’s FAQs: the GCLID is kept for 90 days, and conversions with personal information for enhanced conversions can be uploaded up to 63 days later (Google Ads Help).
My rule of thumb: if you sell online, start with the website. If a salesperson sits between the click and the sale, you need both pieces, web and leads. And if you already have a working GCLID import, don’t throw it away. Google still recommends including the GCLID in uploads whenever you have it (Google Ads API). Enhanced conversions for leads add the email or phone number on top, and those survive when the GCLID gets lost.
The combination pays off: advertisers who used first-party data, such as emails and phone numbers, alongside imported GCLIDs saw a median 10% increase in conversions compared with those using standard offline conversion imports (Google Ads Help). You can send the GCLID and the email in the same conversion.
If you’re keeping the GCLID import, these are the limits behind most errors:
| Limit | What Google says |
|---|---|
| Click too recent | If the click is less than 6 hours old, the upload is rejected and you retry later (Google Ads Help) |
| New conversion action | Wait 4 to 6 hours after creating it before uploading the first conversion (Google Ads Help) |
| Processing | Usually under 12 hours; up to 72 with GBRAID and WBRAID (Google Ads Help) |
| Time zone | The conversion time needs the right time zone; a mismatch with the account’s is a classic error (Google Ads Help) |
If you’re moving from GCLID to enhanced conversions for leads, don’t switch the old import off on day one. Google recommends waiting one or two conversion cycles, or four weeks, for data to build up before turning off offline import (Google Ads Help).
What do you need before switching on enhanced conversions?
Four things. If one is missing, the setup half-works and you don’t find out until weeks later.
- The Google tag on every page, not just the thank-you page. Google puts it at the base of its measurement guidance (Google Ads Help).
- Accepting the customer data terms in Google Ads. Without that step, data collection doesn’t start (Google Ads Help).
- The data has to exist on the conversion page. Email is preferred; otherwise a phone number in E.164 format, or first name, last name, postcode and country (Google Ads Help).
- A working Consent Mode, and a privacy policy that explains it. More on this below, because it’s where most European implementations go wrong.
How do you set up enhanced conversions for web?
First in Google Ads, then on the website. In that order.
Step 1: switch them on in Google Ads
Go to Goals > Settings, expand “Enhanced conversions”, tick the box to turn them on and accept the customer data terms. Since 2026 you no longer pick a sending method: the account accepts data from the tag, Data Manager and the API at the same time (Google Ads Help). The switch only opens the door; the website is what sends the data, and that’s what steps 2 and 3 cover.
Step 2: choose how to capture the data
With both the Google tag and Tag Manager you get three options:
| Method | How it works | When I use it |
|---|---|---|
| Automatic detection | The tag scans the page for text that looks like an email, phone or address | To get going quickly, with no developer |
| CSS selectors or JavaScript variables | You point to the page element holding each field | When the email shows on the confirmation page and I can’t touch code |
| Code | The site passes the data to the tag explicitly | Whenever I have access to a developer |
Google says it tactfully in its diagnostics help: if you use automatic detection, implementing manually with in-page code in your website tag or via the API may give you more benefit (Google Ads Help). In my experience, automatic detection works on a standard shop and fails on multi-step forms, thank-you pages that don’t display the email, or sites that render content with JavaScript. Is it worth the risk when the code is ten lines?
Step 3a: with the Google tag (gtag.js)
The code method means passing the data before the conversion fires. Values go in unhashed; the tag normalises and hashes them before sending:
gtag('set', 'user_data', {
email: 'customer@example.com',
phone_number: '+447700900000',
address: {
first_name: 'Anna',
last_name: 'Smith',
postal_code: 'SW1A 1AA',
country: 'GB'
}
});
Your developer swaps the sample values for the real order or form variables. Remove any field your site doesn’t collect: one clean email beats five half-empty fields.
If you’d rather hash the data yourself, Google documents the normalisation: trim leading and trailing whitespace, lowercase, phone in E.164, remove periods before the domain in gmail.com and googlemail.com addresses, and hash with hex SHA256 (Google Ads Help).
Step 3b: with Google Tag Manager
In Tag Manager, open your Google Ads Conversion Tracking tag, tick “Include user-provided data from your website” and create a “User-Provided Data” variable. Inside it you choose automatic collection, manual configuration (a DOM Element variable with a CSS selector per field) or code (a Custom JavaScript variable returning an object with email, phone_number and address) (Google Ads Help).
There’s a special case I see a lot on service websites: the form lives on one page and the conversion is counted on another, where the email no longer appears. For that, Google has the user-provided data event tag, with a Form Submission trigger on all forms. That way the data is captured on submit, even though the conversion is counted on the next page.
If you’re on Shopify, the Google app has its own enhanced conversions setting; I cover it in the Google Ads for Shopify guide.
How do you implement enhanced conversions for leads?
With two pieces that have to fit together: the tag captures the data on the form, and later you upload the CRM outcome with that same data.
Piece 1: the tag on the form. It’s the same setup as the previous section, applied to the form submission conversion. The tag sends the hashed email with the lead, so Google can match it later against what you import. The documentation frames it as “an upgraded version of offline conversion import that uses user-provided data” (Google Ads Help).
Piece 2: the import from your CRM. When the lead progresses (qualified, opportunity, sale), you upload that conversion with the email or phone, plus the GCLID if you have it. These days I do it one of two ways:
- Data Manager, inside Google Ads, with direct connections to HubSpot, Salesforce, BigQuery and other sources. Google calls it the mission control centre for connecting online and offline data (Google Ads Help). For most small and mid-sized businesses it’s the right choice: no code and no maintenance.
- The Data Manager API, for custom integrations. It replaces Google Ads API uploads from June 2026 and lets you send audience and conversion data to several Google products in a single call (Google for Developers).
One mistake Google has turned into a diagnostics alert: uploading only the leads that have a GCLID. The official advice is to import all events with user-provided data, even if they don’t have a GCLID (Google Ads Help). That’s exactly the volume the classic import used to lose.
Which CRM stage to upload, and at what value, is a business decision rather than a technical one. I won’t repeat it here: it’s in the B2B offline conversions post I linked at the start.
Two technical constraints do narrow it down, though. The first is the window: with personal data you have 63 days, so if your sale takes longer to close, upload an earlier milestone, such as “opportunity created”, that lands inside it. The second is how you set up the action: Google stresses that configuring it correctly as primary (used for bidding) or secondary (observation only) is critical (Google Ads Help). A “qualified lead” imported as secondary gets measured but changes nothing in bidding.
What does Consent Mode v2 require for enhanced conversions?
For traffic from the European Economic Area, Google requires advertisers to collect end-user consent and pass it on in order to use its tags for measurement, personalisation and remarketing (Google Ads Help). To do that it added two parameters to consent mode:
| Parameter | What it controls, according to Google |
|---|---|
ad_storage | Storage related to advertising, such as cookies |
analytics_storage | Storage related to analytics, for example visit duration |
ad_user_data | Consent for sending user data to Google for online advertising purposes (new) |
ad_personalization | Consent for personalised advertising (new) |
The definitions come from Google’s consent mode documentation. Enhanced conversions send exactly that: user data for advertising purposes. So my rule is simple: if ad_user_data is denied, no user data gets sent. A properly built Consent Mode takes care of it; a broken one doesn’t.
Three checks I always run:
- The default state is declared before any tag. Google warns that if the consent code runs out of order, the defaults won’t work (Google for Developers).
- The banner updates all four parameters, not just the two old ones. I still come across banners that only send
ad_storageandanalytics_storage. - Basic or advanced, chosen on purpose. In basic mode, tags don’t load until the user interacts with the banner; in advanced mode they always load and, if consent is denied, send cookieless pings. Advanced mode gives you conversion modelling specific to your account rather than a general model (Google Ads Help).
None of this replaces your legal adviser’s view on which lawful basis applies. What I can tell you as a consultant is that I’ve never seen an enhanced conversions setup work well on top of a broken Consent Mode.
How do you check that enhanced conversions are working?
At two levels: the request in the browser, the same day, and the diagnostics report, from day two or three.
In the browser
Run a test conversion with Chrome DevTools open. In the Network tab, filter for “google”, find the conversion request and look for the em parameter with a hashed string as its value. If you see tv.1~em with nothing after it, the parameter is empty, usually because the data wasn’t available when the tag fired (Google Ads Help).
In the diagnostics report
In Goals > Summary, hover over the conversion action’s status and open its diagnostics. Google’s help says it takes about 48 hours before the report has data (Google Ads Help). Here’s what I look at:
| Metric | What it is | What I’m looking for |
|---|---|---|
| Coverage | Conversions with user data divided by all conversions, over 7 or 30 days | Close to the share of conversions that actually ask for an email |
| Match rate | How much of the data sent Google manages to match | ”High” means above 15%; “Low” means 0 to 15% |
| Uplift | Extra conversions attributed thanks to user data | Only shown for the first 30 days after they start working |
| Status | Excellent, Good, Needs attention or No recent data | Excellent or Good; anything else comes with an alert to read |
All of it comes from the tag diagnostics report help page. One useful caveat: alerts don’t show if the action has fewer than 20 conversions in 7 days. On small accounts, a clean report doesn’t mean everything works; the browser test counts for more. Leads have their own report, with alerts such as “Tag not firing on your website forms” or “No user-provided data matches” (Google Ads Help).
Common enhanced conversions implementation mistakes
This is what I find when I review accounts that “already have enhanced conversions”:
| Symptom | Usual cause | Fix |
|---|---|---|
| Setting on, coverage low or zero | Nothing is sending the data from the site | Build the capture in code or in Tag Manager |
Empty tv.1~em in the request | The email isn’t on the page where the conversion fires | User-provided data event tag on form submit |
| Lead import full of gaps | Only leads with a GCLID get uploaded | Upload every event with an email or phone |
| Upload script stopped working over the summer | Still using the Google Ads API | Migrate to Data Manager or its API |
| Enhanced conversions without consent | Banner without ad_user_data | Update the banner and the default state |
When the cause isn’t obvious, a measurement review is the first step of any Google Ads account audit, before touching a single bid.
When is it worth bringing in a specialist?
If you run a shop on a standard platform with a recent cookie banner, you or your developer can follow most of this guide in an afternoon. Where I usually come in is three cases: multi-step forms or forms inside third-party tools, CRM integrations that need migrating to Data Manager, and accounts where Smart Bidding has spent months optimising on an incomplete signal. In that last case, remember that changing the conversions your bidding uses sends it back into learning, as I explain in the Smart Bidding guide.
Those projects are part of my Google Ads consulting work: Google Tag Manager, Consent Mode, enhanced conversions for web and leads, and offline imports, with documented verification.
Frequently asked questions
Are Google Ads enhanced conversions GDPR compliant?
They can be, as long as you have a lawful basis for processing the data, explain it in your privacy policy and respect user consent. In the European Economic Area that means a Consent Mode that passes ad_user_data. The data travels hashed with SHA256, but hashing isn’t the same as anonymising: the legal call is your adviser’s, not Google’s or mine.
What’s the difference between enhanced conversions and offline conversions?
Enhanced conversions for web add user data to a conversion that already happens on your site. Offline import uploads conversions that happen elsewhere, in your CRM. Enhanced conversions for leads join the two: they capture the email on the form, and you then import the outcome with that email, with or without a GCLID.
Does GCLID offline conversion import still work?
Yes. Google keeps the GCLID and recommends including it in uploads when you have it. What’s changed is the channel: since 15 June 2026, API uploads go through the Data Manager API, and file uploads are listed as a legacy option. For a new setup, Google recommends starting with enhanced conversions for leads.
How long until enhanced conversions show results?
You can check the request with the em parameter the same day. The diagnostics report has data within about 48 hours, and the match rate updates within 24 hours. Conversion uplift is measured over the 30 days after they start working.
Do I need to do anything if I already had enhanced conversions for web?
Not in Google Ads: existing accounts were migrated to the single web and leads setting automatically. What’s worth checking is that your site really sends the data (the coverage figure in diagnostics tells you) and that the report shows no alerts.
Measure better before you bid better
Enhanced conversions don’t make your campaigns sell more on their own. They let Google see more of what you already sell, and with that signal Smart Bidding makes better decisions. My order never changes: consent built properly, tag sending data, CRM import connected and, only after that, bidding changes.
If you’d like a second pair of eyes on your setup, or you’ve got an integration waiting to move to Data Manager, book a 30-minute call and we’ll go through it on your account.
Sources
- Google Ads Help. About enhanced conversions for leads. support.google.com/google-ads/answer/15713840
- Google Ads Help. About offline conversion imports. support.google.com/google-ads/answer/2998031
- Google Ads Help. Offline conversion imports FAQs. support.google.com/google-ads/answer/10029210
- Google Ads API. Manage offline conversions. developers.google.com/google-ads/api/docs/conversions/upload-offline
- Google Ads Help. Building a strong measurement foundation. support.google.com/google-ads/answer/15796388
- Google Ads Help. Set up enhanced conversions for web using the Google tag. support.google.com/google-ads/answer/13258081
- Google Ads Help. Set up enhanced conversions for web using Google Tag Manager. support.google.com/google-ads/answer/13262500
- Google Ads Help. About enhanced conversions. support.google.com/google-ads/answer/9888656
- Google Ads Help. About the enhanced conversions for web tag diagnostics report. support.google.com/google-ads/answer/11956168
- Google Ads Help. About the enhanced conversions for leads diagnostics report. support.google.com/google-ads/answer/15249267
- Google for Developers. Data Manager API. developers.google.com/data-manager/api
- Google Ads Help. Updates to consent mode for traffic in European Economic Area (EEA). support.google.com/google-ads/answer/13695607
- Google for Developers. Consent mode overview. developers.google.com/tag-platform/security/concepts/consent-mode
- Google Ads Help. About consent mode. support.google.com/google-ads/answer/10000067
- Google for Developers. Set up consent mode on websites. developers.google.com/tag-platform/security/guides/consent
- Google Ads Help. Updates to your enhanced conversions settings. support.google.com/google-ads/answer/16884284
- Google Ads Help. Troubleshoot offline conversion import errors. support.google.com/google-ads/answer/13321563
- Google Ads Help. Set up offline conversion imports. support.google.com/google-ads/answer/7012522
- Google Ads Help. Upgrade offline conversion import to enhanced conversions for leads. support.google.com/google-ads/answer/14274408