7 min read

Google Ads Enhanced Conversions: Setup for Sales and Leads

How to set up Google Ads enhanced conversions for online sales and form leads in Google Tag Manager, including the 2026 single switch and the move to Data Manager for CRM uploads.

Google Ads Enhanced Conversions: Setup for Sales and Leads
  • 9 sections
  • 6 FAQs
  • 6 sources
On this page

To set up Google Ads enhanced conversions, turn on enhanced conversions in Google Ads and accept the customer data terms, allow user-provided data in your Google tag, and capture the customer’s email or phone number in Google Tag Manager when the sale or lead happens. For leads, also upload qualified leads and sales from your CRM with the same details, so Google can match them back to the ad click.

What Changed in Enhanced Conversions in 2026?

Google simplified the setup into one switch and moved CRM uploads to its Data Manager API. If your tags already work, Google says existing users are migrated automatically and don’t need to act to keep enhanced conversions running.

WhenWhat Google changed
April 2026Google Ads accepts user-provided data from website tags, Data Manager and API connections at the same time
June 2026Web and leads combined into one on/off setting; you no longer pick a method (Google tag, GTM or API)
June 15, 2026Offline conversion and leads uploads move to the Data Manager API; blocked in the Google Ads API

What this means in practice: your website tags carry on as before. The part that may need work is your CRM upload. If a developer or tool sends offline conversions through the Google Ads API, Google’s settings update recommends moving to the Data Manager API, and it notes that developer tokens with no requests between January and June 2026 aren’t allowlisted for legacy access.

What’s the Difference Between Enhanced Conversions for Web and for Leads?

The web version improves tracking of conversions that happen on your site, such as purchases. The leads version connects a form lead to what happens later, such as a qualified call or a closed deal, using the same hashed details.

For web (sales)For leads
Conversion happensOn your websiteLater, offline or in your CRM
Data sent from siteHashed email/phone with the conversionHashed email/phone with the form lead
Second stepNoneUpload qualified leads or sales from your CRM
Best forOnline stores, online sign-upsService, B2B and high-ticket businesses

Many businesses need both: an online store tracks purchases, while a contractor or law firm tracks the form, then tells Google which leads became paying clients.

What Do You Need Before You Start?

You need a working conversion tag first. Enhanced conversions add customer data to conversions you already track; they don’t replace the tag.

  • A Google Ads conversion action already firing correctly through GTM (see our Google Ads conversion tracking setup guide).
  • A Google tag in the container with your Google Ads account as a destination.
  • Customer data available on the page where the conversion fires: email at minimum, phone if you collect it.
  • Admin access to Google Ads to accept the customer data terms.
  • Your privacy policy and consent setup reviewed; this data needs the ad_user_data consent signal where consent applies.
  • For leads: a CRM that stores the email, phone and, ideally, the GCLID of each lead.

FREE TRACKING AUDIT

Find Out Which Conversions You Are Missing

JuvioX reviews your GA4, Tag Manager and ad platform tracking, then sends a prioritized list of what to fix first. Free, with no obligation.

How Do You Set Up Enhanced Conversions Through GTM Step by Step?

Switch the feature on in Google Ads, allow user-provided data in the Google tag, choose how GTM reads the data, then verify the request and the diagnostics.

Step 1: Turn On Enhanced Conversions in Google Ads

In Google Ads, open Goals > Conversions > Settings, turn on enhanced conversions and accept the customer data terms. Google is clear that user-provided data isn’t collected until those terms are accepted. You can still opt a single conversion action out later in its own settings.

Step 2: Allow User-Provided Data in the Google Tag

In your Google tag settings, select “Allow user-provided data capabilities” and pick a collection method. This is the switch that lets Google’s tags accept customer details from your site.

Step 3: Choose How GTM Captures the Data

Google offers three methods. Pick the one that matches how reliable your pages are.

