Free guide
Advanced conversion tracking via GTM: new 2025 tag
Since early 2025, Google has removed the "User-provided data" checkbox from standard conversion tags in Google Tag Manager. To keep using enhanced conversions, a new specific tag must now be created: Google Ads User-provided Data Event.
This step-by-step guide will help you configure this new tag in GTM, while complying with best practices in terms of confidentiality and performance.
Introduction to advanced conversion tracking
Advanced conversion tracking (or Enhanced Conversions) is a Google Ads feature that enables you to better measure your conversions by enriching the data already collected in your tracking tags.
It works by sending first party customer data (such as an e-mail address, telephone number or postal address) from your site to Google Ads, after secure hashing (SHA256). This data is then matched against users' Google accounts to attribute conversions even when standard cookies fail.
What does it actually do?
- 📈 Improving the accuracy of tracking, even with cookie restrictions
- 💰 Bid optimization with more comprehensive data in your campaigns
- 🔒 Respecting confidentiality thanks to local hashing before transmission
Overall operation
- User clicks on a Google Ads ad (YouTube, Shopping, Search...)
- They perform an action on your site (purchase, form, registration...)
- Your site captures available user data (email, phone...)
- This data (if not already the case) is hashed (SHA256) on the browser side or via GTM, then sent to Google
- Google compares them with its own data for more reliable conversion attribution
👉 This functionality used to be integrated directly into your Google Ads conversion tags, but in 2025, a new method is mandatory to continue benefiting from advanced tracking. We'll take a look at this in the next section.
Why a new method in 2025?
Until 2024, advanced conversion tracking in Google Tag Manager (GTM) was simply a matter of checking the box "User-provided data in Google Ads conversion tags.
But since the end of 2024, this option has disappeared from the GTM interface. Google now imposes a new, clearer and more structured method, via a dedicated tag: "Google Ads User-provided Data Event.
A strategic shift by Google
This change is part of a broader evolution in advertising practices towards:
- ✔️ Greater transparency on the origin of data sent
- ✔️ A clear separation between the conversion tag and user data collection
- ✔️ Greater compatibility with Consent Mode V2 and GDPR regulations
Concrete changes
- ❌ "Google Ads Conversion Tracking" tag no longer offers to enable advanced tracking directly
- ✅ You need to create an additional tag of type "Google Ads User-provided Data Event
- 🔁 This tag is triggered at the same time as conversion (on the same triggers), to send the necessary user data
This new approach makes it possible to adopt a modular logic: we separate the user data collection (via this tag) from the declaration of conversion (via the classic tag).
Prerequisites for implementation
Before configuring advanced conversion tracking in Google Tag Manager, certain technical and legal conditions must be met to ensure correct, GDPR-compliant integration.
What you need to have in place
- A Google Ads conversion tag already configured in GTM
- A tracking ID (Conversion ID + Label) active in your Google Ads account
- A clear trigger to detect the conversion action (e.g. thank-you page, button click)
Available user data
You need access to first party customer data on the page where the tag will be triggered, or just before:
- E-mail address (preferred)
- Phone number
- Surname, first name, zip code, country (if complete address)
At least email or phone number, the rest is not mandatory. This data must be available in the DOM or via JavaScript, and accessible from GTM.
User consent required
Advanced conversion tracking is based on personal data. It is therefore mandatory to obtain explicit consent for advertising storage (ad_storage = "granted") before triggering this tag.
If you use a CMP (cookie banner), make sure it sends consent signals to GTM or Google Consent Mode.
Working with your team
This set-up sometimes requires:
- Access to source code (if method by code or dataLayer)
- An exchange with the developer or agency to inject user data into the page
👉 If these prerequisites are met, you can now choose the integration method best suited to your site (automatic collection, CSS selectors, or custom code), which we'll compare in the next section.
Choosing the right integration method
Google offers several ways to integrate user data into your advanced conversion tracking tag. The choice depends on the structure of your site, the level of customization you want, and access to the source code.
Comparison of the 3 main methods
| Method | Ease | Reliability | Code access required? | Recommended if... |
|---|---|---|---|---|
| Automatic collection | ⭐⭐⭐⭐⭐ | ⭐ | No | Data is visible on the page and well structured |
| CSS selectors / DOM variables | ⭐⭐⭐ | ⭐⭐⭐⭐ | No | You can target the HTML elements containing the data |
| Custom code embedded in data layer (JavaScript) | ⭐⭐ | ⭐⭐⭐⭐⭐ | Yes | You have access to the code (dataLayer) or to a developer |
Should I send the data hashed or not?
You can send the data:
- 🟢 Plain (not hashed) → Google normalizes and automatically hashes them (recommended)
- 🔐 Already hashed (SHA256) → you must ensure that the normalization is correct (E.164 format, lowercase, trimming...)
👉 If you are hashing the data yourself, use the following keys:
sha256_email_addresssha256_phone_numberaddress.sha256_first_nameetc.
Which method to choose?
In practice:
- Automatic collection: perfect for rapid implementation
- CSS selectors: a good compromise between control and simplicity
- Custom JavaScript: for complex sites or sites with fragmented data
👉 We will now see how to create the new tag "User-provided Data Event in GTM, regardless of the method chosen.
Create the "User-provided Data Event" tag in GTM
Since 2025, setting up advanced conversion tracking in Google Tag Manager requires a new, dedicated tag: Google Ads - User-provided Data Event. It is used to send the user data needed to attribute enhanced conversions.
Creation steps in GTM
- Access your Google Tag Manager account and open the workspace of the site concerned.
- In the left-hand menu, click on Tags then on New.
- Click on Tag configuration then select:
Google Ads User-Provided Data Event - In the Tracking ID field, enter your Conversion ID (you can find it in your Google Ads account).
- Click on User-provided Data (user-supplied data), create a new variable and in this variable choose the method (automatic, manual or code collection).
We'll take a closer look at each of them in the following sections.
Associate a trigger
In the Triggering section:
- Click on Add a trigger
- Select your conversion events containing user data: purchase, sign_up, generate_lead or a custom trigger (e.g. payment button)
💡 Tip: use the same trigger as your Google Ads conversion tag to synchronize events.
Save your tag
Once you have configured the tag and associated the trigger, click on Save. Your "User-provided Data Event" tag is now ready to be enriched with user data in the following sections.
👉 Now let's move on to configuration by automatic collection the simplest method to implement.
Use the automatic collection method
Automatic collection is the simplest way to activate advanced conversion tracking. It allows Google Tag Manager to automatically detect user data available on the page, without you having to configure CSS variables or custom code.
When to use this method
- User data (email, phone, etc.) can be viewed directly on the page.
- You do not wish to modify the site code
- The site is relatively simple (classic form or well-structured confirmation page)
Steps in Google Tag Manager
- Open your User-provided Data Event tag in GTM
- In the Define user data section, click on New variable
- From the drop-down menu, select Automatic collection
- Assign a name to this variable (e.g.
Données utilisateur auto) and save - Make sure this variable is selected in the configuration of your tag
🔍 Visual example
Variable : Données utilisateur auto
Type : Collecte automatique
Utilisée dans : Balise "User-provided Data Event"
🧪 How do you validate that it works?
- Start Preview mode in GTM
- Perform a test conversion (e.g. form or purchase)
- In the Tags tab, check that your tag is triggered
- Then use the Network tool in Chrome ("Network" tab) to check that data is being sent to
googleadservices.com/pagead/conversion/
👉 This method is quick to implement, but very imprecise and only works in a few cases; it won't work if the data isn't directly present in the DOM. If you need more control, switch to the manual method with CSS selectors in the next section.
Manual implementation using CSS or DOM selectors
If automatic data collection is not sufficient (data missing from the DOM, poorly detected or to be secured), you can configure advanced tracking manually using the CSS selectors or the DOM variables in Google Tag Manager.
When to use this method
- User data is displayed on the page (purchase confirmation, pre-filled form...)
- You don't want to modify the source code, but you need precision
- You have some knowledge of Chrome development tools
Find a CSS selector with Chrome
- Open the page displaying user data (e.g. email address)
- Right-click on the element, then Inspect
- In the Inspector, right-click on the corresponding HTML code, then Copy > Copy selector
Creating a variable in GTM
- In GTM, go to Variables > New variable
- Select DOM element
- Selection mode: CSS selector
- Paste the selector into the "Element selector" field
- Leave "Attribute name" blank if you're retrieving text (e.g.:
innerText) - Give your variable a clear name (e.g.
Email utilisateur)
📋 Example
Sélecteur CSS : #checkout-summary > div.email
Variable GTM : Email utilisateur
🧩 Associate these variables with the tag
Return to your User-provided Data Event tag, select the Manual configuration option and associate your variables as follows:
"email": {{Email utilisateur}},
"phone_number": {{Téléphone utilisateur}},
"address": {
"first_name": {{Prénom}},
"last_name": {{Nom}},
"postal_code": {{Code postal}},
"country": {{Pays}}
}
👉 If you need even more flexibility, go to the next method, using a custom JavaScript variable.
Using the dataLayer method: "Code" (custom JavaScript)
The method by custom JavaScript code is the most advanced. It allows you to build a custom user data object, often from global variables already present on the page, such as a data layer (dataLayer) or an internal script.
When to use this method
- You have access to the code or a developer
- User data is injected dynamically via JavaScript
- You want precise control over the format, hashing or data assembly logic
How to proceed?
- Ask your developer to include a variable in the data layer for events containing customer information.
- Retrieve this variable via Google Tag Manager with a data layer variable
- Integrate this dataLayer variable into the User Provided Data variable, itself called from the Google Ads - User-provided Data Event tag.
Example of a dataLayer pushed by the developer
<script type="text/javascript">
dataLayer.push({
"event": "sign_up",
"profile": "particulier", //indiquer particulier ou professionnel
"email": "test@gmail.com", //si disponible
"phone": "0600000000", //si disponible
});
</script>
The variable to be created on the GTM side:
Your User Provided Data variable
Hashing: yours or Google's?
At this point, you have a choice:
-
🟢 Let Google hash → use standard keys (
email,phone_numberetc.) -
🔐 Hash yourself → use SHA256 keys such as:
sha256_email_addressaddress.sha256_first_name
⚠️ Attention If you hash the data yourself, you must:
- ⚙️ Delete spaces (
.trim()), - 🔠 Lowercase (
.toLowerCase()), - 📞 Standardize phones to E.164 format (e.g.
+33612345678)
🧪 Example of a structure with data already hashed
{
"sha256_email_address": "a8af83...f345d5db",
"sha256_phone_number": "e9d3ee...6ac773b1",
"address": {
"address.sha256_first_name": "96d963...",
"address.sha256_last_name": "799ef9...",
"postal_code": "75001",
"country": "FR"
}
}
👉 You can now insert this variable in the User-provided Data Event tag as a "custom variable". GTM will transmit the structured object to Google.
In the next section, we'll look at how to check that your tag is working using Google Ads testing tools and reports.
Test and validate your implementation
Once your User-provided Data Event tag is configured in GTM, it's essential to check that user data is actually transmitted to Google Ads, and that tracking works as intended.
Step 1 - Test in GTM Preview mode
- In Google Tag Manager, click on Preview
- Enter the URL of your site with the conversion page
- Perform a test action (e.g. form or purchase)
- Check in the Tags tab that your User-provided Data Event tag is triggered
Step 2 - Check network requests in Chrome
-
Open the conversion page in Google Chrome
-
Right-click > Inspect > Network tab
-
In the search filter, type
googleorconversion -
Look for a request to:
googleadservices.com/pagead/conversion/orgoogle.com/pagead/1p-conversion/ -
In the Payload or Query String Parameters look for a parameter
em:- ✅ Present and contains a long hashed value → data sent 👍
- ⚠️ Present but empty → variables not filled in or arrived too late
Step 3 - Diagnosis in Google Ads
- Sign in to your Google Ads account
- Go to Tools & settings > Conversions
- Click on the conversion action used with Enhanced Conversions
- Open the Diagnostics tab
⚠️ Diagnosis can take up to 48 hours to display the first results. You will see a table with:
- ✅ Status: "Data received
- 🚫 Alert: "Parameter empty or incorrectly formatted" → correct in GTM
📌 Additional recommendations
- Check that the Consent Mode authorizes
ad_storage= "granted" at time of conversion - Do not trigger the tag if data is not available
- Prefer to send at least the e-mail address to maximize matching
👉 In the final section, we'll summarize best practices to follow, common mistakes to avoid and how to cleanly disable advanced tracking if necessary.