Marketing tools

Microsoft UET Consent Mode: the complete guide for Microsoft Advertising

Article contents

UET (Universal Event Tracking) is the Microsoft Advertising tag that measures conversions and builds remarketing audiences for campaigns on Bing, Microsoft Edge and the Microsoft Advertising network. Like any advertising tag, it relies on identifiers stored on the visitor's device, which means that in Europe it falls under the consent rule of Article 5(3) of the ePrivacy Directive and under the GDPR.

UET Consent Mode is Microsoft's answer to that constraint. According to Microsoft's official setup documentation, it lets you adjust UET cookie access based on the consent status of your users. Your consent banner (CMP) sends a signal to the tag, and the tag decides whether it may read and write its cookies. If you already know Google Consent Mode v2, the logic will feel familiar, but the details differ.

The cookies involved are the ones Microsoft lists in its consent FAQ: MUID, _uetvid, _uetsid, _uetsid_exp, _uetvid_exp and MSPTC. If any of them is set before the visitor interacts with your banner, or after the visitor clicks Refuse, Microsoft treats it as a problem.

The ad_storage parameter and the default and update commands

Microsoft's Consent Mode relies on a single property, ad_storage, with two values:

  • granted: first-party cookies (on your domain) and third-party cookies (set by Microsoft on bing.com) may be read and written for UET.
  • denied: first-party cookies are neither read nor written. Third-party cookies are not written, and are read only for fraud and spam purposes, not for advertising.

Two commands drive this value, both pushed into the UET queue window.uetq. The default is set on every page, as high as possible in the <head>, before the page has finished loading: window.uetq = window.uetq || []; window.uetq.push('consent', 'default', {'ad_storage': 'denied'});

When the visitor makes a choice, you push an update: window.uetq.push('consent', 'update', {'ad_storage': 'granted'}); (or 'denied' if they refuse). Microsoft asks you to keep passing the current value on every page for as long as the choice applies, not just once.

Two details matter. First, Microsoft currently enforces only ad_storage; you may also send ad_user_data and ad_personalization, but they are not required. Second, outside the regions where Microsoft enforces Consent Mode, UET falls back to granted when no value is set. That is why an explicit denied default is essential for your European traffic.

Enforcement for the EEA, the UK and Switzerland

Microsoft Advertising announced that from 5 May 2025 it enforces a consent signal for all advertisers with end users in the European Economic Area, the United Kingdom and Switzerland. Two signals are accepted: UET Consent Mode or the IAB Transparency and Consent Framework (TCF). Microsoft's UET consent FAQ is explicit that you should use one or the other, never both at the same time.

The consequence of doing nothing is concrete: Microsoft stops tracking UET-based conversions and populating remarketing lists for that traffic. Smart bidding then works with less data and your audiences shrink. Microsoft also reviews sites where UET cookies are dropped before the banner is answered or after a refusal, and treats this as a breach of the Microsoft Advertising Agreement.

Do not confuse the advertising requirement with the legal one. Microsoft's enforcement protects its own contractual position; your legal obligation comes from the ePrivacy rules and the GDPR, enforced in the UK by the ICO under PECR. The ICO guidance on cookies and similar technologies requires consent that is freely given, specific, informed and expressed by a clear positive action. Consent Mode transmits that choice; it does not replace a valid banner.

The two systems share the same vocabulary, which causes a lot of confusion. Here are the real differences:

  • Separate signals. Google Consent Mode uses gtag('consent', ...) and the dataLayer. UET uses window.uetq. A Google signal does not automatically reach UET, unless you use the official UET template in Google Tag Manager, which can read the GTM consent state.
  • Number of parameters. Google Consent Mode v2 works with four main types (ad_storage, analytics_storage, ad_user_data, ad_personalization). Microsoft only enforces ad_storage.
  • Regions. Google lets you scope a default to ISO 3166-2 regions with a region parameter. Microsoft's documentation does not describe an equivalent, so most setups manage the regional logic in the CMP.
  • Basic and Advanced. Both vendors describe the same two implementations. In Basic mode, the tag is blocked until consent. In Advanced mode, the tag loads with denied and, per Microsoft, only anonymised data is collected and aggregated before modelling. Microsoft recommends Advanced but leaves the legal assessment to you.

Our article on Consent Mode basic vs advanced explains the trade-off on the Google side; the reasoning carries over to UET. If you want the most conservative setup under GDPR, Basic mode (no UET request at all before consent) remains the safest choice. Discuss Advanced mode with your DPO before enabling it.

Option 1: a CMP with native support