MethodHow it worksUse when
AutomaticGoogle detects email/phone on the page or formSimple forms, quick start
CSS selectorsDOM Element variables read specific fieldsStable form markup with IDs
CodeA JavaScript variable returns the data, often from the dataLayerCheckouts, custom forms, best control

Google recommends ID attributes for CSS selectors, because class names change when a site is redesigned. For stores and anything built by a developer, the code method is the most dependable.

Step 4: Build the User-Provided Data Variable

For the code method, have the site push the customer details into the dataLayer at the moment of conversion, read them with Data Layer Variables, and return them from a Custom JavaScript variable. Then create a User-Provided Data variable set to Code that points at it, and attach it to the Google tag’s user_data setting. Leave out fields you don’t collect instead of sending blanks.

function() {
  return {
    email: {{DLV - user_email}},
    phone_number: {{DLV - user_phone}}   // E.164, e.g. +16505551234
  };
}

Send values unhashed and let Google normalize and hash them: trimmed, lowercase emails and phone numbers with a plus sign and country code, no spaces or dashes. If you hash them yourself, Google expects SHA-256 in hex and different key names, such as sha256_email_address.

Step 5: Verify the Data Is Being Sent

Run a real test conversion with GTM Preview open, then check the request in Chrome DevTools: in the Network tab, filter for “google” and open the conversion request to googleadservices.com. Google’s guide says a hashed value after tv.1~em (or tv.1~pn for phone) means data was sent; a prefix with nothing after it means the field was empty when the conversion fired. Publish once that looks right.

Then give it time. Google says the Diagnostics report for the conversion action becomes available about 48 hours after implementation, and impact results about 30 days after.

How Do You Capture Email and Phone When the Form Disappears on Submit?

Read the details before the form clears. Either push them into the dataLayer on submit, or use Google’s User-Provided Data Event tag on the form submission.

Many forms replace themselves with a “Thanks!” message, so by the time the conversion tag fires, the email field is gone. Two fixes work:

  • Push on success: have the form plugin or developer include the email and phone in the same dataLayer event that triggers your conversion, then read them with the code method above.
  • Google Ads User-Provided Data Event tag: Google’s guide uses this tag type with a Form Submission trigger to grab the data from the form on an earlier page or step, then pairs it with the conversion that follows.

Forms inside iframes, such as some booking widgets, are harder. Google notes the tag must sit on the page itself, not inside a third-party iframe, so those forms usually need the provider to pass the details to the parent page.

How Do You Send Qualified Leads and Sales Back From Your CRM?

Create a conversion action for each later stage, upload those conversions from your CRM daily through Data Manager, and include the same email or phone (and GCLID when you have it) so Google can match them.

  1. Create one conversion action per stage, such as “Qualified Lead” and “Closed Deal”, with the source set to Import from clicks.
  2. Keep the new actions Secondary for the first 2 to 3 weeks, as Google’s checklist recommends, while you check the numbers.
  3. Connect the upload: Google recommends Data Manager; direct CRM connections and the API are also options.
  4. Upload daily, include every conversion for that stage, and use the time the offline event actually happened.
  5. Once the reporting looks right, move bidding onto the qualified-lead or sale action.

Capturing the GCLID in your forms makes matching stronger. Our offline conversion tracking guide covers GCLID capture and CRM-specific setups for HubSpot, Zoho, Pipedrive and GoHighLevel.

Can You Use Enhanced Conversions on Shopify?

Yes. Google’s help for the Google & YouTube app on Shopify says you can turn on enhanced conversions during setup or later under Google Ads settings in the app, after agreeing to the customer data terms. If you run the app, don’t also build a second purchase tag with enhanced conversions in GTM, or you risk counting the same order twice. Our Shopify GA4 and GTM guide explains how the app and GTM fit together.

How Do You Fix Common Enhanced Conversions Problems?

Most problems are empty fields at the moment of conversion, badly formatted phone numbers, or consent blocking the data.

