- Google Ads
- Enhanced Conversions
- Lead Generation
- Conversion Tracking
Google Ads Enhanced Conversions for Leads: Setup
By Dolphin Analytics team · Published 22 Sept 2026
TL;DR
Google Ads enhanced conversions for leads match a lead's hashed email or phone from your website form against the same details imported from your CRM after the sale. Setup takes four steps: switch it on in Google Ads, capture form data with Google Tag Manager, store the email and GCLID in your CRM, then import converted leads through Data Manager. We set this up for lead-gen clients most weeks.
Olamide Sule, founder of Dolphin Analytics: a digital analytics expert based in London delivering solutions for agency and in-house clients.
Google Ads enhanced conversions for leads is the setting most lead-gen accounts get nagged about and few have working end to end. We set it up and fix it for B2B and lead-gen clients most weeks, and this is the walkthrough we give them: the setup for leads specifically, then the checks that tell you it is working. For the general conversion setup (the Google tag, conversion actions, counting settings), start with our Google Ads conversion tracking guide and come back here.
What are Google Ads enhanced conversions for leads?
Enhanced conversions for leads is an upgraded version of offline conversion import that credits a sale back to a Google Ads click by matching customer details. Your lead form sends Google a hashed email or phone number, you store the lead in your CRM, and when that lead becomes a customer you import the same hashed details. Google matches the two and attributes the sale to the campaign.
Google lays the journey out in five steps in its enhanced conversions for leads overview: the user clicks an ad, browses, fills in a form (at which point the site sends hashed lead information), you store the lead in your CRM, and when the lead converts you import the hashed lead information alongside any GCLID (Google Click Identifier) you already capture. The same page says the upgrade gives more accurate reporting than standard offline conversion import and enables engaged-view and cross-device conversions.
Enhanced conversions for leads or for web: which do you need?
Use enhanced conversions for web when the conversion happens on your site, and enhanced conversions for leads when the valuable event happens later, off the site. Google’s enhanced conversions overview draws the line the same way: web measures sales and events on your website, leads measures offline transactions that started as website leads.
A shop selling online wants web. A firm whose form fill turns into a sales call, a quote and a signed contract wants leads, because the form fill alone tells bidding nothing about which enquiries became revenue. Google is also merging the two: its settings update page says web and leads are combining into a single on/off switch, with Google Ads accepting user-provided data from website tags, Data Manager and API connections at the same time. The data flow for leads is unchanged, so the steps below still apply.
How do you set up enhanced conversions for leads?
Set up enhanced conversions for leads in four steps: switch the feature on in Google Ads, capture the hashed form data on your site, store the lead with its GCLID in your CRM, and import converted leads back into Google Ads. The first two steps are quick. In our experience, the CRM and import steps are where most setups stall.
Step 1: Turn on enhanced conversions in Google Ads
In Google Ads, open the Goals menu, go to Settings, expand the Customer data use panel and tick Turn on enhanced conversions. Google asks you to confirm that the Google Ads Data Processing Terms apply to your use of enhanced conversions. Both steps are in Google’s enhanced conversions settings update, which also says existing users who already accepted the customer data terms are migrated automatically. Older accounts may still show a separate “Enhanced conversions for leads” option under Goals, Settings, as described in Google’s Tag Manager setup guide.
Whether your consent banner lets you send hashed form data for a given visitor is a consent question, not a Google Ads one. Our write-up on consent mode and the data it loses covers how to check what your banner is actually doing.
Step 2: Capture the form data with Google Tag Manager
Google’s Tag Manager guide for enhanced conversions for leads sets out the prerequisites: a Conversion Linker tag on every page visitors land on from an ad, auto-tagging switched on in Google Ads, and an email or phone field on the lead form. Then:
- In GTM, go to Tags > New and choose Google Ads user-provided data event.
- Enter your Google Ads Conversion ID.
- Pick a collection method: Automatic (the tag reads user-provided data from your page code), Manual (you point it at CSS selectors or JavaScript variables for the email and phone fields), or Code (your site sends the data itself).
- Add a trigger of type Form Submission. Google’s example uses All forms; we narrow it to the lead form so a newsletter sign-up does not count as a lead.
- Save, then test in Preview mode (the checks are in the next section).
If you run the Google tag directly instead of GTM, Google’s Google tag guide gives this pattern, with your own variables and tag ID swapped in:
gtag('set', 'user_data', {
'email': yourEmailVariable,
'phone_number': yourPhoneVariable
});
gtag('event', 'form_submit', {'send_to': 'AW-ID'});
The same guide accepts pre-hashed fields (sha256_email_address,
sha256_phone_number) and wants phone numbers in E.164 format. It points you
to the code method for third-party forms and forms inside iframes, where
automatic and CSS collection cannot read the fields.
Step 3: Store the email and GCLID against the lead in your CRM
The import only works if your CRM holds the same email the visitor typed and, ideally, the GCLID from their click. Google’s overview asks you to include GCLIDs with uploaded events whenever possible, and notes that the tag collecting GCLIDs automatically is no reason to stop importing the ones you have.
With auto-tagging on, Google Ads adds a gclid parameter to the landing page
URL, as its auto-tagging page
explains. Capture it in three moves:
-
Add a hidden input named
gclidto the lead form:<input type="hidden" name="gclid" id="gclid">. -
Paste this script on every page, after the form markup. It reads the GCLID from the landing URL, keeps it for the session in case the form sits on a later page, and writes it into the hidden field:
<script> const params = new URLSearchParams(window.location.search); const gclid = params.get('gclid') || sessionStorage.getItem('gclid'); if (gclid) { sessionStorage.setItem('gclid', gclid); const field = document.getElementById('gclid'); if (field) field.value = gclid; } </script> -
In your CRM, create a single-line text contact property called
gclidand map the hidden field to it. Each lead record then holds the email and the GCLID side by side, ready for the Step 4 export.
Submit a test lead from a URL ending ?gclid=test123 and check that the CRM
record shows test123. Our guide to
GCLIDs and click IDs covers the other
click IDs, and our HubSpot form tracking guide
covers the HubSpot side of the form.
Step 4: Import converted leads through Data Manager
In Google Ads, go to Goals > Conversions > Summary, select + Create conversion action, choose Import, then CRMs/data sources, and connect your data source. Google’s Data Manager setup page recommends the “qualified lead” or “converted lead” category. Google’s enhanced conversions for leads implementation checklist then adds the settings that decide whether the import matches:
- Set the conversion source to Import from clicks.
- Mark a new action as secondary for its first two to three weeks, so bidding does not react to a half-built feed.
- Upload daily, and upload every conversion for the event, including those not attributed to Google Ads.
- Normalise before hashing: lowercase emails, strip leading and trailing spaces, remove the dots before the @ in Gmail addresses, and format phone numbers to E.164 (a plus sign, the country code, then the number with no spaces or leading zero).
- Hash every personal field with SHA-256.
If your team builds the upload itself, the email normalisation and hash look like this in Node.js:
const crypto = require('crypto');
function hashEmail(email) {
let normalised = email.trim().toLowerCase();
const [local, domain] = normalised.split('@');
if (domain === 'gmail.com') {
normalised = local.replace(/\./g, '') + '@' + domain;
}
return crypto.createHash('sha256').update(normalised).digest('hex');
}
The website tag and the upload must normalise the same way. An email with a capital letter or a trailing space hashes to a different string from the same email cleaned up, and different strings never match.
How do you tell enhanced conversions for leads are working?
Enhanced conversions for leads are working when three things hold: the tag sends hashed data when the form submits, the diagnostics report shows no alerts, and the imported conversions roughly match the qualified leads in your CRM. Check them in that order, because each one depends on the one before.
Check the tag first. Google’s
Tag Manager guide
says to validate the tag in GTM Preview mode, then open the Network tab in your
browser’s developer tools and confirm the data goes, hashed, to
https://google.com/pagead/form-data/. Submit a real test lead. No request to
that address means the tag never fired or found no email. Our
Google Tag Assistant guide walks
through reading the tag side in more detail.
Then read the diagnostics report. Find it under Goals > Summary > Diagnostics, or hover over a conversion action’s status and choose “Go to diagnostics”. Google’s diagnostics report page lists four states: Excellent (active and fully optimised), Good (active, with room to improve), Needs attention (active, with errors) and Urgent (inactive). Alerts are based on the past one day of data, or the past seven days when one day is too thin, so a fix you make today will not clear an alert today.
The same page names seven alerts. Here is what each means and what we check first:
| Diagnostics alert | What it means | What we check first |
|---|---|---|
| Improve performance with the Google tag | The Google tag may not be firing on your site | Is the Google tag or GTM container on every page? |
| Improve performance with Google tag user-provided data | The tag fires but captures no email or phone | Is the user-provided data event tag set up at all? |
| Tag not firing on your website forms | The tag may not fire on lead forms | Does the trigger match the real form, including embedded ones? |
| Tag is missing user-provided data | Some conversions carry empty data fields | Do the CSS selectors still match after a site change, on mobile too? |
| Importing limited user-provided data | You only import rows that have both user data and a GCLID | Is the export filtering out leads with no GCLID? |
| No attempted imports | The tag works but no conversion imports arrived | Is the Data Manager connection live and error-free? |
| No user-provided data matches | Imported data matches nothing | Do the tag and upload normalise and hash the same way? |
Finally, reconcile. Compare the imported conversions for a month against the qualified leads your CRM logged for the same month. They will not agree to the lead, because not every lead came from Google Ads. If the gap is wide and the diagnostics are green, the fault usually sits in which CRM stage triggers the import, not in the tag.
Why do the diagnostics stay red after setup?
The diagnostics usually stay red because the website side and the CRM side were built by different people and never tested together. When we audit lead-gen accounts, the fault we find most is a form the tag cannot read: the lead form comes from a third-party tool, sits in an iframe, and automatic collection finds no email. The fix is the code method from Step 2, which Google’s Google tag guide recommends for exactly those forms.
The second most common fault is on the import side. A CRM export built for the old offline conversion import often keeps only rows with a GCLID, which is the “Importing limited user-provided data” alert in Google’s diagnostics list. Removing that filter is the whole point of the upgrade: the leads with no GCLID are the ones the email match exists to recover.
If Google Ads shows zero conversions of any kind, the problem is upstream of enhanced conversions. Our guide to Google Ads conversions not tracking covers that case.
How we handle enhanced conversions for leads for clients
We treat enhanced conversions for leads as a join between two systems: the form on the site and the stage in the CRM that marks a lead as real. We build both sides, test them with real leads, and reconcile the import against the CRM before the conversion action goes primary. Lead-level measurement changes budget decisions. Here is what that looked like on one engagement. For a private aviation company we found $250,000 of Trade Desk spend had produced a single form submission, while $50,000 on Meta produced around 600 leads at $78 each. We recommended flipping the budget split. That call only works when every lead carries its source. Our tracking work covers this end to end, and our paid audit, which needs access to GA4 and Google Tag Manager, is where we review the setup and write up each fault and its fix. If your diagnostics are still red, tell us what’s broken, or book a call.
Frequently asked
What are enhanced conversions for leads in Google Ads?
Enhanced conversions for leads is Google's upgraded version of offline conversion import. Your website form sends Google a hashed copy of the lead's email or phone number, you store the lead in your CRM, and when the lead converts you import the same hashed details. Google matches the two to credit the sale back to the Google Ads campaign that drove the lead.
How can an advertiser set up enhanced conversions for leads?
Turn on enhanced conversions under Goals, then Settings, then Customer data use, and accept the customer data terms. Add a Google Ads user-provided data event tag in Google Tag Manager (or the gtag user_data code) that fires on your lead form. Then create an import conversion action through Data Manager and upload converted leads with normalised, SHA-256 hashed emails and the GCLID wherever you have it.
Why might an advertiser use enhanced conversions for leads?
Because the sale happens offline. A lead form tells Google Ads someone enquired, not that they became a customer. Google says enhanced conversions for leads gives more accurate reporting than standard offline conversion import and adds engaged-view and cross-device conversions, so bidding can learn from real sales instead of raw form fills.
How do I check that enhanced conversions for leads are working?
Open the diagnostics report under Goals, then Summary, then the Diagnostics tab. It rates the setup Excellent, Good, Needs attention or Urgent and names the fault behind any alert. Before that, confirm in Tag Manager Preview and your browser's Network tab that a hashed request reaches google.com/pagead/form-data/ when the form submits.
Do I still need the GCLID with enhanced conversions for leads?
Yes. Google recommends including the GCLID with uploaded conversions whenever you have it. The tag collects it automatically, but you should keep passing it into your CRM and your imports. Upload leads without a GCLID too: sending only rows that carry one is a diagnostics alert in its own right.