An advanced feature introduced to improve the accuracy of conversion measurement—the Enhanced Conversion tag—has enabled me to gather numerous theoretical and practical observations regarding this feature, following my earlier article titled Google Ads - Advanced Conversions.
The Enhanced Conversions (Advanced Conversions) feature provided by Google Ads is a tag that improves the accuracy of conversion tracking and enables more powerful conversion attribution capabilities. As noted in the article titled Google Ads - Advanced Conversions, to enable this feature, the “Enhanced conversions” option must be activated under the conversion tag settings (details)1.
Enhanced Conversions (Advanced Conversions) Diagnostic Report
Conversion data can be collected by selecting the relevant HTML element either through the GTAG GTAG and GTM GTM code snippets or directly via the Ads panel2 3. When using GTAG, the allow_enhanced_conversions parameter must be set to true.
gtag('config','AW-123456', {'allow_enhanced_conversions':true});
After enabling the feature, a validation and learning period of approximately 72 hours begins, based on daily conversion volume. This process is then shared via the diagnostic report specific to the conversion2 4.
In particular, when using GTM or GTAG, discrepancies may occur in dynamic data. For example, in the case of email and phone field usage, the likelihood of receiving empty phone numbers is quite high. In such cases, errors (Not enough matches for your conversions) may arise due to missing data, preventing conversion data from matching properly.
Another common error (Setup is missing required address fields) occurs when previously sent field data (field) is not consistently passed in subsequent conversions, thereby interrupting the learning process.
To avoid these commonly encountered errors, it is essential to base the configuration on frequently filled customer fields and ensure consistent transmission of relevant fields from the moment the corresponding feature is enabled. Each null value in the required fields will result in an average 24-hour error notification and subsequent suspension of the feature4.
Especially if you are using the Code option instead of Manual configuration for data type validation or modifications, or if you are passing Manual configuration data after verification, it is crucial to identify the specific fields that trigger error notifications in Google Ads’ enhanced conversions error reporting process.
For example, consider the following code snippets.
The first code snippet is prepared for use in Shopify stores within the Order Status Page field, transforming relevant customer information into a data layer format for advanced tracking, as described in the data layer. In addition to customer, you can also access relevant customer details via checkout or order5.
{% if first_time_accessed %}
{% unless post_purchase_page_accessed %}
post_purchase_page_accessed
{% endunless %}
<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
event: 'get_more_info',
getCustomerInfo: {
{% unless customer.email == blank %}"email": "{{ customer.email }}",{% endunless %}
{% unless customer.phone == blank %}"phone_number": "{{ customer.phone }}",{% endunless %}
{% unless customer.first_name == blank %}"first_name": "{{ customer.first_name }}",{% endunless %}
{% unless customer.last_name == blank %}"last_name": "{{ customer.last_name }}",{% endunless %}
"address": [{
{% unless customer.addresses[0].street == blank %}"street": "{{ customer.addresses[0].street }}",{% endunless %}
{% unless customer.addresses[0].city == blank %}"city": "{{ customer.addresses[0].city }}",{% endunless %}
{% unless customer.addresses[0].province_code == blank %}"region": "{{ customer.addresses[0].province_code }}",{% endunless %}
{% unless customer.addresses[0].zip == blank %}"postal_code": "{{ customer.addresses[0].zip }}",{% endunless %}
{% unless customer.addresses[0].country_code == blank %}"country": "{{ customer.addresses[0].country_code }}"{% endunless %}
}],
}
});
</script>
{% endif %}
The relevant tracking can also be implemented by creating a Custom JavaScript variable in Google Tag Manager. The data layer may be empty or undefined. Therefore, it is advisable to implement the relevant checks while taking all these factors into account.
function(){
var obj_customer = {}
var obj_address = {}
if (window.hasOwnProperty('Shopify')){
if(Shopify.checkout.email) obj_customer['email'] = Shopify.checkout.email;
if(Shopify.checkout.billing_address.phone) obj_customer['phone'] = Shopify.checkout.billing_address.phone;
if(Shopify.checkout.billing_address.first_name) obj_address['first_name'] = Shopify.checkout.billing_address.first_name;
if(Shopify.checkout.billing_address.last_name) obj_address['last_name'] = Shopify.checkout.billing_address.last_name;
if(Shopify.checkout.billing_address.address1) obj_address['street'] = Shopify.checkout.billing_address.address1;
if(Shopify.checkout.billing_address.city) obj_address['city'] = Shopify.checkout.billing_address.city;
if(Shopify.checkout.billing_address.province_code) obj_address['country'] = Shopify.checkout.billing_address.province_code;
if(Shopify.checkout.billing_address.zip) obj_address['postal_code'] = Shopify.checkout.billing_address.zip;
obj_customer['address'] = obj_address;
}
return obj_customer;
}
Google Ads diagnosis report may soon provide much more detailed explanations, and announce new features related to the conversion tag. I will continue to share the situations I’ve encountered along with potential solutions in the context of these developments.
Footnotes
- About advanced conversions. Google Ads Help ↩
- Manually configure advanced conversions for websites using the global site tag. Google Ads Help ↩ ↩2
- Setting up Google Ads Conversion Tracking on Shopify. Analyzify Resources ↩
- About the advanced conversion tag detection report. Google Ads Help ↩ ↩2
- Objects. Shopify.dev ↩