ProblemLikely causeFix
em parameter emptyForm cleared before the tag firedPush data on success; use the UPD Event tag
Phone not matchingNot in E.164 formatSend +1 and digits only
Data sent for some users onlyad_user_data consent deniedExpected for declines; check banner defaults
Diagnostics show nothingUnder 48 hours since launchWait, then recheck
Leads uploads failing after June 2026Old Google Ads API upload routeMove to Data Manager
Same order counted twice on ShopifyApp and GTM tag both tracking purchaseKeep one Primary purchase action

If consent is the issue, our Consent Mode v2 setup guide shows how ad_user_data is set and tested in GTM.

What Does a Good Setup Look Like for Different Businesses?

  • Online store: Enhanced conversions on the purchase action, email and phone from the order data in the dataLayer, code method.
  • Roofing or HVAC company: Enhanced conversions on the quote form, plus “Booked Estimate” and “Job Won” uploaded from the CRM so bidding favors leads that turn into jobs.
  • B2B software or consulting firm: Email-only capture on the demo form, with “Sales Qualified” and “Closed Won” stages uploaded daily, Secondary at first.

If you’d like it set up or checked, our tracking and analytics team reviews enhanced conversions as part of a free audit, and our Google Ads management runs on a monthly fee agreed upfront, month to month, with no lock-in.

FREE TRACKING AUDIT

Find Out Which Conversions You Are Missing

JuvioX reviews your GA4, Tag Manager and ad platform tracking, then sends a prioritized list of what to fix first. Free, with no obligation.

Frequently Asked Questions

Do I need to hash customer emails and phone numbers myself in GTM?

No. Google's guide says that when you send unhashed data through its tag, Google normalizes and hashes it. You only need to send clean values: trimmed, lowercase emails and phone numbers in E.164 format. If you choose to hash yourself, use SHA-256 in hex and Google's pre-hashed field names.

Is sending hashed customer data to Google Ads allowed under US privacy laws?

Google requires you to confirm you can comply with its customer data policies and accept its terms, and the data should only flow where your privacy notice and consent setup allow it. Whether a specific state law applies depends on your business, so check with your legal adviser. This is general information, not legal advice.

How long does it take for enhanced conversions to show as working?

You can confirm data is sent immediately by checking the conversion request in your browser. Google says the Diagnostics report becomes available about 48 hours after implementation, and impact results appear after about 30 days.

Can I send enhanced conversions server-side so customer data never touches the browser?

Server-side setups are possible; Google's leads checklist mentions server-side GTM and the API, and asks you to include an order or transaction ID so conversions are deduplicated. It's more work to host and maintain, so most businesses start with the web setup and move later if needed.

Why are my enhanced conversions showing errors when the tag fires correctly?

A tag can fire with empty or badly formatted data. Check that the email field isn't blank at the moment of conversion, that phone numbers include the plus sign and country code, and that visitors who decline ad_user_data consent are expected to send nothing. The Diagnostics report usually names the specific issue.

Do I need to rebuild my tracking because of the 2026 changes?

Usually not for website tags. Google says existing users are moved to the single setting automatically. What may need changing is how you upload offline conversions and leads: from June 15, 2026, those uploads go through the Data Manager API rather than the Google Ads API.

6 sources & references
  1. Google Ads Help Updates to your enhanced conversions settings support.google.com
  2. Google Ads Help Set up enhanced conversions for web using Google Tag Manager support.google.com
  3. Google Ads Help About enhanced conversions for leads support.google.com
  4. Google Ads Help Enhanced conversions for leads implementation checklist support.google.com
  5. Tag Manager Help Tag Manager consent mode support support.google.com
  6. Google Ads Help Set up conversion tracking with the Google & YouTube app on Shopify support.google.com

Official pages we checked when writing this article.

Free Tracking Audit

Not Sure You Can Trust Your Tracking?

Request a free tracking audit. We'll review your GA4, Tag Manager and ad-platform conversions, spot gaps or duplicates and show you what we'd fix first.

Get a Free Audit

or Book a Call

  • GA4, GTM and conversion review
  • Ad-platform and consent sanity check
  • Clear, prioritized next steps

6 min read

