Microsoft Ads conversion tracking with Google Tag Manager
Updated: Tuesday, January 28, 2025
Getting started…
Microsoft Ads (formerly Bing Ads) allow you to create search campaigns in the same way as Google Ads. Generally speaking, advertising on Microsoft Ads is less expensive than on Google Ads, as there are fewer advertisers taking part in the bids. This advertising network can therefore represent an opportunity for your business, provided there’s demand for the keywords you want to target.
As with Google Ads, your performance depends on quality conversion tracking, which is the foundation of a successful advertising campaign.
I’m going to explain how you can set up Microsoft Ads conversion tracking with Google Tag Manager on your website.
Create the UET tag in Microsoft Ads
Go to Microsoft Ads, hover over the Conversions menu then click on UET tag. Then click on the Create button.
Give your UET Tag a name, here I’m calling it My New UET Tag. Then select the Install the tag yourself option.
Congratulations, you’ve just created your UET tag.
At this stage, your UET Tag has the status Unverified as no data is being sent to Microsoft Ads at the moment. A little patience, as we’ll see it in the next section.
Send page views to UET tag
Go to Google Tag Manager, in the Tags section of your container click New.
Then look for the Microsoft Advertising Universal Event Tracking tag in the Choose tag type section.
Once you’ve selected the tag, you can move on to its configuration.
- UET Tag ID: this identifier is retrieved from the All tags section on Microsoft Ads.
- Track type: here we install the basic code, so you can leave this setting as is.
Then trigger this tag on all pages.
Check page views sent with UET Tag Helper
In your GTM container, click on Preview to launch the preview mode. You can then check that the tag has been triggered correctly by clicking on Succeeded.
To check that data is being sent to the UET tag, I recommend using the UET Tag Helper extension.
If you can see the Page Load Event, your tag is working properly and sending data to Microsoft Ads.
In the Microsoft Ads interface, our UET Tag has gone from Unverified to Tag active.
By clicking on the UET Tag, you can obtain more information. Here, for example, we can see that 10 Page Load events have been received and that Tracking Status is active.
Congratulations, you’re now sending page views to Microsoft Ads. The ad network is therefore able to determine whether a visitor has come from a Microsoft ad or not.
Create a conversion goal in Microsoft Ads
A conversion goal is an important event (also known as a macro-conversion) that takes place on your website, such as a purchase or the submission of a contact form.
In this tutorial, we’ll create a purchase conversion goal in Microsoft Ads.
Go to Conversions > Conversion goals then click on Create.
In conversion type, select Website.
Then select Purchase as the goal category (or other if you don’t want to track a purchase event) and then Event as the conversion type.
We’ll now configure the goal.
- Name: the name of the conversion goal
- Revenue: set Conversion value may vary for a purchase or Each conversion action has the same value for lead generation.
- For a purchase, you can enter your average order value.
- For lead generation, you can enter the average lead value.
Then enter the Event Action, here purchase
is the default.
Congratulations, you’ve completed the creation of your conversion goal in Microsoft Ads.
Send a conversion with UET Tag
Now that the conversion goal has been created, we need to send the corresponding event from Google Tag Manager.
In Google Tag Manager, create a new Microsoft Advertising Universal Event Tracking tag. In the Track type menu, select Define your own. Enter purchase
as the Event Action.
Variable CJS - ms_items
function() {
var items = {{DLV - ecommerce.items}};
var ms_items = [];
if(items && items.length > 0) {
items.forEach(function(item) {
ms_items.push({
id: item.item_id,
price: item.price,
quantity: item.quantity,
brand: item.item_brand,
category: item.item_category,
list_name: item.item_list_name,
list_position: item.index,
variant: item.item_variant,
location_id: item.location_id
})
});
}
return ms_items;
}
CJS variable - pid
function() {
return {
email: {{DLV - email}},
phone_number: {{DLV- phone}}
}
}
You can also provide additional information if available in your Data Layer via the Define your own event parameters section.
Check sent conversion with UET Tag Helper
To check that data is being sent to the UET tag, I recommend using the UET Tag Helper extension.
Enhanced conversion tracking
User data is sent via the pid
parameter, as we did previously for our purchase
event.
The expected object for this parameter should be constructed as follows:
{
email: "[email protected]",
phone_number: "+33658478547"
}
You can also provide this data to the UET Tag before sending events thanks to the page view tag.
UET Consent Mode
The UET Tag consent mode works like the Google Ads consent mode, except that it includes a single consent signal: ad_storage
. This signal has two possible values: granted
or denied
.
This signal can be set up in two modes: default
at page load time, and update
after user consent has been obtained.
In the European Economic Area, the consent mode is forced to denied
in default
mode. This means that if you don’t set the UET Consent Mode, all your requests will go to denied
. If your IP address is in a European Economic Area country, you’ll see this type of request:
To configure UET Consent Mode, you can use Simo Ahava’s tag and check the Enable Microsoft Consent Mode checkbox.
For the most experienced ones
General events and associated parameters
Events description
Event name | Associated parameters |
---|---|
page_view | page_title , page_location , page_path , rep , tpp , gtm_tag_source , pid |
Parameters description
Tag parameter | Example |
---|---|
page_title | Example Title |
page_location | https://example.com |
page_path | /example |
event_label | |
event_category | Shoes |
revenue_value | 99 |
search_term | summer shoes |
pid | { email: "[email protected]", phone_number: "+33648754898" } |
tpp | 1 |
gtm_tag_source |
Vertical: E-commerce - recommended events and associated parameters
Events description
Recommended events | Associated parameters |
---|---|
add_payment_info | Free |
add_to_cart | revenue_value , currency , items |
add_to_wishlist | revenue_value , currency , items |
begin_checkout | revenue_value , currency , items , coupon |
checkout_progress | revenue_value , currency , items , coupon , checkout_step , checkout_option |
exception | description , fatal |
generate_lead | revenue_value , currency , transaction_id |
login | method |
purchase | transaction_id , revenue_value , currency , tax , shipping , items , coupon |
refund | transaction_id , revenue_value , currency , tax , shipping , items |
screen_view | screen_name |
remove_from_cart | revenue_value , currency , items |
search_term | , |
select_content | items , promotions , content_type , content_id |
set_checkout_option | checkout_step , checkout_option |
share | method , content_type , content_id |
sign_up | method |
view_item | items |
view_item_list | items |
view_promotion | promotions |
view_search_results | search_term |
Parameters description
Parameter name | Example |
---|---|
items | [{ id: 123, brand: "Nike", category: "Shoes", creative_name: "summer", create_slot: "home_1", list_name: "Summer shoes", list_position: 5, location_id: 487, name: "Red summer shoes", price: 97.99, quantity: 1, variant: "Red" }] |
promotions | [{ creatve_name: "Summer shoes", creative_slot: "home_3", id: "45645", name: "s_shoes" }] |
currency | EUR |
affiliation | my_best_partner |
tax | 2.8 |
shipping | 3.99 |
coupon | SUMMER |
transaction_id | 25646413 |
checkout_option | Card |
checkout_step | 4 |
content_id | 134648 |
content_type | Product |
description | The associated value has the wrong format |
fatal | true |
method | Google SSO |
The following parameters can be used in combination with the previous ones to use the dynamic remarketing features of Microsoft Ads.
Parameter name | Example |
---|---|
ecomm_pagetype | Possible values: home , searchresults , category , product , cart , purchase , other |
ecomm_prodid | ["123", "456"] or "123" |
ecomm_totalvalue | 48 |
ecomm_query | red shoes |
ecomm_category | Shoes |
ecomm_exp |
Vertical: Hotel - parameters
Parameter name | Example | |
---|---|---|
hct_base_price | 448 | |
hct_booking_xref | ID001 | |
hct_checkin_date | 2025-01-14 | |
hct_checkout_date | 2025-01-20 | |
hct_length_of_stay | Value from 0 to 30 - 6 | |
hct_partner_hotel_id | 489454165 | |
hct_total_price | 485 | |
hct_pagetype | Possible values: home , searchresults , offerdetail , conversionintent , conversion , property , cart , purchase , cancel , other |
Vertical: Travel - parameters
Parameter name | Example |
---|---|
travel_destid | 5645448 |
travel_originid | 4878546 |
travel_pagetype | Possible values: home , searchresults , offerdetail , conversionintent , conversion , cancel , other |
travel_startdate | 2025-01-14 |
travel_enddate | 2025-01-14 |
travel_totalvalue | 489 |
flight_destid | 4654556 |
flight_originid | 7897564 |
flight_pagetype | Possible values: home , searchresults , offerdetail , cart , purchase , cancel , other |
flight_startdate | 2025-01-14 |
flight_enddate | 2025-01-14 |
flight_totalvalue | 478 |
FAQ
Didn't find what you were looking for?
Get help from the Data Marketing Club