The simplest route is a consent banner that sends the UET signals for you. The CMP sets the denied default before UET loads, then pushes the update when the visitor clicks Accept or Refuse, and repeats it on each page. FlowConsent supports Microsoft UET Consent Mode natively, alongside Google Consent Mode v2, with prior blocking of scripts and a single script to install (no Google Tag Manager needed). The FlowConsent Google Consent Mode documentation shows how the consent signals are configured.

Option 2: Google Tag Manager

If your UET tag lives in GTM, use Microsoft's official UET template. According to Microsoft's GTM guide, the template can retrieve the consent state from GTM when you use a CMP integrated with Google Consent Mode. It offers two options: Enable consent updates (on by default) and Inherit initial consent (off by default). Turn on the second one if UET may fire after the visitor has already made a choice, otherwise that choice is not captured. For a refresher on consent settings in GTM, see our Google Tag Manager and Consent Mode guide.

Option 3: manual code

  1. Place the default command with 'ad_storage': 'denied' near the top of the <head> on every page.
  2. Add the standard UET tag (bat.bing.com/bat.js with your tag ID).
  3. In your banner's callbacks, push update with granted or denied according to the choice.
  4. On every following page, push the stored choice again as an update.
  5. If you use the UET integration with Microsoft Clarity, configure Clarity consent separately: Microsoft states that UET Consent Mode does not cover it.

Note that UET can also read consent signals automatically from standard sources such as the TCF. Microsoft recommends an explicit implementation anyway, and you can switch the automatic logic off with enableAutoConsent: false in the tag initialisation.

Microsoft provides several checks. Run them in a private window, starting with no stored choice:

  • UET Tag Helper (Edge and Chrome extension): in the Page Load event, the asc parameter must show denied before consent and granted after acceptance, on every subsequent event.
  • Browser console: window.uetq.uetConfig.consent.enabled should return true, and window.uetq.uetConfig.consent.adStorageAllowed should return false before consent or after refusal, and true after acceptance.
  • Cookies: in DevTools, under Application then Cookies, no _uetsid, _uetvid or MUID should appear before the choice or after a refusal.
  • Microsoft Advertising dashboard: under Conversions, then UET tag, the Consent Signal column shows Healthy when more than 75% of events over the last 7 days carry a valid signal, Moderate between 0% and 75%, and Missing at 0%. The Test your tag tab shows whether the signal is present for a given URL.

A quick cookie audit before and after the change is also a good way to catch an old hard-coded UET snippet that bypasses your CMP.

Common mistakes to avoid

  • Setting the default after the UET tag has already sent its first event.
  • Sending the update only on the page where the visitor clicked, and not on the following pages.
  • Running UET Consent Mode and TCF at the same time, which Microsoft advises against.
  • Assuming Google Consent Mode covers Microsoft Ads automatically.
  • Leaving a second UET snippet in the theme or in a plugin, outside the CMP's control.

Conclusion

UET Consent Mode is a small technical change with a large impact: one parameter, two commands and a few checks decide whether your Microsoft Advertising campaigns keep their European conversion data. Set denied by default, update it on every page, verify the asc parameter and the dashboard signal, and keep a banner that collects valid consent. To see which advertising tags your site loads today and whether they fire before consent, run a free scan of your website.

Questions

Common questions on this topic.

Can't find your question? Write to us, we answer fast.

Is Microsoft UET Consent Mode mandatory?

For visitors from the EEA, the UK and Switzerland, Microsoft Advertising has enforced a consent signal since 5 May 2025. You can send it through UET Consent Mode or the IAB TCF, but not both. Without a signal, Microsoft stops tracking UET conversions and populating remarketing lists for that traffic.

Does Google Consent Mode also work for Microsoft Ads?

Not automatically. Google Consent Mode sends its signal through gtag and the dataLayer, while UET reads its own queue, window.uetq. The official UET template in Google Tag Manager can read the GTM consent state, otherwise your CMP or code must send the UET commands separately.

Which parameters does UET Consent Mode use?

Microsoft currently enforces only ad_storage, with the values granted or denied. You may also send ad_user_data and ad_personalization, but they are not required. With denied, UET neither reads nor writes first-party cookies and does not write third-party cookies.

How can I check that UET Consent Mode is working?

Install the UET Tag Helper extension and check the asc parameter: it should show denied before consent and granted after acceptance. In the browser console, window.uetq.uetConfig.consent.enabled should return true. In Microsoft Advertising, the Consent Signal column of the UET tag page should show Healthy.

Does UET Consent Mode replace a cookie banner?

No. Consent Mode only passes the visitor's choice to the UET tag. Under the ePrivacy rules and the GDPR, you still need a banner that collects valid, prior consent and makes refusing as easy as accepting.

Make your site compliant today.

Free up to 25,000 sessions a month. No credit card, no commitment.