Every Google Ads audit we run turns up the same enhanced conversions mistake, and it is not a missing setup. It is a duplicated one. A store enables enhanced conversions through the Google tag, then an agency or a plugin layers a second, manually configured version on top of the same conversion action.
Suddenly Google Ads reports more purchases than Shopify's own order count. Nobody notices until a founder asks why paid Google Ads revenue does not reconcile with the bank deposit.
That stacked-conversion mistake is common enough that it made it into our own Google Ads audit checklist as a specific line item. It happens because most Google Ads Enhanced Conversions guides walk through the happy path, enabling the feature, mapping form fields, done.
They never address what breaks it on an actual ecommerce checkout, particularly a Shopify one running checkout extensibility. This post covers the setup that survives that, plus the account-level change Google shipped in June 2026 that most existing guides have not caught up to yet.
What Enhanced Conversions actually send to Google
Enhanced conversions do not replace your existing conversion tag. They attach hashed first-party data, an email address, phone number, name, or mailing address collected at the point of purchase, to a conversion event that is already firing.
Google hashes that data with SHA-256 before it leaves the browser or server, matches it against signed-in Google account signal, and uses the match to recover conversions that would otherwise be lost to Safari's Intelligent Tracking Prevention, ad blockers, or a declined consent banner. Google's own documentation is explicit that the feature is meant to improve match accuracy on top of standard conversion tracking, not to serve as a second, independent conversion source.
That last distinction is where the stacking mistake comes from. Enhanced conversions data has to attach to one primary conversion action per purchase event.
The moment a second implementation, whether a duplicate GTM tag, a Shopify app, or a manually hard-coded snippet, starts sending its own enhanced conversions payload against the same purchase, Google Ads has no way to know the two are describing one order rather than two.
The June 2026 change: one toggle instead of a method maze
Until this year, setting up enhanced conversions meant choosing between enhanced conversions for web and enhanced conversions for leads, then picking a delivery method, the Google tag, Google Tag Manager, or the Google Ads API, separately for each conversion action. That maze of choices is exactly why so many accounts ended up with inconsistent, partially configured setups across their conversion actions.
Google announced in April 2026 that this was collapsing into a single account-level setting, with the change rolling out in June 2026. Google's support documentation on the update confirms the web-versus-leads distinction and the method-selection screen are both gone.
In their place is one toggle under Goals, then Settings, then Customer data use, and the same toggle at the individual conversion action level. Advertisers can now send user-provided data through a website tag, Data Manager, and the API simultaneously, and Google deduplicates the incoming signals on its own rather than requiring you to pick a single channel.
For an existing Shopify account that already had enhanced conversions running, the practical impact is small: Google migrated accounts automatically if the customer data terms were already accepted, so nothing needs to be rebuilt.
For a new setup, it means one less decision to get wrong, but the underlying data-capture work, getting clean hashed email and phone data to Google reliably, has not changed at all.
Why the thank-you-page approach stopped working
Most enhanced conversions tutorials still describe capturing form data on a thank-you or order-confirmation page through a Google Tag Manager container loaded in the theme. On Shopify, that approach is dead for any store running Shopify's newer checkout.
Checkout and order-confirmation pages now execute inside a sandboxed environment that a standard theme-loaded GTM container cannot reach, which we covered in detail in our Shopify conversion tracking setup guide.
The supported path is Shopify's Web Pixels API. You subscribe to the checkout_completed customer event, which fires with the order's total, line items, and customer contact details already available, then forward the customer's email and phone number as hashed user-provided data alongside the purchase conversion.
Shopify's Web Pixels API documentation covers the event subscription model in full if you are building this pixel from scratch rather than through an existing GTM template.
Setting it up through GTM
- Enable enhanced conversions at the account level under Goals, Settings, Customer data use, and accept the customer data terms if you have not already.
- In your server-side or web GTM container, subscribe to the
checkout_completedevent through a custom pixel configured via Shopify's Web Pixels API rather than a theme-loaded tag. - Push the customer's email and phone number into the data layer as separate variables. Do not hash them yourself. Google's tag applies SHA-256 hashing automatically, and pre-hashing your own data before Google's tag processes it causes a silent match-rate failure that looks identical to a working setup in preview mode.
- Map those data layer variables to the enhanced conversions fields on your existing Google Ads conversion tag, the same tag that already fires the purchase conversion. Do not create a second conversion action for this.
- Use GTM's preview mode against a real test order to confirm the enhanced conversion data variable actually populates before publishing the container.
Confirming it is not double-counted
Before publishing, check the conversion action you just modified in Google Ads and confirm it is the only enhanced conversions source pointed at purchase events. Search for any Shopify app, second GTM tag, or hard-coded snippet on the store that might already be sending enhanced conversions data independently.
If one exists, remove it before your new implementation goes live, not after.
Verifying the match rate is real
Enhanced conversions status becomes visible in Google Ads under the conversion action's diagnostics roughly 48 to 72 hours after go-live, not immediately. Once it populates, a healthy ecommerce implementation typically shows 50 percent or more of conversions carrying enhanced data.
Below 30 percent usually means one of three things: the email or phone field is not populating on some checkout paths, the pixel subscription is failing silently on a subset of browsers, or the data is being hashed twice.
Cross-check the total conversion count itself against your Shopify order count for the same window, not just the enhanced conversions percentage. A match rate that looks healthy on paper does not catch a stacked conversion action, since stacking inflates the conversion count, not the match rate.
Where this fits alongside Meta's Conversions API
Enhanced conversions is Google's version of an idea Meta shipped first with its Conversions API: recover the signal that browser-only, cookie-dependent tracking has been losing since Safari's Intelligent Tracking Prevention and iOS App Tracking Transparency became the default rather than the exception. We covered the Meta side of this, including the event deduplication step most Meta Conversions API guides skip, in our Meta Conversions API setup guide.
Running both at once means the same checkout_completed event on your Shopify store needs to reach two destinations with consistent, deduplicated data rather than two separate, drifting implementations.
A server-side GTM container is the cleaner way to coordinate that, since it gives you one place to manage both Google's and Meta's hashed data payloads instead of maintaining parallel client-side pixels that quietly fall out of sync with each other over time.
This is also the exact configuration our Google Ads management service audits first on any new engagement, since a Google Ads account cannot be optimized responsibly on top of conversion data nobody has verified.
If your enhanced conversions setup was built more than a year ago or predates the June 2026 unified toggle, our conversion tracking setup service rebuilds it against the current Shopify Web Pixels API rather than patching a thank-you-page tag that checkout extensibility already broke.
The setup checklist
Before calling an enhanced conversions implementation done, confirm each of the following:
- Enhanced conversions is enabled once, at the account level, not duplicated across a second app or manual tag.
- Customer data is captured through Shopify's
checkout_completedWeb Pixels event, not a theme-loaded thank-you-page tag. - Email and phone data reach Google unhashed from your side, letting Google's own tag apply SHA-256 hashing.
- The enhanced conversions data maps onto your existing purchase conversion action, not a newly created second one.
- GTM preview mode confirms the data variable populates on a real test order before the container goes live.
- Match rate and total conversion count are both checked against Shopify's own order count 48 to 72 hours after launch.
Get those six right and the feature does what Google built it to do: recover conversions your existing tracking was already losing, without quietly inventing new ones that were never there.

