> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.pandectes.io/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Comment mettre en place UET Microsoft Consent Mode dans le checkout

Ce guide vous aide à activer Microsoft Consent Mode dans le checkout, afin que vous puissiez suivre les événements de votre checkout avec le consentement de l'utilisateur.

### Objectif
Vous devez avoir mis en place Microsoft consent mode sur votre boutique si vous vendez dans l'UE et suivez des utilisateurs de l'EEE. Microsoft désactive même les campagnes qui ne respectent pas cette nouvelle norme. 

### Fonctionnement avec notre intégration
Pandectes GDPR propose une intégration directe pour Microsoft Consent Mode, mais, comme vous le savez, checkout extensibility ne permet pas aux scripts d'application de s'y exécuter. 
Le pixel personnalisé ci-dessous vous permettra donc d'envoyer le consentement à Microsoft et de suivre l'événement d'achat dans le checkout avec consentement !

En substance, l'intégration Pandectes et le pixel fonctionnent en tandem : l'intégration couvre toute la boutique, tandis que le pixel gère le checkout.

### Intégration :
Allez dans **Shopify Settings > Customer Events.** Puis cliquez sur **"Add Custom pixel"**

![](https://storage.crisp.chat/users/helpdesk/website/-/1/a/5/a/1a5af239e847cf00/cleanshot-2025-04-24-at-201545_fu6g1j.png)

Donnez-lui un nom parlant et cliquez sur **"Add pixel"**

![](https://storage.crisp.chat/users/helpdesk/website/-/1/a/5/a/1a5af239e847cf00/cleanshot-2025-04-24-at-201839_1yazufo.png)

Définissez la permission sur **"Not required"**

![](https://storage.crisp.chat/users/helpdesk/website/-/1/a/5/a/1a5af239e847cf00/cleanshot-2025-04-24-at-202045_qeke8u.png)

Puis collez le code ci-dessous dans la section de code : 

```
// Pandectes Pixel for Microsoft UET consent mode and events tracking

const uetTagId = '' // Input your UET tag Id
const DENIED =  "denied"
const GRANTED = "granted"
const STORE_POLICY = DENIED; // You can change to GRANTED if you would like  to have a loose policy

const getCookie = (cookieName) => {
    const cookieString = document.cookie;
    const cookieStart = cookieString.indexOf(cookieName + "=");
    if (cookieStart === -1) {
        return null;
    }
    let cookieEnd = cookieString.indexOf(";", cookieStart);
    if (cookieEnd === -1) {
        cookieEnd = cookieString.length;
    }
    const cookieValue = cookieString.substring(cookieStart + cookieName.length + 1, cookieEnd);
    try {
        const  decodedValue = atob(cookieValue);
        const parsedValue = JSON.parse(decodedValue);
        return parsedValue;
    } catch (error) {
        console.error("Error parsing cookie value:", error);
        return null;
    }
};

function setCookie(name, value, days) {
    const date = new Date();
    date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
    const expires = 'expires=' + date.toUTCString();
    document.cookie = `${name}=${value}; ${expires}; path=/; secure; samesite=strict`;
}

const getStorage = (preferences) => {
    const p4 = (preferences &4) === 0;
    output = {
        ad_storage: p4 ? GRANTED : DENIED
    }
    return output;
}

if (window.location.href.includes("/checkout/") ||window.location.href.includes("/checkouts/")){
    window.uetq = window.uetq || [];

    const cookie = getCookie("_pandectes_gdpr");
    const defaultStorage = getStorage(STORE_POLICY === DENIED ? 7:0);
    STORE_POLICY===DENIED ?  setCookie('_uetmsdns', '1', 365) : setCookie('_uetmsdns', '0', 365);
    window.uetq.push('consent', 'default', defaultStorage);
    
    if (cookie && cookie.preferences !== null && cookie.preferences !== undefined) {
        const updateStorage = getStorage(cookie.preferences);
        window.uetq.push('consent', 'update', updateStorage);
        if (updateStorage.ad_storage==GRANTED) {
            setCookie('_uetmsdns', '0', 365);
        }
    }
    
    /*
    
* UET tag Initialization
    */
    (function(w,d,t,r,u){var f,n,i;w[u]=w[u]||[],f=function(){var o={ti:uetTagId, disableAutoPageView: true, enableAutoSpaTracking: false};o.q=w[u],w[u]=new UET(o),w[u].push("pageLoad")},n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function(){var s=this.readyState;s&&s!=="loaded"&&s!=="complete"||(f(),n.onload=n.onreadystatechange=null)},i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i)})(window,document,"script","//bat.bing.com/bat.js","uetq");     

    /*
    
* Events Tracking
    */

    analytics.subscribe("page_viewed", (event) => { 
        window.uetq.push('event', 'page_view', { 'page_location': event.context.window.location.href }); 
    }); 

    analytics.subscribe("checkout_completed", event => { 

        let productIds = ''; 
        let revenueValue = 0; 
        let currency = ''; 

        if (event.data?.checkout) {
            revenueValue = event.data.checkout.totalPrice?.amount; 
            currency = event.data.checkout.totalPrice?.currencyCode;

            if (Array.isArray(event.data?.checkout?.lineItems)) { 
            const lineItemIds = event.data.checkout.lineItems.map(item => String(item.variant.product.id)); 
            productIds = lineItemIds.join(',').slice(0, 50); 
            } 

            window.uetq.push('event', 'purchase', { 
            'ecomm_prodid': productIds, 
            'ecomm_pagetype': 'purchase', 
            'revenue_value': revenueValue, 
            'currency': currency 
            }); 
        } 
    }); 

}
```

Vous devez ajouter l'ID de votre balise UET en haut du code, afin que les événements soient envoyés à votre balise, puis cliquer sur Connect.

![](https://storage.crisp.chat/users/helpdesk/website/-/1/a/5/a/1a5af239e847cf00/cleanshot-2025-04-24-at-202834_1dyelym.png)

Et c'est prêt ! Le pixel lira désormais le cookie Pandectes pour connaître l'état du consentement, en informera Microsoft et suivra l'événement !