Enhanced Conversions in Google Ads: what it is (and what it isn’t)
Enhanced Conversions is a conversion-measurement upgrade that supplements your existing Google Ads conversion tag by sending hashed first‑party customer data (typically email, phone, and/or address details) alongside the conversion. The hashing is one-way (SHA256), and the goal is to improve matching to signed-in users so Google Ads can attribute more conversions back to the ad interactions that actually drove them. In practical terms, this usually means more complete conversion reporting and stronger Smart Bidding optimization because the system is learning from a cleaner, less “leaky” measurement signal.
It’s important to set expectations: Enhanced Conversions doesn’t replace your conversion tag—it enhances it. You still need a properly firing conversion action. Enhanced Conversions also isn’t a shortcut around consent, policies, or data quality. If your base tracking is broken, Enhanced Conversions won’t fix that; it will simply enhance whatever you’re already measuring.
Enhanced Conversions “for web” vs “for leads” (choose the right path)
Enhanced Conversions for web is for on-site conversions you measure with a website tag (purchase confirmations, sign-ups, key page views, button clicks). The hashed data is collected on your site at conversion time (or earlier in the same session, depending on setup) and sent with the web conversion.
Enhanced Conversions for leads is for advertisers who import offline outcomes (qualified lead, opportunity, closed-won) back into Google Ads. The setup is two-part: you collect hashed user-provided data on your website lead form, then you import offline conversions that include the same hashed identifiers so the match-back is stronger—even when traditional identifiers are missing or incomplete.
Pre-flight checklist (the stuff that prevents 80% of setup failures)
Before you touch tags, get these fundamentals right. This is the difference between a clean launch and a frustrating week of “it says it’s on, but nothing’s working.”
- You have a working Google Ads conversion action. Confirm it fires on the correct trigger (confirmation page, button click, form submit, etc.) and isn’t double-counting.
- You know where the customer data exists. Enhanced Conversions needs at least one usable identifier. Email is the best starting point. If you’re using address, you need the required fields (more on that below).
- You can comply with customer data requirements. You’ll be prompted to accept customer data terms. Data sent before acceptance won’t be processed.
- Pick one implementation method and stick to it. Enhanced Conversions can be managed via the Google tag, Google Tag Manager, or the API. If you select one method in Google Ads but send data through a different method, that data may not be processed.
- If you’re doing Enhanced Conversions for leads, enable auto-tagging. This is a foundational requirement for solid click-to-lead stitching.
One more “gotcha” I still see in audits: Enhanced Conversions does not support conversions measured by importing certain goal-based conversions. If you want Enhanced Conversions benefits, you typically need a Google Ads conversion action that’s implemented with the Google tag or Google Tag Manager (or via API), rather than relying on goal imports.
Step-by-step: set up Enhanced Conversions for web (most common)
1) Enable Enhanced Conversions (account-level + terms)
In today’s Google Ads UI, Enhanced Conversions is increasingly handled at the account level. When you turn it on, you’ll select how you plan to collect and manage user-provided data (Google tag, Google Tag Manager, or API). New conversion actions can inherit these account-level settings, and existing ones may be upgraded unless they were explicitly opted out.
Practically, this means you should decide your long-term “standard” (Google tag vs GTM) before rolling this across dozens of conversion actions. If you’re a GTM-led organization, keep it consistent and manage Enhanced Conversions there.
2) Choose your collection approach (automatic vs specified vs code)
For Enhanced Conversions for web, you generally have three collection approaches:
Automatic detection works well for many advertisers because it requires minimal development work. Your tag inspects the page for patterns that match the configured data types. You can also set exclusions if there are page elements you don’t want scanned.
Specify CSS selectors or JavaScript variables is the “middle ground” when you want control without building a full custom data layer implementation. You identify the page elements (or JS variables) that contain the values and configure the tag to pull from those locations.
Add a code snippet is the most controlled and, in my experience, the most reliable at scale. You explicitly pass user data to the tag when the conversion happens (or before), which reduces the risk of layout changes breaking your selectors.
3) Implement with the Google tag (direct site tag)
If your conversion tracking is implemented directly with the Google tag on your website (not inside an iframe or a third-party tool), the cleanest approach is usually either “automatic detection” as a quick win or a “code snippet” for the most durable setup.
When using a code-based approach, the typical pattern is setting a user_data object (unhashed or pre-hashed) so the tag can normalize/hash and send it. You can optionally provide multiple values (for example, multiple emails) to improve match likelihood. Conceptually, it looks like this:
<script>
gtag('set', 'user_data', {
email: yourEmailVariable,
phone_number: yourPhoneVariable,
address: {
first_name: yourFirstNameVariable,
last_name: yourLastNameVariable,
street: yourStreetVariable,
city: yourCityVariable,
region: yourRegionVariable,
postal_code: yourPostalCodeVariable,
country: yourCountryVariable
}
});
</script>
If you send phone numbers, formatting matters. Phone numbers should be in E.164 format (country code included, no spaces or punctuation). If you’re sending address data, make sure you’re including the required address components (don’t assume “some address data” is good enough).
4) Implement with Google Tag Manager (recommended for most teams)
If your site is managed via GTM, you can enable Enhanced Conversions in Google Ads and then complete the setup in GTM. You’ll typically manage user-provided data collection through your tag settings, and you can choose automatic detection, specify selectors/variables, or use a code-oriented configuration.
Two GTM realities to be aware of:
First, if your customer data is not present on the final conversion page (common on modern checkouts and single-page apps), you may need to collect the data earlier in the session and connect it to the later conversion. That’s where the “user-provided data event” approach becomes useful.
Second, don’t ignore click data persistence. Conversion measurement depends on reliably storing click information. GTM’s Conversion Linker is designed for this. If your container loads a Google tag on every page, you may not need an additional Conversion Linker tag. Also note that containers with Google Ads and Floodlight tags automatically load a Google tag first before sending events (a behavior that rolled out starting April 10, 2025), which changes how some legacy containers should be structured.
Step-by-step: Enhanced Conversions for leads (offline outcomes imported back)
1) Collect the right identifier on your lead form
Start by selecting the identifier you’ll use end-to-end—meaning it’s captured on the website lead form and also stored in your CRM so it can be included in your offline conversion import. Email is typically the best default because it’s unique and less likely to be reformatted by systems downstream. Phone can work too, but it needs to be consistently formatted and include country code.
2) Enable Enhanced Conversions for leads and configure collection in GTM or the Google tag
The on-site piece is about capturing hashed user-provided data at the right moment—usually at form submission. In GTM, this often uses a dedicated “user-provided data event” tag with a trigger tied to the form submission (the timing matters; fire when the data is actually available in the DOM/data layer).
Be deliberate about your collection mode:
- Automatic collection can be fast to deploy but may have limitations (for example, phone collection may not be supported in some automatic approaches).
- Manual configuration is ideal when you want to explicitly map fields (email, phone) from your data layer or DOM variables.
- Code configuration is best when you have developers available and want maximum control and consistency.
3) Import offline conversions with the same hashed identifiers
This is the step many advertisers underestimate. Enhanced Conversions for leads only pays off when your offline import includes the same hashed customer data you captured on-site (in addition to whatever identifiers you already import). Most mature advertisers automate this via an integration layer or API-based import so the process is consistent, timely, and less error-prone.
Validate, troubleshoot, and optimize (what I check in real accounts)
Validate immediately after launch (don’t wait for “results”)
After publishing changes, perform a test conversion and validate that the enhanced conversion parameter is being sent. This is best done the same day you deploy—while your dev or tag team still has context and can fix issues quickly.
In a basic network-level validation, you’re looking for conversion requests and evidence that hashed identifiers are included. If you’re not seeing enhanced data on the request payload, your configuration is incomplete (or firing at the wrong time).
Use diagnostics and give it time to learn
Enhanced Conversions typically requires a learning/training period (often up to 30 days) before you can see impact reflected clearly in reporting. During this time, your standard conversion tracking should continue to work normally. Once integrated, you may see status messaging that indicates enhanced conversions are being recorded, and you may temporarily see an “impact” view that shows uplift for a limited time window.
The most common issues (and the fastest fixes)
- Customer data terms not accepted: If terms aren’t accepted, enhanced conversion data won’t be processed. Fix this first before debugging tags.
- Wrong method selected in settings: If you selected “Google tag” in settings but you’re sending via GTM or API (or vice versa), data may not be processed. Align the method selection with reality.
- Missing required address fields: If you send address, ensure you include the required components (commonly country, first name, last name, and postal code). Incomplete address data can trigger setup alerts and reduce match quality.
- Data not available when the tag fires: This is the #1 GTM timing problem. The conversion fires on a confirmation page, but the email was only present on a prior step. Solve this by collecting earlier in-session data appropriately.
- Phone formatting issues: Enforce E.164 format. Inconsistent phone data is a silent match-rate killer.
- Automatic collection underperforms: If you’re using automatic detection and diagnostics suggest limited benefit, graduate to a manual/code-based approach for consistency.
My expert tip: optimize for “coverage” before you obsess over “match rate”
In most accounts, the quickest win is improving coverage—the percentage of eligible conversion events that actually include usable user-provided data. You can’t match what you never send. Once coverage is solid, you improve match rate by sending higher-quality identifiers (email first, then phone and address where appropriate), tightening formatting/normalization, and ensuring collection occurs at the right time.
Let AI handle
the Google Ads grunt work
Let AI handle
the Google Ads grunt work
If you’re setting up Enhanced Conversions in Google Ads, it helps to treat it like any tracking upgrade: get the basics firing cleanly first, choose a single implementation path (Google tag, GTM, or API), and then validate quickly so you’re not troubleshooting blind during the learning period. Once measurement is reliable, Blobr can be a useful companion on the performance side: it connects to your Google Ads account and runs specialized AI agents that continuously analyze what’s changing and suggest concrete optimizations (like ad copy improvements or extension updates), so your bidding and reporting can benefit from stronger data without you having to babysit the account every day.
Enhanced Conversions in Google Ads: what it is (and what it isn’t)
Enhanced Conversions is a conversion-measurement upgrade that supplements your existing Google Ads conversion tag by sending hashed first‑party customer data (typically email, phone, and/or address details) alongside the conversion. The hashing is one-way (SHA256), and the goal is to improve matching to signed-in users so Google Ads can attribute more conversions back to the ad interactions that actually drove them. In practical terms, this usually means more complete conversion reporting and stronger Smart Bidding optimization because the system is learning from a cleaner, less “leaky” measurement signal.
It’s important to set expectations: Enhanced Conversions doesn’t replace your conversion tag—it enhances it. You still need a properly firing conversion action. Enhanced Conversions also isn’t a shortcut around consent, policies, or data quality. If your base tracking is broken, Enhanced Conversions won’t fix that; it will simply enhance whatever you’re already measuring.
Enhanced Conversions “for web” vs “for leads” (choose the right path)
Enhanced Conversions for web is for on-site conversions you measure with a website tag (purchase confirmations, sign-ups, key page views, button clicks). The hashed data is collected on your site at conversion time (or earlier in the same session, depending on setup) and sent with the web conversion.
Enhanced Conversions for leads is for advertisers who import offline outcomes (qualified lead, opportunity, closed-won) back into Google Ads. The setup is two-part: you collect hashed user-provided data on your website lead form, then you import offline conversions that include the same hashed identifiers so the match-back is stronger—even when traditional identifiers are missing or incomplete.
Pre-flight checklist (the stuff that prevents 80% of setup failures)
Before you touch tags, get these fundamentals right. This is the difference between a clean launch and a frustrating week of “it says it’s on, but nothing’s working.”
- You have a working Google Ads conversion action. Confirm it fires on the correct trigger (confirmation page, button click, form submit, etc.) and isn’t double-counting.
- You know where the customer data exists. Enhanced Conversions needs at least one usable identifier. Email is the best starting point. If you’re using address, you need the required fields (more on that below).
- You can comply with customer data requirements. You’ll be prompted to accept customer data terms. Data sent before acceptance won’t be processed.
- Pick one implementation method and stick to it. Enhanced Conversions can be managed via the Google tag, Google Tag Manager, or the API. If you select one method in Google Ads but send data through a different method, that data may not be processed.
- If you’re doing Enhanced Conversions for leads, enable auto-tagging. This is a foundational requirement for solid click-to-lead stitching.
One more “gotcha” I still see in audits: Enhanced Conversions does not support conversions measured by importing certain goal-based conversions. If you want Enhanced Conversions benefits, you typically need a Google Ads conversion action that’s implemented with the Google tag or Google Tag Manager (or via API), rather than relying on goal imports.
Step-by-step: set up Enhanced Conversions for web (most common)
1) Enable Enhanced Conversions (account-level + terms)
In today’s Google Ads UI, Enhanced Conversions is increasingly handled at the account level. When you turn it on, you’ll select how you plan to collect and manage user-provided data (Google tag, Google Tag Manager, or API). New conversion actions can inherit these account-level settings, and existing ones may be upgraded unless they were explicitly opted out.
Practically, this means you should decide your long-term “standard” (Google tag vs GTM) before rolling this across dozens of conversion actions. If you’re a GTM-led organization, keep it consistent and manage Enhanced Conversions there.
2) Choose your collection approach (automatic vs specified vs code)
For Enhanced Conversions for web, you generally have three collection approaches:
Automatic detection works well for many advertisers because it requires minimal development work. Your tag inspects the page for patterns that match the configured data types. You can also set exclusions if there are page elements you don’t want scanned.
Specify CSS selectors or JavaScript variables is the “middle ground” when you want control without building a full custom data layer implementation. You identify the page elements (or JS variables) that contain the values and configure the tag to pull from those locations.
Add a code snippet is the most controlled and, in my experience, the most reliable at scale. You explicitly pass user data to the tag when the conversion happens (or before), which reduces the risk of layout changes breaking your selectors.
3) Implement with the Google tag (direct site tag)
If your conversion tracking is implemented directly with the Google tag on your website (not inside an iframe or a third-party tool), the cleanest approach is usually either “automatic detection” as a quick win or a “code snippet” for the most durable setup.
When using a code-based approach, the typical pattern is setting a user_data object (unhashed or pre-hashed) so the tag can normalize/hash and send it. You can optionally provide multiple values (for example, multiple emails) to improve match likelihood. Conceptually, it looks like this:
<script>
gtag('set', 'user_data', {
email: yourEmailVariable,
phone_number: yourPhoneVariable,
address: {
first_name: yourFirstNameVariable,
last_name: yourLastNameVariable,
street: yourStreetVariable,
city: yourCityVariable,
region: yourRegionVariable,
postal_code: yourPostalCodeVariable,
country: yourCountryVariable
}
});
</script>
If you send phone numbers, formatting matters. Phone numbers should be in E.164 format (country code included, no spaces or punctuation). If you’re sending address data, make sure you’re including the required address components (don’t assume “some address data” is good enough).
4) Implement with Google Tag Manager (recommended for most teams)
If your site is managed via GTM, you can enable Enhanced Conversions in Google Ads and then complete the setup in GTM. You’ll typically manage user-provided data collection through your tag settings, and you can choose automatic detection, specify selectors/variables, or use a code-oriented configuration.
Two GTM realities to be aware of:
First, if your customer data is not present on the final conversion page (common on modern checkouts and single-page apps), you may need to collect the data earlier in the session and connect it to the later conversion. That’s where the “user-provided data event” approach becomes useful.
Second, don’t ignore click data persistence. Conversion measurement depends on reliably storing click information. GTM’s Conversion Linker is designed for this. If your container loads a Google tag on every page, you may not need an additional Conversion Linker tag. Also note that containers with Google Ads and Floodlight tags automatically load a Google tag first before sending events (a behavior that rolled out starting April 10, 2025), which changes how some legacy containers should be structured.
Step-by-step: Enhanced Conversions for leads (offline outcomes imported back)
1) Collect the right identifier on your lead form
Start by selecting the identifier you’ll use end-to-end—meaning it’s captured on the website lead form and also stored in your CRM so it can be included in your offline conversion import. Email is typically the best default because it’s unique and less likely to be reformatted by systems downstream. Phone can work too, but it needs to be consistently formatted and include country code.
2) Enable Enhanced Conversions for leads and configure collection in GTM or the Google tag
The on-site piece is about capturing hashed user-provided data at the right moment—usually at form submission. In GTM, this often uses a dedicated “user-provided data event” tag with a trigger tied to the form submission (the timing matters; fire when the data is actually available in the DOM/data layer).
Be deliberate about your collection mode:
- Automatic collection can be fast to deploy but may have limitations (for example, phone collection may not be supported in some automatic approaches).
- Manual configuration is ideal when you want to explicitly map fields (email, phone) from your data layer or DOM variables.
- Code configuration is best when you have developers available and want maximum control and consistency.
3) Import offline conversions with the same hashed identifiers
This is the step many advertisers underestimate. Enhanced Conversions for leads only pays off when your offline import includes the same hashed customer data you captured on-site (in addition to whatever identifiers you already import). Most mature advertisers automate this via an integration layer or API-based import so the process is consistent, timely, and less error-prone.
Validate, troubleshoot, and optimize (what I check in real accounts)
Validate immediately after launch (don’t wait for “results”)
After publishing changes, perform a test conversion and validate that the enhanced conversion parameter is being sent. This is best done the same day you deploy—while your dev or tag team still has context and can fix issues quickly.
In a basic network-level validation, you’re looking for conversion requests and evidence that hashed identifiers are included. If you’re not seeing enhanced data on the request payload, your configuration is incomplete (or firing at the wrong time).
Use diagnostics and give it time to learn
Enhanced Conversions typically requires a learning/training period (often up to 30 days) before you can see impact reflected clearly in reporting. During this time, your standard conversion tracking should continue to work normally. Once integrated, you may see status messaging that indicates enhanced conversions are being recorded, and you may temporarily see an “impact” view that shows uplift for a limited time window.
The most common issues (and the fastest fixes)
- Customer data terms not accepted: If terms aren’t accepted, enhanced conversion data won’t be processed. Fix this first before debugging tags.
- Wrong method selected in settings: If you selected “Google tag” in settings but you’re sending via GTM or API (or vice versa), data may not be processed. Align the method selection with reality.
- Missing required address fields: If you send address, ensure you include the required components (commonly country, first name, last name, and postal code). Incomplete address data can trigger setup alerts and reduce match quality.
- Data not available when the tag fires: This is the #1 GTM timing problem. The conversion fires on a confirmation page, but the email was only present on a prior step. Solve this by collecting earlier in-session data appropriately.
- Phone formatting issues: Enforce E.164 format. Inconsistent phone data is a silent match-rate killer.
- Automatic collection underperforms: If you’re using automatic detection and diagnostics suggest limited benefit, graduate to a manual/code-based approach for consistency.
My expert tip: optimize for “coverage” before you obsess over “match rate”
In most accounts, the quickest win is improving coverage—the percentage of eligible conversion events that actually include usable user-provided data. You can’t match what you never send. Once coverage is solid, you improve match rate by sending higher-quality identifiers (email first, then phone and address where appropriate), tightening formatting/normalization, and ensuring collection occurs at the right time.