GA4 Ecommerce Tracking Setup with GTM (WooCommerce Guide)

A step-by-step WooCommerce guide to GA4 ecommerce tracking with Google Tag Manager, from choosing a dataLayer method to stopping duplicate purchases and payment gateway referrals.

GA4 Ecommerce Tracking Setup with GTM (WooCommerce Guide)
  • 9 sections
  • 6 FAQs
  • 5 sources
On this page

GA4 ecommerce tracking with GTM works when your store pushes each shopping step into the dataLayer in GA4’s format, and Google Tag Manager sends those events to GA4 with one tag per event. On WooCommerce, that means choosing how the dataLayer gets built, mapping the events, and making sure each order sends one purchase with its order number as transaction_id.

What You Need Before You Start

  • GTM installed on every page of the store (see our Google Tag Manager setup guide).
  • A Google tag for GA4 in the container with your G-XXXXXXX ID.
  • Admin access to WordPress and WooCommerce, plus a staging site if you plan custom code.
  • Your checkout type: the classic checkout or the block-based Cart and Checkout.
  • A list of every analytics plugin and script already sending to GA4.
  • A way to place test orders, such as a 100% coupon or a test payment gateway.

Should You Use Google Analytics for WooCommerce, a dataLayer Plugin or a Custom dataLayer?

Use WooCommerce’s free extension if you want standard reports without GTM. Use a dataLayer plugin or custom code when GTM should run GA4, Google Ads and other pixels from the same ecommerce data.

WooCommerce’s documentation says its free Google Analytics extension tracks product views, list impressions and clicks, add and remove from cart, checkout started and purchases. It also notes purchase tracking needs a payment gateway that returns customers to the order-received page.

MethodBest forTrade-off
Google Analytics for WooCommerce (free)GA4 only, minimal upkeepLess control; not a GTM dataLayer
dataLayer plugin + GTMGA4, Google Ads, Meta from one sourceDepends on the plugin keeping up with Woo updates
Custom dataLayer + GTMCustom checkouts, subscriptions, B2BNeeds a developer and testing

Whichever you choose, run only one. A WooCommerce extension sending GA4 events plus GTM tags sending the same events to the same property doubles everything.

Examples by store type:

  • A home goods store with a few hundred products and Google Shopping ads: a dataLayer plugin plus GTM usually covers it.
  • A coffee subscription brand: a custom or extended dataLayer, because renewals need separate handling.
  • A B2B parts supplier with quote requests and wholesale prices: custom code, so the right price and customer type are sent.

If you also sell on Shopify, the event names are the same but the setup isn’t; see our Shopify GA4 and GTM setup guide.

Which GA4 Ecommerce Events Should a WooCommerce Store Track?

Track the shopping steps Google lists for ecommerce, matched to what happens in WooCommerce. Start with the six core events, then add the rest once those are clean.

WooCommerce actionGA4 event
Shop or category page shownview_item_list
Product clicked in a listselect_item
Product page viewedview_item
Added to cartadd_to_cart
Cart page viewedview_cart
Removed from cartremove_from_cart
Checkout page loadedbegin_checkout
Shipping method chosenadd_shipping_info
Payment method chosenadd_payment_info
Order received pagepurchase
Order refundedrefund

Google’s ecommerce guide says each item needs an item_id or item_name, and recommends both. It also recommends setting currency whenever you send value, because standard reports depend on it.

How Do You Set Up GA4 Ecommerce Tracking in GTM Step by Step?

Get the dataLayer right first, then build one trigger and one tag per event, then test with real orders.

Step 1: Get the dataLayer in GA4 Format

Install your chosen dataLayer plugin, or add custom code, and open a product page with GTM Preview running. You should see events such as view_item with an ecommerce object holding currency, value and items.

dataLayer.push({ ecommerce: null });
dataLayer.push({
event: 'add_to_cart',
ecommerce: {
currency: 'USD',
value: 24.00,
items: [{ item_id: 'SKU-123', item_name: 'Example Mug', price: 24.00, quantity: 1 }]
}
});

