# Microsoft UET Consent Mode: set ad_storage for Microsoft Advertising

> Microsoft enforces UET Consent Mode in the EEA, UK and Switzerland. Set ad_storage to denied by default, update it on every choice, and check the asc value.

Source: https://cookiequiet.com/guides/microsoft-uet-consent-mode
Published: 2026-10-21
Publisher: Cookiequiet

## Steps

1. **Add the default on every page** Push consent default with ad_storage denied to window.uetq on every page, next to the UET tag.
2. **Map the marketing category** Decide that the banner's marketing or advertising category drives ad_storage for Microsoft Advertising.
3. **Push an update on each choice** When the visitor accepts, push consent update with ad_storage granted; when they refuse or withdraw, push denied.
4. **Repeat the stored choice on every page** On each page load, push the stored value again so returning visitors keep their consent state.
5. **Handle Clarity separately** If Clarity is linked to UET, set its own consent according to the analytics category.
6. **Verify with the Tag Helper and dashboard** Check that the asc parameter shows denied before consent and granted after, and that the UET dashboard reports a Healthy consent signal.

Microsoft UET Consent Mode is Microsoft Advertising's equivalent of Google Consent Mode, with a single setting: `ad_storage`. You push a default of `denied` on every page, then push an update of `granted` or `denied` when the visitor chooses, through the `window.uetq` queue. Microsoft says it enforces Consent Mode for visitors in the EEA, the UK and Switzerland, where the default is denied and conversions are lost if the granted signal is not passed after the visitor accepts. Google Consent Mode does not cover it: a site that runs both Google Ads and Microsoft Advertising needs both signals.

## What does ad_storage control?

Microsoft's documentation defines two values:

| Value | What UET does |
|---|---|
| `granted` | First-party and third-party UET cookies may be read and written |
| `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 |

For the purposes of UET, first-party cookies are those created on your domain (such as `_uetsid` and `_uetvid`), and third-party cookies are those created by Microsoft Advertising on bing.com. Outside the enforced regions, if no consent setting is passed, UET uses `granted` by default, which is why setting the default explicitly matters.

## Basic or advanced?

Microsoft describes two setups, like Google:

- **Basic.** The UET tag does not fire at all until the visitor grants consent. Nothing is sent before.
- **Advanced.** The tag loads at once with consent defaulted to denied; while denied, only anonymized data is collected and later aggregated for modeling. Microsoft recommends advanced mode for campaign performance.

As with Google, whether a request to Microsoft before consent is acceptable is a legal question for your supervisory authority, not a technical one. Basic mode is the conservative option: mark the UET tag so it only loads after marketing consent, as described in [block scripts until consent](/guides/block-scripts-until-consent).

## How do you set the default?

Microsoft's example places the default right after the UET tag, on every page:

```html
<script>
  window.uetq = window.uetq || [];
  window.uetq.push('consent', 'default', {
    'ad_storage': 'denied'
  });
</script>
```

What matters is that the default exists on every page before the visitor's choice is known, and that the update follows it.

## How do you send the visitor's choice?

When the visitor accepts the marketing or advertising category:

```html
<script>
  window.uetq = window.uetq || [];
  window.uetq.push('consent', 'update', {
    'ad_storage': 'granted'
  });
</script>
```

Send `denied` in the same way when they refuse or withdraw. Microsoft asks you to keep passing the value on subsequent pages for as long as the consent applies, so the stored choice must be pushed again on every page load.

## What about Google Tag Manager?

Microsoft publishes an official UET template for Tag Manager with consent settings. Google Tag Manager is not a consent tool, so the template needs a consent signal from your banner, usually a dataLayer event. When an update pushed from a custom HTML tag seems to have no effect, check the tag sequencing: the update must run after the UET queue exists and before the events you want to count.

## Does Microsoft read other signals?

Microsoft says that if you do not implement Consent Mode directly, it tries to read consent signals from available sources such as the IAB TCF, provided the site has a cookie banner and a standard consent solution. You can turn that off with `enableAutoConsent: false` in the UET tag. Microsoft recommends implementing Consent Mode or the TCF explicitly for full control.

## Is Microsoft Clarity covered?

No. Microsoft notes that if you use the UET and Clarity integration, Clarity's consent setting must be set separately. Clarity is a session recording and heatmap tool, which belongs in the analytics category of your banner.

## How do you check that it works?

Microsoft lists three ways:

1. **UET Tag Helper**, a browser extension for Edge and Chrome. Each UET event carries an `asc` parameter with the consent state. Before consent, either no UET event fires or `asc` is `denied`; after acceptance, every event shows `granted`.
2. **The UET dashboard** in Microsoft Advertising has a Consent signal column per event type: Healthy when more than 75% of events in the last seven days carry a valid signal, Moderate between 0% and 75%, Missing at 0%.
3. **Test your tag**, in the Conversions section, shows whether a consent signal was present for events on a given URL during your session.

Add the browser test from [checking cookies before consent](/guides/check-cookies-before-consent): no `_uetsid` or `_uetvid` cookie with a real identifier before the choice, nothing new after Reject all.

## Common mistakes

- Setting the default only on the home page; it must run on every page.
- Updating to granted on acceptance but never pushing denied after a later withdrawal.
- Relying on Google Consent Mode alone and assuming it reaches Microsoft.
- Forgetting the stored choice on the next page, so returning visitors who accepted are counted as denied.

## Using a consent banner that sends UET signals

Cookiequiet sends the UET signal when the Microsoft UET option is enabled in the dashboard: on every choice, and on each page load once a choice is stored, it pushes a consent update with `ad_storage` driven by the marketing category, next to the Google Consent Mode update from [the Consent Mode guide](/guides/google-consent-mode-v2). It does not push the default command itself, so keep Microsoft's default line in your UET snippet. Setup is one script tag before your other scripts, with Reject all on by default; the option is available on every plan, including the free one.

## Questions

### Does Google Consent Mode also work for Microsoft Advertising?

No. Microsoft UET reads its own consent command through the uetq queue. A site with both Google Ads and Microsoft Advertising tags must send both signals, ideally from the same banner choice.

### What happens if I do not implement UET Consent Mode?

For visitors in the EEA, the UK and Switzerland, Microsoft says it enforces Consent Mode with a default of denied, so conversions are lost when the granted signal is not passed after acceptance. Elsewhere, UET defaults to granted when no value is set.

### Which parameter does Microsoft use besides ad_storage?

None for Consent Mode. Microsoft's documentation describes a single property, ad_storage, with the values granted and denied. Google's ad_user_data and ad_personalization parameters have no UET equivalent.

### How do I see the consent state UET sent?

Install the UET Tag Helper extension and look at the asc parameter on each UET event. It should be denied before consent, or no event should fire, and granted after the visitor accepts.

## Sources

- [Microsoft Advertising, Setting up UET for consent mode](https://learn.microsoft.com/en-us/advertising/msa-help/hlp_ba_conc_uet_consent)
- [Microsoft Advertising, FAQ: UET and user consent](https://learn.microsoft.com/en-us/advertising/msa-help/hlp_ba_conc_uet_consentfaq)
- [Microsoft Advertising, Google Tag Manager template: consent mode](https://learn.microsoft.com/en-us/advertising/msa-help/hlp_ba_conc_uet_dynamicconsentgtm)
- [Directive 2002/58/EC (ePrivacy Directive), article 5(3)](https://eur-lex.europa.eu/eli/dir/2002/58/oj)
