Why implement enhanced conversions for Google Ads?
Enhanced conversions allows Google to match more conversions to Google Ads clicks. Why is this more important than ever before? Because unavailability of 3rd party cookies for some users, and shortened cookie expiry dates, have meant reduced matching and less accurate attribution.
Attribution isn’t just for reporting to advertisers, it also underpins the self-optimising nature of Google Ads. Matching people who clicked the ad with people who subsequently completed a desired action helps Google to find better audiences for the ads.
Modelling is also becoming more important in advertising systems, both for reporting and for predicting and optimising. Modelling needs observed data to work with, so enhanced conversions contribute to this pool of observed data.
Enhanced conversions involves sending hashed user-provided data, e.g. email address, phone number, name, address, for people who complete a conversion action. Google attempts to match this with user records from its vast database of people, specifically people who have clicked on the advertiser’s ad while logged into their Google account.
To drill down further into the why and how, we need to understand that there are 2 types of enhanced conversions. Each of these has a different purpose and is set up differently:
- Enhanced conversions for web – allows Google to match more website conversions to Google Ads clicks.
- Enhanced conversions for leads – allows Google to match offline conversions to Google Ads clicks.
Enhanced conversions for web
Enhanced conversions for web allows Google to match more website conversions to Google Ads clicks, particularly when the conversion happens in a later session than the click.
This technique is suitable for website conversions where some user data is collected. For example, contact form submissions, newsletter sign-ups and purchases. Email address is the preferred piece of user data, but you can send phone numbers and physical addresses also to increase the likelihood of a match.
Options for setting up enhanced conversions for web
Google offers several options to set this up, but I am going to focus on the method where user-provided data is collected manually using Google Tag Manager.
I don’t use the other methods for these reasons:
- ‘Automatic collection’ of user-provided data is an option when using either Google Tag Manager or the Google tag. You can’t see what data is being extracted from the page, nor do you have an opportunity to sense-check that this is the right data.
- The ‘code’ method requires you to add code to your web page to save the user-provided data as variables. I avoid website changes unless the web developer is making them. I prefer to use Google Tag Manager for its testing and debugging capabilities.
I recommend you also read Google’s general information about enhanced conversions and their guide on setting up enhanced conversions for web with Google Tag Manager – I found them a bit confusing, but it’s always good to refer to the official documentation!
Setting up enhanced conversions for web
Enhanced conversions is an add-on to tracking conversions with Google Ads Conversion tags. You can’t do it in conjunction with imported conversions from GA4. Part of the set-up is done in Google Ads and part in Google Tag Manager.
The steps below describe setting up the conversion from scratch. If you already have a Google Ads Conversion Tracking tag set up, and you want to add enhanced conversion capability to it, you can skip ahead to ‘Two ways to send user-provided data’ .
In Google Ads:
- Choose the Goals menu item and select ‘New conversion action’ or ‘Create conversion action’. Choose a ‘Website’ conversion – you will be prompted to scan your website, and then you should choose to ‘Add conversion action manually’. There will be some fields to fill – more detailed steps can be found in my article on Google Ads conversion tracking.
- You will see a checkbox ‘Turn on enhanced conversions’. There are 3 options to choose from – Google tag, Google Tag Manager or Google Ads API. In this guide I am using Google Tag Manager to pick up the user-provided data, so I choose that option. You will also be prompted to accept ‘Customer data terms’.
- When the steps to set up the conversion in Google Ads are done, you will be able to open a section named ‘Tag Setup’.
- Here, click on Google Tag Manager, then you can copy the conversion ID and label. Important note: If you can’t see the option to implement the conversion tracking with Google Tag Manager, refer to my article on Google Ads conversion tracking. Over the last year or so, changes in the Google Ads interface and workflow have made this more difficult.
In Google Tag Manager:
- Create a Conversion Linker tag, using the Conversion Linker tag type and ‘all pages’ trigger.
- Create a new tag of type ‘Google Ads Conversion Tracking’ and add the conversion ID and label that you copied from Google Ads in the previous step.
- User-provided data is sent in a ‘User-Provided Data variable’, which is a variable type in GTM. This variable has fields for each of the types of user-provided data that you might send, and you will add further variables to these fields:
Two ways to send user-provided data
Before we get into more detail about how to construct these variables, there is another important decision to make. There are 2 ways to send the user-provided data with the tag, and you have to use the right one for your situation:
- if the user-provided data is available on the page where the conversion tag is triggered, then you can add the User-Provided Data variable to the Google Ads Conversion Tracking tag, by checking the box ‘Include user-provided data from your website’ and selecting the variable.
- if the user-provided data is not available on the page where the conversion tag is triggered, then you should create a ‘Google Ads User-provided Data Event’ tag to send this data. Use a trigger that will fire this tag when this data is available. This tag has a field for conversion ID. This will be used by Google Ads to match this data with the conversion event that is sent on a subsequent page.
-
- For example, if the conversion is a form submission, and the conversion tag can be triggered by a form submit event, the user’s data is available at the time this tag is triggered. On the other hand, if the conversion is a form submission and the conversion tag is triggered by a pageview of the thank you page, then the user’s data is probably not available on the thank you page. Another example is a purchase – the user’s data is usually not available when the purchase event is triggered, as it will have been entered on an earlier page. In these cases, you will need a trigger that will fire the ‘Google Ads User-provided Data Event’ tag at the point when the user-provided data is available.
The User-Provided Data variable
When you use this variable, the data will be hashed with the SHA256 algorithm (bookmark) before it is sent.
The variable must include at least one of:
- Email address (this is preferred)
- Address – First name, last name, postal code, and country are required; the other fields are optional.
- Phone number (can be used alone, but it is better if it is sent with an email address)
For each of the fields you send, you will need a variable to pull that data from the input of the form field on the web page. This might be done with a DOM Element variable that includes a CSS selector, or a custom javascript variable.
Email address: the DOM Element variable might look something like this, but it will depend on your form:
Similar variables could be used to pick up the First name and Last name entered in the form.
Country: this should be sent as a 2-letter code (see https://www.iban.com/country-codes)
Phone number: this needs to start with a plus sign and country code, followed by the number, with no dashes, parentheses or spaces.
This is an example of a custom java script variable that extracts a mobile phone number and formats it. It first trims any leading or following spaces and removes all brackets and spaces from the number. If the number starts with ’00’, it assumes this is an international prefix and replaces it with ‘+’ (if the number already had ‘+’ at the start, it would leave this alone). If the number starts with ‘0’, it removes this and replaces it with the country code ‘+61’. In this case, I was safe to assume that all numbers without country codes were Australian numbers. Your variable will differ, depending on the inputs you expect in the form.
Checklist – do you have all this in place?
- You have a Conversion Linker tag
- You have a Google Ads Conversion Tracking tag
- You have determined whether the user-provided data is available when this tag fires or on an earlier page.
- You have set up variables to pick up the user-provided data you want to send (this could be email address OR phone number OR first name + last name + country + postcode OR more than one of these three (email address is the best one to start with).
- You have set up a User-Provided Data variable and, in it, referenced the variables from the previous step.
- You have added the User-Provided Data variable to EITHER your Google Ads Conversion Tracking tag (if the user-provided data is available on the page where the conversion tracking tag fires) OR to a Google Ads User-provided Data Event tag (if the user-provided data is available on an earlier page).
- The Google Ads Conversion Tracking tag has a trigger that fires when the conversion happens.
- Google Ads User-provided Data Event tag (if you have one) has the same conversion Id as the Google Ads Conversion Tracking tag and has a trigger that fires when the user-provided data is available on the page.
Testing enhanced conversions for web
Test your tags in Google Tag Manager’s Preview and Debug mode.
If you have used the Google Ads User-provided Data Event tag , when you step through the workflow leading up to the conversion event, this tag will fire. In the left-hand panel of the debug view, click on the message/step where the tag fired, and you should be able to see the user-provided data in 2 places:
- In the Tags tab, double-click on the tag and you will see the parameters sent.
- In the Variables tab, you will see the values of the individual user-provided data variables.
Hashing occurs when the data is sent to Google servers, so you will still see it unhashed in Google Tag Manager’s Preview and Debug mode.
What is the SHA256 algorithm?
User-provided data is encrypted using SHA-256, a popular hashing algorithm that irreversibly converts an input into a 256-bit value that is not readable.
Google uses the same algorithm to encrypt email addresses, phone numbers, etc ,belonging to Google accounts. Google can look for matches between the 2 sets of hashed data, and identify a set of Google accounts that can be associated with your conversion data.
Google promotes enhanced conversions with the term ‘privacy safe’. Initially, I had reservations about providing users’ data to Google so that Google could match it with user accounts. I have softened that stance, based on reading Google’s Policy on how they use this data. The sections on Limited data use, Limited data access, Limited data sharing and Data Security are clear that the data is used only for the purpose it was provided for.
How can you see in the Google Ads account whether enhanced conversions are successful?
Check the Conversions summary table in Google Ads, where problems will be indicated in the Status column. If it says ‘Needs attention’, go to the Diagnostics tab where you will be able to drill down to further details:
The problem will usually be because there is insufficient user data, or the data is not in the correct format. This is when I’m glad I have used Google Tag Manager to send the user-provided data! ( I said earlier in this post that I prefer the Google Tag Manager method because of its testing and debugging capabilities).
If everything is working correctly, in the Tag Settings you will see ‘Recording Enhanced Conversions’.
Your responsibilities as an advertiser
In setting up enhanced conversions, you are required to accept the Customer data terms (that was one of the set-up steps completed in Google Ads).
You are agreeing to the following terms:
- Ensure that you disclose to customers (for example, in your privacy policy) that you share their information with third parties to perform ad measurement services on your behalf, and that you obtain customer consent for such sharing and use where legally required.
- Comply with all applicable laws and regulations, including any data protection or privacy laws, as well as self-regulatory or industry codes that may apply. Data that you upload to Processor Services will be subject to Google Ads Data Processing Terms.
- Comply with Google’s EU User Consent Policy to the extent applicable.
- You may not upload information that is prohibited by law, including information about minors. Don’t upload any data (1) that you know relates to individuals under the age of 13 or (2) that was collected from any site or app directed to children under the age of 13.
- You may not upload conversion information related to the sensitive categories, described below. You may only use Google’s approved API or interface to upload customer information.
- If you instruct Google to automatically generate Customer Match lists using the data you upload, you must also comply with Customer Match policies.
- Conversions related to sensitive categories can’t be used for measurement in enhanced conversions, or store sales (uploads).
- Sensitive categories include: Interest or participation in adult activities such as gambling, sexual encounter dating, sexualized theme dating, sexual entertainment, pornography etc.
Conclusion
Over the time I have been preparing this post, I have received multiple emails from Google ‘reminding’ me to set up enhanced conversions in Google Ads accounts. So, it appears that Google sees it as an important part of advertising attribution in the future.
Creating the variables in Google Tag Manager is a bit fiddly, but it becomes easier after you have done it a couple of times. I think this is a better way of doing it than using ‘automatic’ data collection, which you can’t thoroughly test.
Finally, make sure you are aware of and comply with your responsibilities regarding data privacy.