What is Microsoft UET Consent Mode?
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.
UET Consent Mode vs Google Consent Mode v2
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 useswindow.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 enforcesad_storage. - Regions. Google lets you scope a default to ISO 3166-2 regions with a
regionparameter. 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
deniedand, 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.
How to implement UET Consent Mode
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
- Place the
defaultcommand with'ad_storage': 'denied'near the top of the<head>on every page. - Add the standard UET tag (
bat.bing.com/bat.jswith your tag ID). - In your banner's callbacks, push
updatewithgrantedordeniedaccording to the choice. - On every following page, push the stored choice again as an update.
- 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.
How to verify that UET Consent Mode works
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
ascparameter must show denied before consent and granted after acceptance, on every subsequent event. - Browser console:
window.uetq.uetConfig.consent.enabledshould return true, andwindow.uetq.uetConfig.consent.adStorageAllowedshould return false before consent or after refusal, and true after acceptance. - Cookies: in DevTools, under Application then Cookies, no
_uetsid,_uetvidorMUIDshould 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.