Microsoft Ads is often the second search channel for US businesses after Google Ads, and it is also the one with the weakest tracking. Many advertisers import their Google Ads campaigns into Microsoft Ads, assume conversions come along with them and never check. The result is campaigns optimising on no data at all. This guide shows how I set up Microsoft Ads conversion tracking properly.
How does Microsoft Ads conversion tracking work?
Microsoft Ads tracks conversions with the Universal Event Tracking (UET) tag, a script that records page views and events on your site. Conversion goals in Microsoft Ads then decide which of those page views or events count as conversions. Without a working UET tag, no goal can record anything.
When someone clicks an ad, auto-tagging adds a click ID called msclkid to the landing page URL. UET stores it, and when a conversion happens, Microsoft links it back to the ad click.
How do you install the UET tag?
The cleanest way is through Google Tag Manager, using the built-in Microsoft Advertising Universal Event Tracking tag template.
- In Microsoft Ads, go to Tools → UET tag and create a tag. Copy the Tag ID.
- In GTM, add a new tag using the Microsoft Advertising UET template, paste the Tag ID and set it to fire on all pages.
- Publish, then confirm with the UET Tag Helper browser extension that the tag loads and sends page views.
Avoid adding UET twice, for example through a platform app and GTM at the same time.
Which conversion goals should you create?
Create goals for the actions that matter to the business, and prefer events over URLs.
| Goal type | How it counts | When to use it |
|---|---|---|
| Event | A custom UET event, such as purchase or generate_lead |
Purchases, form leads, bookings (recommended) |
| Destination URL | A visit to a page such as /thank-you |
Simple sites with a dedicated thank-you page |
| Duration / pages per visit | Engagement thresholds | Rarely useful for optimisation |
| Offline | Conversions you upload later with the msclkid | Leads that become customers later |
For an event goal, send the event from GTM with the same UET tag type:
window.uetq = window.uetq || [];
window.uetq.push('event', 'purchase', {
revenue_value: 2450,
currency: 'USD'
});
In GTM you do not need to write this by hand: the UET template has a "custom conversion" option where you set the event action and revenue from your data layer.
How do you send revenue for purchases?
For ecommerce, always send the order value so Microsoft Ads can report return on ad spend and optimise for it.
- Make sure your data layer
purchaseevent includesvalueandcurrency. My GA4 enhanced ecommerce checklist covers the structure. - In the UET purchase tag, map revenue to the data layer value and currency to the currency code.
- In the Microsoft Ads goal, set revenue to "the value of this conversion action may vary".
What is UET consent mode?
UET consent mode is Microsoft's version of Google Consent Mode. It controls whether UET may read and write cookies, using a setting called ad_storage with a value of granted or denied.
- Set a default before the UET tag loads, for example
deniedfor visitors in the EEA, UK and Switzerland. - When the visitor accepts in your cookie banner, send an update to
granted. - Many cookie banners (CMPs) and the GTM UET template can send these signals for you.
window.uetq = window.uetq || [];
window.uetq.push('consent', 'default', { ad_storage: 'denied' });
If you already run Google Consent Mode, map the same banner category to UET so both behave the same. My Consent Mode v2 guide explains the Google side.
What goes wrong after importing Google Ads campaigns?
Importing campaigns from Google Ads saves time, but check these points every time:
- Each imported goal actually records conversions in Microsoft Ads
- Auto-tagging is turned on, so
msclkidappears on landing pages - Your site or forms do not strip unknown URL parameters, which would remove the
msclkid - The goal's counting (all vs unique) and conversion window fit your business
- Calls from ads are tracked, if phone leads matter to you
How do you test Microsoft Ads tracking?
- Open your site with
?msclkid=test123added to the URL, and check that UET stores it. - Trigger a purchase or lead and confirm in UET Tag Helper that the custom event fires with revenue.
- In Microsoft Ads, check the UET tag status and the goal status in Conversions. Goals can take a while to show as recording.
- After a week, compare Microsoft Ads conversions with your real orders or leads.
The free Tracking Checker also shows whether a UET tag is installed on your site, in the page or inside GTM.
Final thoughts
Microsoft Ads can bring cheaper clicks than Google, but only if its bidding sees real conversions. A clean UET tag, event goals with revenue and consent mode are usually a one-afternoon job. If you want it set up together with Google Ads and Meta, see my conversion tracking service.