The first line clears the previous ecommerce object. Google’s Tag Manager guide recommends this so several ecommerce events on one page don’t mix their data.

Step 2: Create Custom Event Triggers

Create one Custom Event trigger per event, named in plain Title Case and matching the event name exactly: “View Item” for view_item, “Add To Cart” for add_to_cart, “Purchase” for purchase.

Step 3: Create One GA4 Event Tag per Event

Create a GA4 Event tag for each event, named Platform – Event – Tag, such as “GA4 – Add To Cart – Tag”. Set the event name, then under More Settings > Ecommerce tick Send ecommerce data with Data Layer as the source.

Tag: GA4 - Purchase - Tag
Type: Google Analytics: GA4 Event
Event name: purchase
More Settings > Ecommerce: Send ecommerce data = on, Data source = Data Layer
Trigger: Purchase (Custom Event, event name = purchase)

Separate tags per event take a few more minutes to build, but when add_to_cart breaks after a theme update you fix one tag without touching purchase.

Step 4: Test Each Step and Publish

Run Preview, then go through a full order: product, cart, checkout, payment, order received. Tag Assistant shows which tag fired on which event and why others didn’t. Confirm the values in GA4 DebugView, then publish.

How Do You Stop Duplicate Purchase Events in GA4?

Fire the purchase once per order, no matter how many times the order-received page loads, and always send the order number as transaction_id. Google’s ecommerce guide lists transaction_id as required for purchases.

Duplicates usually come from customers reloading or bookmarking the thank-you page, from two plugins sending the same event, or from a GTM tag and a WooCommerce extension both sending purchase. A simple fix in custom code is to store a flag on the order after the purchase is pushed:

add_action('woocommerce_thankyou', function ($order_id) {
$order = wc_get_order($order_id);
if (!$order || $order->get_meta('_ga4_purchase_sent')) return;
// ...build and echo the purchase dataLayer push here...
$order->update_meta_data('_ga4_purchase_sent', 'yes');
$order->save();
});

Many dataLayer plugins include a similar once-per-order option; check its settings before writing code.

How Do You Stop GA4 Crediting Sales to PayPal or Stripe?

Add the payment gateway’s domain to GA4’s unwanted referrals list. Google’s help page uses a third-party payment processor as the main example.

  1. In GA4, go to Admin > Data streams and open your web stream.
  2. Open Configure tag settings, show all settings, and choose List unwanted referrals.
  3. Add each gateway domain your customers pass through, such as paypal.com.
  4. Save, then place a test order through that gateway and check the session source.

Google allows up to 50 entries per data stream. It also notes that sessions already credited to a gateway stay that way, so expect cleaner data from the change onward, not a fix to history.

How Do You Track Subscription Renewals, Refunds and Orders Without a Thank-You Visit?

Track them from the server, not the browser. A subscription renewal or a refund issued in the admin never loads a page in the customer’s browser, so GTM has nothing to fire on.

  • Renewals: send a purchase from the server when the renewal order is paid, with its own transaction_id.
  • Refunds: send GA4’s refund event with the original transaction_id; Google lists transaction_id as required for refunds too.
  • Off-site gateways that don’t return customers: the free WooCommerce extension won’t see the purchase, so use server-side tracking.

Our server-side tagging setup guide covers the infrastructure, and if Google Ads bids on purchases, the Google Ads conversion tracking guide covers that side.

Troubleshooting WooCommerce GA4 Ecommerce Tracking

ProblemLikely causeFix
Revenue in GA4 well below WooCommerceConsent, ad blockers, gateways that don’t returnCompare order counts; add server-side for gaps
Purchase counted twicePage reloads or two sourcesOnce-per-order flag; one source
Items blank in reportsSend ecommerce data off, or items missing item_id/item_nameTick Send ecommerce data; fix the items array
Wrong currency or valueValue sent as text or currency missingSend numbers; always send currency
Sales credited to paypal.comGateway not in unwanted referralsAdd the domain
Events stop after a Woo updatePlugin not compatible with new checkoutCheck plugin support; retest
Tags fire in Preview, GA4 shows nothingWrong G- ID or consent deniedCheck the Google tag and consent state

WooCommerce’s own doc notes store and Google data may not match, and consent rules affect what GA4 receives; our Consent Mode v2 guide explains that part.

For the bigger picture across platforms, see ecommerce conversion tracking for GA4, Shopify and WooCommerce.

When Should You Get Help With GA4 Ecommerce Tracking?

Get help when GA4 revenue and WooCommerce orders keep drifting apart, when Google Ads or Meta optimize on purchases you don’t trust, or when subscriptions and refunds never reach GA4. Our Tracking & Analytics service rebuilds WooCommerce ecommerce tracking month-to-month with no lock-in, starting with a free audit.

Frequently Asked Questions

Why Is GA4 Purchase Revenue Lower Than My WooCommerce Orders?

WooCommerce records every order on the server, while GA4 depends on the customer's browser. Declined consent, ad blockers, gateways that don't send customers back to the order-received page, and closed tabs all cause missed purchases. Compare order counts rather than revenue first, then close the biggest gap, often with server-side tracking.

Does a dataLayer Plugin Work With WooCommerce's Block Checkout?

It depends on the plugin and version. Block-based Cart and Checkout work differently from the classic shortcode checkout, so some events can stop firing after you switch. Check the plugin's documentation for block checkout support and run a full test order in GTM Preview after every switch or update.

Why Are item_category or Price Missing From My view_item_list Events?

The dataLayer isn't including them in the items array. Open the event in GTM Preview, look at the ecommerce object, and check each item has item_id or item_name, price and the category fields you expect. If they are missing there, the fix is in the plugin settings or dataLayer code, not in GTM.

Why Isn't My Transaction ID or Currency Showing Correctly in GA4?

Usually the dataLayer sends the wrong field, such as the internal order ID instead of the order number customers see, or leaves currency out. Send the order number as transaction_id, send value as a number, and always include currency so GA4's reports can use the value.

Do I Need GA4 Measurement Protocol, or Is Browser Tracking Enough?

Browser tracking through GTM is enough for most stores as a start. Server-to-server sending becomes worth it when a meaningful share of orders never reaches GA4, or when you need renewals and refunds that happen without a customer visit.

Should I Send WooCommerce Customer IDs to GA4 as User-ID?

You can send a non-personal internal customer ID, but never an email address or name. Only send it when the visitor's consent allows analytics storage, and check your privacy policy covers it before switching it on.

5 sources & references
  1. Google for Developers Measure ecommerce (Google Analytics) developers.google.com
  2. Google for Developers Measure ecommerce (Tag Manager) developers.google.com
  3. WooCommerce Google Analytics for WooCommerce woocommerce.com
  4. Analytics Help Identify unwanted referrals support.google.com
  5. Tag Manager Help Preview and debug containers support.google.com

Official pages we checked when writing this article.

Free Tracking Audit

Not Sure You Can Trust Your Tracking?

Request a free tracking audit. We'll review your GA4, Tag Manager and ad-platform conversions, spot gaps or duplicates and show you what we'd fix first.

Get a Free Audit

or Book a Call

  • GA4, GTM and conversion review
  • Ad-platform and consent sanity check
  • Clear, prioritized next steps

Free Tracking Audit

Not Sure You Can Trust Your Tracking?

  • GA4, GTM and conversion review
  • Ad-platform and consent sanity check
  • Clear, prioritized next steps

No obligation. No spam. Just clear next steps.

What should we look at?

We reply within 12 hours. No spam.

Your Industry

Tell Us About Your Business

Not on our list? Tell us your industry and what you need. We will reply within 12 hours with how we can help.

  • A reply within 12 hours
  • A senior specialist reviews your request
  • No obligation
What do you need help with?

We reply within 12 hours. No spam.

Times are shown in your local time zone.

Loading available times…