# Sirdata CMP

Bienvenue dans la documentation Sirdata CMP, la solution qui vous accompagne dans votre mise en conformité aux réglementations relatives à la protection des données personnelles.

**Pour configurer et installer Sirdata CMP en quelques minutes et en toute simplicité, rendez-vous sur le** [**portail ABconsent**](https://www.abconsent.com/)**.**

Dans cette documentation, vous trouverez les informations techniques pour vous permettre d'interagir avec la CMP installée sur votre site mais également vous assister dans votre mise en conformité relative à la collecte et le traitement des données personnelles de vos utilisateurs.

Commencez par choisir une rubrique ci-dessous :

{% content-ref url="/pages/-MVMWUKKlYVf2Rbk3HWk" %}
[Fonctionnement](/cmp-api/fonctionnement)
{% endcontent-ref %}

{% content-ref url="/pages/CbHsXDIu8IMBa8vOFA1C" %}
[Gestion de l'affichage de la CMP pour le CCPA](/fonctionnalites-avancees/gestion-de-laffichage-de-la-cmp-pour-le-ccpa)
{% endcontent-ref %}

{% content-ref url="/pages/-MVMcmyfkHtmvP9hKcj0" %}
[Conditionnement d'un script distant hors Tag Manager](/gestion-des-scripts/conditionnement-tags)
{% endcontent-ref %}

{% content-ref url="/pages/-MVMmBTGvm9EUIBmRfJC" %}
[F.A.Q. CMP](/faq)
{% endcontent-ref %}


# Web & Web Mobile

**1) Ajoutez le tag d'installation dans votre page, avant la balise \</head> en précisant votre Partner ID et votre Config ID**

```
<script data-cfasync="false" src="https://cache.consentframework.com/js/pa/PARTNER_ID/c/CONFIG_ID/stub" referrerpolicy="unsafe-url" charset="utf-8" type="text/javascript"></script>
<script data-cfasync="false" src="https://choices.consentframework.com/js/pa/PARTNER_ID/c/CONFIG_ID/cmp" referrerpolicy="unsafe-url" charset="utf-8" type="text/javascript" async></script>
```

{% hint style="warning" %}
Attention à bien remplacer *PARTNER\_ID* et *CONFIG\_ID par vos identifiants. Retrouvez-les dans* [*votre compte*](https://cmp.sirdata.io)*.*
{% endhint %}

{% hint style="warning" %}
Attention : il ne faut surtout pas changer la logique synchrone du premier script (pas d'attribut async ou defer au script), sinon des signaux vitaux comme la file d'attente du TCF ou des signaux par défaut du Google Consent Mode seront inefficaces et des cookies ainsi que des traitements de données personnelles risquent de se produire sans consentement.
{% endhint %}

{% hint style="info" %}
Si vous souhaitez travailler entièrement sur une logique asynchrone, vous pouvez le faire via notre template dédié [GTM](https://cmp.docs.sirdata.net/install-1/via-un-tag-manager/chargement-via-google-tag-manager)
{% endhint %}

**2) Ajoutez le texte suivant dans votre politique de vie privée et le lien permettant aux utilisateurs de réafficher la CMP afin de consulter/modifier leurs choix** :

```
[Nom de l'entreprise] participe et est conforme à l'ensemble des Spécifications et Politiques du Transparency & Consent Framework de l'IAB Europe. [Il/Elle] utilise la Consent Management Platform n°92.

Vous pouvez modifier vos choix à tout moment en <a href='javascript:Sddan.cmp.displayUI()'>cliquant ici</a>.
```


# AMP

**1) Ajoutez le tag suivant dans votre page, dans la balise \</head>**

```
<script async custom-element="amp-consent" src="https://cdn.ampproject.org/v0/amp-consent-0.1.js"></script>
<meta name="amp-consent-blocking" content="amp-analytics,amp-ad">
```

**2) Ajoutez ensuite le tag suivant dans votre page, près de la balise \</body> en précisant votre Partner ID et votre Config ID**

```
<amp-consent id="consent" layout="nodisplay" type="sirdata">
<script type="application/json">
{
    "postPromptUI": "promptConsentUI",
    "clientConfig": {
        "type": "TCF_V2",
        "info": {
            "pa": PARTNER_ID,
            "c": "CONFIG_ID"
        }
    }
}
</script>
</amp-consent>
```

{% hint style="warning" %}
Attention à bien remplacer *PARTNER\_ID* et *CONFIG\_ID par vos identifiants. Retrouvez-les dans* [*votre compte*](https://cmp.sirdata.io)*.*
{% endhint %}

**3) Enfin, vous devez également ajouter un lien permettant aux utilisateurs de réafficher la CMP à tout moment sur toute vos pages ou sur la page de vie privée**

```
<button id="promptConsentUI" class="btn" on="tap:consent.prompt(consent=sirdata)" role="button">My consent choices</button>
```


# Via un Tag Manager


# Chargement via Google Tag Manager

Si vous souhaitez charger la CMP Sirdata via Google Tag Manager (GTM), vous devez activer le mode de Consentement Google via GTM également, pour avoir plus de contrôle sur son comportement.

Rendez-vous alors dans votre [compte GTM](https://tagmanager.google.com), section "Modèles", et cliquez sur "Rechercher dans la galerie" dans le tableau "Modèles de balise".

<figure><img src="/files/lhtr2LNeX2qOXN3VqAgj" alt=""><figcaption><p>"Rechercher dans la galerie"</p></figcaption></figure>

Rechercher "Sirdata CMP | Google Consent Mode"

<figure><img src="/files/saBrjAV4AAhi7bGVWTj3" alt=""><figcaption><p>Modèle "Sirdata CMP | Google Consent Mode"</p></figcaption></figure>

Ajouter le modèle "Sirdata CMP | Google Consent Mode" à l'espace de travail

<figure><img src="/files/UTxJTW6FBCkRMfRxzp9v" alt=""><figcaption><p>Ajout du modèle à l'espace de travail</p></figcaption></figure>

Rendez-vous dans la section "*Balises*", puis créez-en une nouvelle en sélectionnant le nouveau type de balise "*Sirdata CMP | Google Consent Mode*" qui apparait désormais dans les balises personnalisées :

<figure><img src="/files/olGcyDbgS2YsSJ4GlP1K" alt=""><figcaption></figcaption></figure>

Dans la partie configuration, cliquez sur ![](/files/0hWS0Qz9JQaa6kRnjGbq) pour ajouter une configuration :

<figure><img src="/files/iiAbvxVmmhEiLCRD73a9" alt=""><figcaption></figcaption></figure>

Sélectionnez vos critères ou **conservez la suggestion par défaut** en cas de doute (Consultez si besoin la [page officielle du Google Consent Mode](https://support.google.com/analytics/answer/9976101?hl=fr) pour plus d'information sur ces critères) :

<figure><img src="/files/73ISBiql0OGPYIVvNkZs" alt=""><figcaption></figcaption></figure>

Répétez l'opération si nécessaire, par exemple si vous faîtes des configurations différenciées par pays. Cliquez [ici](https://developers.google.com/tag-platform/devguides/privacy?hl=fr) pour plus d'information sur ces critères.

Configurez alors vos options avancées et entrez vos identifiants de partenaire et de configuration pour charger la CMP depuis GTM :

<figure><img src="/files/sP7lxOc52T2vGsawlzfy" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Si vous ne chargez pas la CMP Sirdata depuis GTM, il est **obligatoire** de la charger depuis le site, et les scripts de la CMP doivent être chargés **en amont** du Tag Manager.
{% endhint %}

Pour finir, sélectionnez le déclencheur "*Consent Initialization - All Pages*" et ![](/files/mU2dwvOBqq7FqAkNiyfv).

<figure><img src="/files/PKyUZ2u4U0HWfKag1AyY" alt=""><figcaption></figcaption></figure>

Testez via la prévisualisation, et publiez si tout fonctionne comme attendu.

**Bravo !**


# Dans un CMS

Via un Content Management System


# Chargement dans Shopify

Nous disposons d’un plugin pour la plateforme Shopify, ce qui vous permet d’intégrer la CMP sans avoir à copier/coller manuellement le tag dans le header de votre site.

#### **Sur Shopify :**

#### Installer l’extension Sirdata CMP

• Allez sur [https://apps.shopify.com](https://apps.shopify.com/)

• Recherchez "**Sirdata CMP**" et installez l’extension

• Ou cliquez directement [ici](https://apps.shopify.com/sirdata-cmp)

<figure><img src="/files/odHWsDx70eIP5iFZNDeJ" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/jS4LURQuKWdX3i1lMRPB" alt=""><figcaption></figcaption></figure>

#### Se connecter à votre compte

• Cliquez sur "**Connectez-vous**" pour vous connecter avec votre compte ABconsent

• Saisissez votre **email** et **mot de passe**

<figure><img src="/files/vvDQaQaXcbB1vOoniBRI" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/WriAeoUtFagJvC9cImAl" alt=""><figcaption></figcaption></figure>

#### Sélectionner la configuration CMP que vous venez de créer

• Dans le champ "**Sélectionner la configuration à utiliser**", choisissez la configuration que vous souhaitez utiliser

• Puis cliquez sur "**Enregistrer la configuration**"

<figure><img src="/files/bcX7lDPn8yYEllcPBfdR" alt=""><figcaption></figcaption></figure>

#### Activer l'extension Sirdata CMP sur votre site Shopify

• Cliquez sur le bouton "**Ouvrir l'éditeur de thème**"

• Vérifiez que l'extension est bien activée. Sinon, activez l'extension en cliquant sur le bouton en face de "**Sirdata Script**"

<figure><img src="/files/lLuP5LGUX7Md4seq1c65" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/lrsIC5vMk9auhGvgkpiQ" alt=""><figcaption></figcaption></figure>

### Et voilà votre Sirdata CMP est déployée sur votre site Shopify !

#### Commenter votre expérience

• Votre retour nous aide à améliorer notre extension et à mieux répondre à vos besoins. Si vous avez apprécié l’intégration ou souhaitez partager votre expérience, vous pouvez laisser un avis sur notre page Shopify en cliquant [ici](https://apps.shopify.com/sirdata-cmp)

• Pour publier un avis, cliquez sur le bouton "**Écrire un avis**" sur la page de l’application\
Merci pour votre soutien


# Chargement dans Shopify avec l'application

Avant tout, vérifiez que vous avez bien activé la prise en charge de la Shopify Consent API:

* Connectez-vous à votre compte sur <https://www.abconsent.com>.
* Accédez à votre CMP.
* Ouvrez la page **"Modules complémentaires"**.
* Vérifiez et activez si nécessaire l’option **"Shopify Customer Privacy"**.
* Enregistrez et publiez les modifications.

<figure><img src="/files/yZPLPkYClatxgAx1Fl16" alt=""><figcaption></figcaption></figure>

Pour l'installation de la CMP Sirdata dans Shopify, nous vous invitons à installer l'application dédiée, "Sirdata CMP" :

<figure><img src="/files/ECdNXXyzguPYgjfqJZpp" alt=""><figcaption><p>moteur de recherche Shopify Apps</p></figcaption></figure>

Une fois l'application installée, vous arriverez sur cette page:

<figure><img src="/files/YbavRW2rsKAHIfDQWSUp" alt=""><figcaption></figcaption></figure>

## Inscription

Si vous n'avez pas de compte Sirdata, entrez votre email, votre Domaine et l'URL dédiée à la Vie Privée (cookies, données personnelles), et validez les Conditions générales de ventes.

Une fois enregistré, la partie Settings sera automatiquement remplie pour vous. Une configuration par défaut sera créée, et vous recevrez un email contenant des accès au portail Sirdata vous perettant de **personnaliser votre CMP si nécessaire**.

Pensez à bien activer votre compte via le lien reçu par mail.

## Paramètres

Si vous possédez déjà un compte chez Sirdata, il vous suffit d'entrer votre Partner Id (5 ou 6 chiffres) et le Config Id (alphanumérique) de la configuration que vous souhaitez charger. Vous pouvez les retrouver dans le portail de gestion de la CMP :

<figure><img src="/files/IBMfGlIb7BSVVq1EvsE5" alt=""><figcaption><p>Partner Id (5 chiffres)</p></figcaption></figure>

Et voilà, votre Sirdata CMP est déployée sur votre site Shopify !


# Chargement dans Wordpress

Avant tout, vérifiez que vous avez bien activé la prise en charge du Wordpress Consent Mode:

* Connectez-vous à votre compte sur <https://www.abconsent.com>.
* Accédez à votre CMP.
* Ouvrez la page **"Modules complémentaires"**.
* Vérifiez et activez si nécessaire l’option **"Connecteur WP Consent API"**.
* Enregistrez et publiez les modifications.

<figure><img src="/files/PYUQ4HWX1iMDTuBQPO1J" alt=""><figcaption></figcaption></figure>

Pensez à bien activer l’extension dans [WP Consent API](https://wordpress.org/plugins/wp-consent-api/) dans votre compte WordPress.

## 2 méthodes s'offrent alors à vous : via le plugin ou directement dans le code source :thumbsup:

**Méthode A - Via l'extension Sirdata CMP**

#### **1. Téléchargez le module**

{% embed url="<https://fr.wordpress.org/plugins/sirdata-cmp/>" %}

2. **Dans Wordpress** sélectionnez « Ajouter une extension » dans la section Extensions

<figure><img src="/files/7nG7GOWNj5dIn3jAS3DH" alt=""><figcaption><p>Ajouter l'extension</p></figcaption></figure>

3. **Sélectionnez « Téléverser une extension »**, « Choisir un fichier » et importez le zip de l’extension. Enfin, cliquez sur « Installer »

<figure><img src="/files/fb1EP8Tf0it58rENDH06" alt=""><figcaption><p>Téléversez l'extension</p></figcaption></figure>

4. Une fois l’installation terminée, Cliquez sur « **activer l’extension** »

<figure><img src="/files/KbtLLuwM40Fe2NAXjlfp" alt=""><figcaption><p>Activez l'extension</p></figcaption></figure>

5. **Le plugin Sirdata est activé** sur votre Wordpress, il ne reste plus qu’à le configurer

<figure><img src="/files/7ZPKtq2J30EgtnUNIjoO" alt=""><figcaption><p>Installation réussie</p></figcaption></figure>

6. **Déployer votre CMP** : créez votre compte Sirdata CMP depuis le plugin ou configurez votre plugin

<figure><img src="/files/r9mobmgQm2BgOaj8Ncct" alt=""><figcaption></figcaption></figure>

Et voila votre Sirdata CMP est déployée sur votre site Wordpress !

**Méthode B - Directement dans le code source de votre template**

Vous pouvez copier / coller le tag de Sirdata CMP dans le header de votre site Wordpress.

Dans Wordpress :

1\. **Sélectionnez l'*****Editeur de thème*** dans la section *Apparence* :

![Lancez l'éditeur de thème](/files/-MdbPwu4WUffA64Wsrxb)

2\. Dans votre thème Wordpress actif, **sélectionnez l'*****en-tête du thème*** (fichier : header.php) :

![Sélectionnez header.php](/files/-MdbQ0VafaHOvUqG3CX9)

3. Collez juste au dessus de la balise **\</head>** le code snippet de la CMP :

![Collez le script de Sirdata CMP](/files/-MdbR1Ez-e6wAjJXbXIg)

4\. **Sauvegardez** la modification du fichier :

![Sauvegardez](/files/-MdbQKCqSRvq7280YRy4)

Et voila votre Sirdata CMP est déployée sur votre site Wordpress !


# Chargement dans Joomla

**Intégration dans Joomla :** Directement dans le code source :thumbsup:

Vous pouvez copier / coller le tag de Sirdata CMP dans le header de votre site Joomla :

1. **Connectez vous** en tant qu'administrateur dans votre projet Joomla
2. **Dans le menu de navigation** principal, allez dans : Extensions > Templates > Templates.
3. **Cliquez sur votre template** et selectionnez index.php dans le menu de gauche
4. **Copiez collez le code Sirdata CMP** le plus haut possible juste au dessus de la balise **\</head>**

<figure><img src="/files/zvc46dyTICMwOTiA9rb3" alt=""><figcaption></figcaption></figure>

5. **Enregistrez** en cliquant sur valider

Et voila votre Sirdata CMP est déployée sur votre site Joomla !


# Chargement dans Prestashop

Vous pouvez parfaitement copier / coller le tag de Sirdata CMP dans le header de votre site Prestashop.

**Dans Prestashop :**

#### **1) Télécharger le module**

{% file src="/files/fzugd2bnHxEQdzY2Uyln" %}

#### **2) Configurer le Module**

Après l'installation, allez dans la section "Modules" de votre back-office Prestashop. Recherchez le module Sirdata CMP et cliquez sur "Configurer". Entrez les informations requises telles que votre **ID de partenaire** et **l'identifiant de configuration**. Assurez-vous de sauvegarder les modifications pour appliquer les paramètres efficacement.

#### **3) Tester le Module**

Après avoir configuré le module, assurez-vous de tester son fonctionnement directement sur votre site. Vérifiez que toutes les fonctionnalités prévues s'exécutent correctement et que l'interface utilisateur est visible et opérationnelle.

#### **5) Dépanner les Erreurs Courantes**

Si des problèmes surviennent, consultez la documentation liée à l'erreur ou vérifiez les journaux d'erreur de votre serveur. Assurez-vous également que toutes les informations saisies (**ID de partenaire** et **identifiant de configuration**) sont correctes et à jour.

Dans la section "Modules", aller dans "Le gestionnaire de modules" et installer le module :

<figure><img src="/files/NUXRAwcjUmiZgvrvInH8" alt=""><figcaption></figcaption></figure>

Et voila votre Sirdata CMP est déployée sur votre site Prestashop !


# Chargement dans Magento

Vous pouvez déployer Sirdata CMP sur votre site Magento.

**Méthode A - Depuis la marketplace Magento**

**1)** **Récupérez et installez** le plugin Sirdata CMP : <https://commercemarketplace.adobe.com/sirdata-cmp-sirdata.html>

**2) Votre extension est désormais installée** et accessible à partir du menu de navigation de gauche dans votre back-office Magento 2 : Content > SirdataCMP

<figure><img src="/files/Yasg9XDKFzzB6zDPOb4M" alt="" width="375"><figcaption></figcaption></figure>

**3) Déployer votre CMP** : créez votre compte Sirdata CMP depuis le plugin ou configurez votre plugin

Et voila votre Sirdata CMP est installée sur votre site Magento !

**Méthode B - Directement depuis Magento :**

#### **1) T**éléchargez le plugin

{% file src="/files/Nf6q4jyStU50yyFBGD7t" %}

**2) Extrayez les fichiers du package:** Décompressez le fichier ZIP que vous avez téléchargé.

**3) Transférez les fichiers** du plugin vers votre serveur Magento: Utilisez un client FTP pour vous connecter à votre serveur Magento et transférer les fichiers extraits dans un nouveau répertoire "SirdataCmp". L'emplacement exact peut varier selon le plugin, mais il se trouve généralement dans `app/code`.

**4) Exécutez les commandes d'installation :** Dans la ligne de commande (à l'aide de la commande « cd »), accédez au répertoire racine de Magento 2, les commandes suivantes dans l'ordre :

`php bin/magento module:status`\
`php bin/magento module:enable SirdataCMP_Sirdata`\
`php bin/magento setup:upgrade`\
`php bin/magento setup:di:compile`\
`php bin/magento setup:static-content:deploy`

**5) Nettoyez le cache :** une fois l'installation terminée, videz le cache de Magento pour que les modifications prennent effet en vous connectant sur le back-office Magento et naviguant dans Système > Cache Management > Videz le cache

**6) Votre extension est désormais installée** et accessible à partir du menu de navigation de gauche dans votre back-office Magento 2 : Content > SirdataCMP

<figure><img src="/files/Yasg9XDKFzzB6zDPOb4M" alt="" width="375"><figcaption></figcaption></figure>

**7) Déployer votre CMP** : créez votre compte Sirdata CMP depuis le plugin ou configurez votre plugin

<figure><img src="/files/r9mobmgQm2BgOaj8Ncct" alt=""><figcaption></figcaption></figure>

Et voila votre Sirdata CMP est installée sur votre site Magento !


# Chargement dans Drupal

Vous pouvez parfaitement copier / coller le tag de Sirdata CMP dans le header de votre site Drupal.

**Dans Drupal :**

**1) Sélectionner "Extension" dans le menu**

<figure><img src="/files/S4XBtciU1SmyoQUgnIL0" alt=""><figcaption><p>"Modules"</p></figcaption></figure>

#### 2) Cliquer sur "Ajouter un nouveau module"

<figure><img src="/files/olAFXQ9snzmdhZ1MLpLB" alt=""><figcaption></figcaption></figure>

#### 3) Cliquer sur "Modules"

<figure><img src="/files/LjnwhXnXRuZxfFMtIg1X" alt=""><figcaption></figcaption></figure>

#### 4) Rechercher "CMP Sirdata" dans la barre de recherche

<figure><img src="/files/ILYXHpt96Blp0bn9rewM" alt=""><figcaption></figcaption></figure>

#### 5) Sélectionner le Module "CMP Sirdata"

<figure><img src="/files/MiJI3YWBC15qALxLgy3S" alt=""><figcaption></figcaption></figure>

#### 6) Slectionner la dernière version :

<figure><img src="/files/I2hS5zqzWjFTSrM29xwQ" alt=""><figcaption></figcaption></figure>

#### 7) télécharger le fichier "tar.gz"

<figure><img src="/files/9zAQT9hNXB0jffJwmv5Q" alt=""><figcaption></figcaption></figure>

#### 8) Ajouter le fichier dans votre dans le module

<figure><img src="/files/RWIUtELzU8oZsV7jO0zu" alt=""><figcaption></figcaption></figure>

#### 9) Dans votre liste de module, installer le module CMP Sirdata

<figure><img src="/files/jSo0t8dsFftlEVV0aq8x" alt=""><figcaption></figcaption></figure>

#### 10) Configurer votre CMP

<figure><img src="/files/LEzZMN7PUhNdaIrFiVwm" alt=""><figcaption></figcaption></figure>

#### 11) Ajouter le PartnerID et le configID sur le portail [CMP Sirdata](https://cmp.sirdata.io/login)

<figure><img src="/files/Pq52UmRYUimsqgwhPGWg" alt=""><figcaption></figcaption></figure>

Et voila votre Sirdata CMP est déployée sur votre site Drupal !


# Chargement dans Wix

### 🔧 Étapes d’intégration d’un JavaScript dans Wix

#### **Option 1 : Intégration via l'onglet "Paramètres" > "Personnaliser le code"**

1. Connectez-vous à votre compte Wix et accédez à votre **tableau de bord**.
2. Dans le menu de gauche, cliquez sur **Paramètres** > **Personnaliser le code**.
3. Cliquez sur **Ajouter un code personnalisé**.
4. Collez le **script JavaScript** dans le champ prévu :

   ```html
   <script type="text/javascript" src="https://cache.consentframework.com/js/pa/XXXXX/c/yyyyy/stub"></script>
   <script type="text/javascript" src="https://choices.consentframework.com/js/pa/XXXXX/c/yyyy/cmp" async></script>
   ```
5. Définissez :
   * **Nom** du code (ex. : "CMP Sirdata").
   * **Pages** sur lesquelles le script doit s’exécuter (recommandé : “Toutes les pages”).
   * **Emplacement** du script : choisir <**head>** selon les recommandations de votre fournisseur.
   * **Condition d’activation** : au chargement de chaque page.
6. Cliquez sur **Appliquer**.


# Corriger les erreurs d'implémentation

Soucieuse de votre sécurité juridique et contractuelle, Sirdata procède à une détection automatique des problèmes d'implémentation de différents Mode de consentement des CMS

Nous vous les indiquons via des codes erreur, par email et dans votre compte client Abconsent.com.

<figure><img src="/files/T5M4tzNJrNF54pMfxAKk" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/y7ReMje1v22ygGuxalY5" alt=""><figcaption></figcaption></figure>

Vous trouverez dans cette section les explications et instructions nécessaires à leur résolution.


# Shopify Consent Mode inactif

#### Description

La CMP ABconsent est utilisée sur un site Shopify, mais l’option **"Shopify Consent Mode"** n’a pas été activée. Cette option permet à la CMP de communiquer correctement avec l’environnement Shopify et de gérer les signaux attendus pour le Google Consent Mode, notamment lors du passage de pages ou des événements liés à l’hydratation du storefront.

#### Que faire

1. Connectez-vous à votre compte sur <https://www.abconsent.com>.
2. Accédez à la configuration de votre CMP.
3. Ouvrez la section **"Modules complémentaires"**.
4. Activez l’option **"Shopify Customer Privacy"**.
5. Enregistrez et publiez les modifications.

<figure><img src="/files/lJMXmABpvigiQ4i3EIRd" alt=""><figcaption></figcaption></figure>


# Wordpress Consent Mode inactif

#### Description

La CMP ABconsent est détectée sur un site utilisant **WordPress**, mais l’option **"WordPress Consent Mode"** n’a pas été activée dans la configuration de la CMP. Sans cette option, la synchronisation entre WordPress, le plugin CMP, et les balises Google peut ne pas fonctionner correctement, ce qui empêche le Google Consent Mode d’être appliqué correctement.

#### Que faire

1. Connectez-vous à votre compte sur <https://www.abconsent.com>.
2. Accédez à la configuration de votre CMP.
3. Activez l’option **"Connecteur WP Consent API"** dans les paramètres avancés.
4. Enregistrez et publiez la configuration mise à jour.

<figure><img src="/files/MWZkuhoDt5eAEWLrFrZC" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
Pensez à bien vérifier ou activer l’extension dans [WP Consent API](https://wordpress.org/plugins/wp-consent-api/) dans votre compte WordPress.
{% endhint %}


# Exclusion des systèmes de cache

Les scripts CMP (Consent Management Platform) fournis par Sirdata sont des ressources essentielles conçues pour être **géolocalisées et personnalisées** pour chaque utilisateur. Cela garantit qu’ils s’adaptent dynamiquement à la localisation et aux préférences des utilisateurs, offrant une expérience à la fois précise et pleinement conforme aux réglementations en matière de confidentialité en constante évolution.

En raison de l'importance critique de ces scripts dans la gestion du consentement des utilisateurs et le respect des cadres réglementaires, il est **essentiel que seule la version la plus récente des scripts soit utilisée en permanence**. L'utilisation d'une version obsolète pourrait entraîner de graves conséquences, telles que des violations réglementaires, une gestion inadéquate des consentements ou même des pertes de revenus.

**Pour cette raison, Sirdata interdit explicitement toute mise en cache ou modification de nos scripts CMP**. Ces interdictions sont clairement définies dans nos Conditions Générales (CG). Modifier ou mettre en cache le script présente le risque de diffuser une version obsolète ou incorrecte, qui pourrait ne pas refléter les mises à jour, les nouvelles fonctionnalités ou les ajustements réglementaires. De telles modifications pourraient compromettre l’efficacité de la CMP et exposer votre organisation à des risques de non-conformité.

Sirdata assume l'entière responsabilité de la gestion du processus de diffusion des scripts. Nous utilisons des **Réseaux de Diffusion de Contenu (CDN) leaders du secteur**, tels que Cloudflare et BunnyCDN, pour garantir des performances optimales des scripts. Ces CDN, reconnus mondialement pour leur rapidité, leur fiabilité et leur sécurité robuste, nous permettent de diffuser la version la plus récente des scripts CMP aux utilisateurs du monde entier, sans latence ni problèmes de fiabilité.

En vous appuyant sur notre infrastructure éprouvée et sécurisée, vous pouvez avoir l’assurance que le script CMP sera toujours conforme, performant et sécurisé. Pour garantir ce niveau de qualité et de confiance, **nous exigeons de tous nos partenaires et clients qu'ils s'abstiennent de modifier ou de mettre en cache le script, comme indiqué dans nos CGV**. Cette politique vise à vous protéger, ainsi que vos utilisateurs, tout en préservant l’intégrité du système CMP.

{% hint style="danger" %}
**Ne mettez pas en cache ou ne modifiez pas le script CMP de Sirdata**. Laissez Sirdata gérer sa diffusion et ses mises à jour, afin de garantir les plus hauts niveaux de conformité, de performance et de confiance utilisateur à tout moment.
{% endhint %}


# Plugin Autoptimize plour WordPress

Autoptimize est un plugin WordPress populaire utilisé pour optimiser les performances des sites en minifiant, combinant et différant les fichiers JavaScript, CSS et HTML. Pour garantir le bon fonctionnement des scripts de la CMP Sirdata, il est essentiel de les exclure des processus d’optimisation d’Autoptimize.

***

**Étapes pour exclure les scripts de la CMP Sirdata dans Autoptimize**

1. **Accéder aux paramètres d’Autoptimize**
   * Connectez-vous à votre tableau de bord administrateur WordPress.
   * Allez dans **Réglages > Autoptimize**.
2. **Exclure les scripts Sirdata de l'optimisation JavaScript**
   * Dans les paramètres d’Autoptimize, trouvez la section **Options JavaScript**.
   * Repérez le champ intitulé **Exclure des scripts de l’optimisation JavaScript**.
   * Ajoutez les entrées suivantes (une par ligne) :

     ```
     .consentframework.com
     .abconsent.net
     ```
3. **Exclure les scripts Sirdata de l'optimisation CSS** (si applicable)
   * Faites défiler jusqu’à la section **Options CSS**.
   * Dans le champ **Exclure du traitement CSS**, ajoutez :

     ```
     .consentframework.com
     .abconsent.net
     ```
4. **Enregistrer les modifications**
   * Faites défiler jusqu’en bas de la page et cliquez sur le bouton **Enregistrer les modifications et vider le cache**. Cela garantit que les exclusions sont prises en compte et que le cache est rafraîchi.
5. **Vérifier les exclusions**
   * Visitez votre site et vérifiez que les scripts de la CMP Sirdata fonctionnent correctement. Vous pouvez utiliser les outils de développement de votre navigateur (par exemple, Chrome DevTools) pour confirmer que les scripts sont bien chargés et qu’ils ne sont pas optimisés.

***

**Pourquoi exclure les scripts de la CMP Sirdata ?**

* **Comportement dynamique et géolocalisé** : Les scripts de la CMP Sirdata s’adaptent dynamiquement à la localisation et aux préférences des utilisateurs. Les optimiser ou les mettre en cache peut entraîner des comportements incorrects ou obsolètes.
* **Conformité réglementaire** : Ces scripts sont essentiels pour respecter les réglementations en matière de confidentialité. Toute interférence peut entraîner des non-conformités, des plaintes ou des pertes de revenus.

***

En suivant ces étapes, Autoptimize exclura les scripts de la CMP Sirdata de ses processus d’optimisation, garantissant leur bon fonctionnement et leur conformité.


# Plugin Cloudflare pour WordPress

Le plugin Cloudflare pour WordPress permet d'intégrer et de configurer facilement les services Cloudflare, y compris la mise en cache et les optimisations des ressources. Pour garantir le bon fonctionnement des scripts de la CMP Sirdata, il est essentiel de les exclure des processus de mise en cache et d’optimisation.

***

**Étapes pour exclure les scripts de la CMP Sirdata dans le plugin Cloudflare**

1. **Accéder aux paramètres du plugin Cloudflare**
   * Connectez-vous à votre tableau de bord administrateur WordPress.
   * Allez dans **Réglages > Cloudflare**.
2. **Configurer les exclusions de mise en cache**
   * Dans l’interface du plugin, cliquez sur **Page Rules** (Règles de Page) dans le tableau de bord Cloudflare.
   * Cliquez sur **Créer une règle de page**.
   * Dans le champ **URL**, entrez les domaines ou chemins suivants pour les exclure de la mise en cache :

     ```
     *consentframework.com/*
     *abconsent.net/*
     ```
   * Sous les paramètres de la règle, sélectionnez **Cache Level: Bypass** (Niveau de cache : Ignorer).
3. **Désactiver les optimisations automatiques**
   * Allez dans l’onglet **Speed** (Vitesse) du plugin Cloudflare.
   * Désactivez les fonctionnalités telles que **Auto Minify** pour les fichiers JavaScript, CSS, et HTML si elles sont activées.
4. **Ajouter des règles spécifiques pour les scripts Sirdata (si nécessaire)**
   * Si des optimisations spécifiques s’appliquent (comme Rocket Loader de Cloudflare), vous pouvez exclure les scripts de Sirdata.
   * Allez dans **Settings > Optimization** dans le tableau de bord Cloudflare.
   * Désactivez **Rocket Loader** ou ajoutez une exclusion via un attribut de script (`data-cfasync="false"`) pour éviter que les scripts de Sirdata ne soient optimisés.
5. **Enregistrer et appliquer les modifications**
   * Une fois toutes les exclusions configurées, cliquez sur **Appliquer les réglages**.
6. **Purger le cache**
   * Dans le plugin Cloudflare, allez dans l’onglet **Cache**.
   * Cliquez sur **Purge Everything** pour vider le cache et appliquer immédiatement les nouvelles règles.
7. **Vérifier les exclusions**
   * Testez votre site pour vous assurer que les scripts de la CMP Sirdata fonctionnent correctement. Vous pouvez utiliser des outils comme les DevTools du navigateur pour confirmer que les scripts sont chargés sans interférences.

***

**Pourquoi exclure les scripts de la CMP Sirdata ?**

* **Comportement dynamique et géolocalisé** : Les scripts de la CMP Sirdata s’adaptent en temps réel à la localisation et aux préférences des utilisateurs. Les mettre en cache ou les optimiser peut entraîner des dysfonctionnements ou des contenus incorrects.
* **Conformité réglementaire** : Ces scripts sont essentiels pour respecter les exigences en matière de confidentialité. Toute modification ou interférence due à la mise en cache ou aux optimisations peut entraîner des non-conformités, des plaintes, ou des pertes de revenus.

***

En suivant ces étapes, vous garantirez que les scripts de la CMP Sirdata ne seront pas mis en cache ou optimisés par le plugin Cloudflare, assurant ainsi leur bon fonctionnement et leur conformité.


# Plugin LiteSpeed pour WordPress

1\) Accédez à votre tableau de bord administrateur WordPress, puis allez dans **LiteSpeed Cache> Optimisation de page** depuis le menu situé dans la barre latérale gauche.

<figure><img src="/files/tnx9UlLxeDXEU4Xu4HOg" alt=""><figcaption></figcaption></figure>

2\) Dans le tableau de bord LieSpeed, sélectionnez l'onglet **\[8] Personnalisation**

<figure><img src="/files/VU8UXe6GylEj0eDJP1kw" alt=""><figcaption></figcaption></figure>

Ajoutez ces deux entrées dans la cadre **JS exclu** et **Le JS différé/reporté** exclut :

* **.consentframework.com**
* **.abconsent.net**

Puis cliquez sur "**Enregistrer les modifications**"


# Plugin NitroPack pour WordPress

1\) Accédez à votre tableau de bord administrateur WordPress, puis allez dans **NitroPack > Dashboard** depuis le menu situé dans la barre latérale gauche.

<figure><img src="/files/VO9KehegLQIa64VT5hkn" alt=""><figcaption></figcaption></figure>

2\) Dans le tableau de bord NitroPack, faites défiler vers le bas et cliquez sur le bouton **Go to App**.

<figure><img src="/files/WlyWNPBqb4kjBRuzzwio" alt=""><figcaption></figcaption></figure>

3\) Dans l'application NitroPack, accédez à **Cache Settings > Cache**, puis faites défiler vers le bas jusqu'à la section **Exclusions**.

<figure><img src="/files/UDI2iZqCrwc9d93uwFbj" alt=""><figcaption></figcaption></figure>

Pour empêcher NitroPack d’optimiser les scripts et ressources de la CMP Sirdata, ajoutez les entrées suivantes à la liste des ressources exclues à la liste d’exclusion **Asset URL/Code** pour vous assurer que NitroPack n’optimise aucun script provenant de nos domaines :

* **\*.consentframework.com/\***
* **\*.abconsent.net/\***

{% hint style="info" %}
Gardez bien toutes les options (ressources/relations/appareils/opérations) activées.
{% endhint %}

Cliquez sur le bouton "Enregistrer".

4\) Dans la section des extensions (plugins) de votre tableau de bord, effectuez une purge du cache.

<figure><img src="/files/nB1k9zhXkVOS4KmEDXie" alt=""><figcaption></figcaption></figure>


# Plugin SG Optimizer pour WordPress

SG Optimizer est un plugin d’optimisation des performances proposé par SiteGround pour améliorer la vitesse et l’efficacité des sites web. Pour garantir le bon fonctionnement des scripts de la CMP Sirdata, il est essentiel de les exclure des processus de mise en cache et d’optimisation de SG Optimizer.

***

**Étapes pour exclure les scripts de la CMP Sirdata dans SG Optimizer**

1. **Accéder aux paramètres de SG Optimizer**
   * Connectez-vous à votre tableau de bord administrateur WordPress.
   * Dans le menu de gauche, cliquez sur **SG Optimizer**.
2. **Exclure les scripts Sirdata de l’optimisation JavaScript**
   * Accédez à l’onglet **Optimisation Frontend**.
   * Dans la section **Exclure des fichiers JavaScript**, ajoutez les entrées suivantes (une par ligne) :

     ```
     .consentframework.com
     .abconsent.net
     ```
3. **Exclure les scripts Sirdata du cache**
   * Allez dans l’onglet **Cache** de SG Optimizer.
   * Dans la section **Exclure des URL du cache**, ajoutez les pages où les scripts de Sirdata CMP sont utilisés ou utilisez les motifs suivants pour exclure directement les scripts :

     ```
     *consentframework.com*
     *abconsent.net*
     ```
4. **Désactiver les optimisations supplémentaires (si nécessaire)**
   * Si des fonctionnalités telles que la minification ou la combinaison des fichiers JavaScript sont activées, assurez-vous que les scripts mentionnés ci-dessus sont exclus. Vous pouvez gérer cela dans l’onglet **Optimisation Frontend**.
5. **Vider le cache**
   * Après avoir effectué les modifications, revenez à l’onglet **Cache**.
   * Cliquez sur **Purger le cache** pour supprimer tous les fichiers en cache et appliquer les nouvelles règles.
6. **Vérifier les exclusions**
   * Testez votre site pour vérifier que les scripts de la CMP Sirdata fonctionnent correctement. Vous pouvez utiliser les outils de développement de votre navigateur pour vous assurer que les scripts se chargent correctement sans être modifiés ou mis en cache.

***

**Pourquoi exclure les scripts de la CMP Sirdata ?**

* **Comportement dynamique et géolocalisé** : Les scripts de la CMP Sirdata s’adaptent dynamiquement en fonction de la localisation et des préférences des utilisateurs. Les optimiser ou les mettre en cache peut entraîner des comportements incorrects ou obsolètes.
* **Conformité réglementaire** : Ces scripts sont essentiels pour respecter les réglementations en matière de confidentialité. Toute interférence due au cache ou à l’optimisation peut entraîner des non-conformités, des plaintes ou des pertes de revenus.

***

En suivant ces étapes, SG Optimizer exclura les scripts de la CMP Sirdata de ses processus de mise en cache et d’optimisation, garantissant leur bon fonctionnement et leur conformité.


# Plugin WP Super Cache pour WordPress

WP Super Cache est un plugin de cache populaire pour WordPress qui génère des fichiers HTML statiques pour accélérer le chargement des pages. Pour garantir le bon fonctionnement des scripts de la CMP Sirdata, il est essentiel de les exclure du cache et des autres optimisations.

***

**Étapes pour exclure les scripts de la CMP Sirdata dans WP Super Cache**

1. **Accéder aux paramètres de WP Super Cache**
   * Connectez-vous à votre tableau de bord administrateur WordPress.
   * Allez dans **Réglages > WP Super Cache**.
2. **Désactiver la mise en cache pour les scripts de la CMP Sirdata**
   * Dans les paramètres de WP Super Cache, rendez-vous dans l’onglet **Avancé**.
   * Faites défiler jusqu’à la section **Noms de fichiers acceptés et URIs rejetés**.
   * Dans le champ intitulé **"Ajoutez ici des chaînes (pas un nom de fichier) pour empêcher la mise en cache d'une page"**, ajoutez les domaines ou scripts suivants :

     ```
     .consentframework.com
     .abconsent.net
     ```
3. **Exclure les pages utilisant les scripts de la CMP Sirdata** (si nécessaire)
   * Si certaines pages spécifiques dépendent des scripts de la CMP Sirdata, ajoutez leurs URL dans le champ **"URIs rejetés"**. Par exemple :

     ```
     /page-avec-cmp
     ```
4. **Enregistrer les modifications**
   * Une fois les exclusions ajoutées, cliquez sur **Enregistrer les réglages** pour appliquer les modifications.
5. **Vider le cache**
   * Dans les paramètres de WP Super Cache, allez dans l’onglet **Contenu**.
   * Cliquez sur **Supprimer le cache** pour que les exclusions prennent effet immédiatement.
6. **Vérifier les exclusions**
   * Testez votre site pour vérifier que les scripts de la CMP Sirdata fonctionnent correctement. Utilisez les outils de développement de votre navigateur pour vous assurer que les scripts sont bien chargés sans être mis en cache.

***

**Pourquoi exclure les scripts de la CMP Sirdata ?**

* **Comportement dynamique et géolocalisé** : Les scripts de la CMP Sirdata s’adaptent dynamiquement en fonction de la localisation et des préférences des utilisateurs. Les mettre en cache peut entraîner l’affichage de contenu obsolète ou incorrect.
* **Conformité réglementaire** : Ces scripts sont essentiels pour respecter les réglementations en matière de confidentialité. Toute interférence due à la mise en cache peut entraîner des non-conformités, des plaintes ou des pertes de revenus.

***

En suivant ces étapes, WP Super Cache exclura les scripts de la CMP Sirdata de ses processus de mise en cache, garantissant leur bon fonctionnement et leur conformité.


# Plugin W3 Total Cache pour WordPress

W3 Total Cache est un plugin WordPress populaire qui améliore les performances des sites en mettant en cache et en optimisant le contenu. Cependant, pour garantir le bon fonctionnement des scripts de la CMP Sirdata, ils doivent être exclus des processus de mise en cache et d’optimisation.

***

**Étapes pour exclure les scripts de la CMP Sirdata dans W3 Total Cache**

1. **Accéder aux paramètres de W3 Total Cache**
   * Connectez-vous à votre tableau de bord administrateur WordPress.
   * Allez dans **Performance > Réglages généraux**.
2. **Exclure les scripts Sirdata du cache de pages**
   * Dans les **Réglages généraux**, faites défiler jusqu’à la section **Cache de pages**.
   * Cliquez sur **Paramètres avancés** (ou allez directement dans **Performance > Cache de pages**).
   * Trouvez le champ intitulé **"Ne jamais mettre en cache les pages suivantes"** ou **"Exclure des chemins"**.
   * Ajoutez les domaines suivants :

     ```
     .consentframework.com
     .abconsent.net
     ```
3. **Exclure les scripts Sirdata de l'optimisation Minify**
   * Allez dans **Performance > Minify**.
   * Faites défiler jusqu’à la section **Paramètres avancés**.
   * Localisez les champs pour exclure les fichiers JavaScript et CSS.
   * Ajoutez les entrées suivantes dans les champs respectifs :

     ```
     .consentframework.com
     .abconsent.net
     ```
4. **Exclure les scripts Sirdata du cache d'objets et du cache de fragments (si activé)**
   * Allez dans **Performance > Cache d'objets** et **Performance > Cache de fragments**.
   * Ajoutez les exceptions nécessaires pour les scripts Sirdata si ces fonctionnalités sont activées.
5. **Exclure les scripts Sirdata du CDN (si applicable)**
   * Si vous utilisez un CDN configuré via W3 Total Cache, allez dans **Performance > CDN**.
   * Trouvez le champ permettant d’exclure des fichiers ou des chemins spécifiques du cache CDN.
   * Ajoutez les entrées suivantes :

     ```
     .consentframework.com
     .abconsent.net
     ```
6. **Enregistrer les paramètres et vider le cache**
   * Après avoir effectué les modifications, cliquez sur **Enregistrer les paramètres et vider les caches** pour appliquer les nouvelles exclusions.
7. **Tester les exclusions**
   * Visitez votre site pour vérifier que les scripts de la CMP Sirdata fonctionnent correctement. Utilisez les outils de développement de votre navigateur pour confirmer que les scripts sont bien chargés sans optimisation ni mise en cache.

***

**Pourquoi exclure les scripts de la CMP Sirdata ?**

* **Comportement dynamique et géolocalisé** : Les scripts de la CMP Sirdata s’adaptent en fonction de la localisation et des préférences des utilisateurs. Les mettre en cache ou les optimiser peut entraîner l’affichage de contenu incorrect ou obsolète.
* **Conformité réglementaire** : Ces scripts sont essentiels pour respecter les réglementations en matière de confidentialité. Toute interférence peut entraîner des non-conformités, des plaintes ou des pertes de revenus.

***

En suivant ces étapes, W3 Total Cache exclura les scripts de la CMP Sirdata de ses processus de mise en cache et d’optimisation, garantissant leur bon fonctionnement et leur conformité.


# Plugin WP Meteor pour Wordpress

WP Meteor permet d'optimiser la vitesse de chargement en différant les fichiers JavaScript. Cependant, les scripts de la CMP Sirdata doivent être exclus des optimisations pour garantir leur bon fonctionnement et leur conformité. Voici comment configurer ces exclusions.

***

**Étapes pour exclure les scripts de la CMP Sirdata dans WP Meteor**

1. **Accéder aux paramètres de WP Meteor**
   * Connectez-vous à votre tableau de bord administrateur WordPress.
   * Allez dans **Réglages > WP Meteor**.
2. **Exclure les scripts de l'optimisation JavaScript**
   * Dans les paramètres WP Meteor, localisez la section **Exclure des scripts JavaScript**.
   * Ajoutez les entrées suivantes (une par ligne) dans le champ dédié :

     ```
     .consentframework.com
     .abconsent.net
     ```
3. **Enregistrer les modifications**
   * Une fois les exclusions ajoutées, cliquez sur **Enregistrer les modifications** pour appliquer les réglages.
4. **Purger le cache**
   * Si nécessaire, videz le cache pour vous assurer que les exclusions prennent effet immédiatement.
5. **Vérifier les exclusions**
   * Testez votre site pour vous assurer que les scripts de la CMP Sirdata se chargent correctement et fonctionnent comme prévu.

***

**Pourquoi exclure les scripts de la CMP Sirdata ?**

* **Scripts dynamiques et géolocalisés** : Les scripts de la CMP Sirdata sont conçus pour s'adapter en fonction de la localisation et des préférences des utilisateurs. Les différer ou les optimiser peut entraîner des erreurs ou des non-conformités.
* **Conformité réglementaire** : Ces scripts sont essentiels pour respecter les réglementations en matière de confidentialité. Toute interférence peut causer des non-conformités, des plaintes ou des pertes de revenus.

***

En suivant ces étapes, WP Meteor exclura les scripts de la CMP Sirdata des optimisations JavaScript, garantissant leur bon fonctionnement et leur conformité.


# Plugin WP Rocket pour WordPress

WP Rocket est un **plugin de cache premium** pour WordPress, conçu pour améliorer les performances de votre site web en optimisant la vitesse de chargement des pages. Cependant, les scripts de la CMP Sirdata doivent être exclus des optimisations pour garantir leur bon fonctionnement et leur conformité. Voici comment configurer ces exclusions.

***

**Étapes pour exclure les scripts de la CMP Sirdata dans WP Rocket**

1. **Accéder aux paramètres de WP Rocket**
   * Connectez-vous à votre tableau de bord administrateur WordPress.
   * Allez dans **Réglages > WP Rocket**.
2. **Exclure les hôtes de l'optimisation JavaScript**
   * Dans le menu des paramètres de WP Rocket, cliquez sur l'onglet **Optimisation des fichiers**.
   * Faites défiler jusqu’à la section **Fichiers JavaScript**.
   * Localisez le champ **Fichiers JavaScript exclus**.
   * Ajoutez les entrées suivantes dans ce champ (une par ligne) :

     ```
     .consentframework.com
     .abconsent.net
     ```
3. **Exclure les hôtes du JavaScript différé**
   * Toujours dans l’onglet **Optimisation des fichiers**, trouvez le champ **Exclusions du JavaScript différé**.
   * Ajoutez les mêmes entrées dans ce champ :

     ```
     .consentframework.com
     .abconsent.net
     ```
4. **Exclure les hôtes de l'exécution retardée du JavaScript**
   * Dans l’onglet **Optimisation des fichiers**, accédez à la section **Exécution retardée du JavaScript**.
   * Sous le champ **JavaScript exclu**, ajoutez les entrées suivantes :

     ```
     .consentframework.com
     .abconsent.net
     ```
5. **Enregistrer les modifications**
   * Une fois les exclusions ajoutées dans les champs appropriés, faites défiler vers le bas et cliquez sur le bouton **Enregistrer les modifications** pour appliquer les réglages.
6. **Purger le cache**
   * Rendez-vous dans l’onglet **Tableau de bord** de WP Rocket.
   * Cliquez sur le bouton **Vider le cache** pour vous assurer que tous les fichiers en cache sont mis à jour avec les nouvelles exclusions.

***

**Pourquoi ces exclusions sont-elles importantes ?**

* **Respect des contenus dynamiques** : Les scripts hébergés sur `.consentframework.com` et `.abconsent.net` sont géolocalisés et dynamiques, ce qui signifie qu’ils s’adaptent à la localisation et aux préférences des utilisateurs. Les mettre en cache ou les optimiser peut entraîner l’affichage d’un contenu incorrect ou obsolète.
* **Conformité réglementaire** : Ces scripts sont essentiels pour assurer la conformité avec les réglementations sur la confidentialité. Toute interférence due à la mise en cache ou à l'optimisation peut entraîner des violations réglementaires ou des dysfonctionnements.

***

En suivant ces étapes, WP Rocket exclura les hôtes spécifiés de la mise en cache et des optimisations JavaScript, garantissant ainsi un fonctionnement correct et conforme.


# Configuration Flash

### 🛠️ Comportement par défaut d’une configuration rapide

Lorsque vous créez une **configuration rapide** dans la plateforme, l’interface est automatiquement préconfigurée avec plusieurs options courantes et intégrations activées afin de garantir la conformité et de maximiser l’interopérabilité dès le départ.

<figure><img src="/files/5vlS2qPbx2pk9BaIpicN" alt=""><figcaption></figcaption></figure>

***

#### ✅ Options activées par défaut

Les options suivantes sont **activées automatiquement** lors de la création d’une configuration rapide :

***

#### 1. **Intégrations de plateformes pré-sélectionnées**

Les principales plateformes suivantes sont préconfigurées et activées par défaut :

* **Google Advertising & Analytics**
* **Microsoft Advertising & Microsoft Clarity**
* **Meta / Facebook**

Ces vendors sont déclarés de manière transparente et sont actifs immédiatement, permettant ainsi de **collecter et transmettre les signaux de consentement** dès le chargement de la CMP.

La bannière de consentement inclut les **finalités de traitement pertinentes** pour chacune de ces plateformes.

***

#### 2. **Finalités de traitement déclarées**

La bannière de consentement affiche les finalités de traitement adéquates en lien avec les vendors déclarés.\
Chaque finalité (ex. : personnalisation publicitaire, mesure d’audience, analyse) est :

* correctement liée aux vendors concernés,
* déclarée de façon structurée dans l’interface utilisateur.

***

#### 3. **Activation de Google Consent Mode**

Le **Google Consent Mode avancé** est activé automatiquement. Il est :

* connecté à **Google Tag Manager** et à la variable globale `dataLayer` (modifiable dans votre compte)
* configuré pour gérer dynamiquement les signaux de consentement sur les finalités suivantes :
  * `analytics_storage`
  * `ad_storage`
  * `ad_personalization`
  * `ad_user_data`
  * `personalization_storage`
  * `functionality_storage`
  * `security_storage`

Les signaux définis par défault sont "denied", et les signaux d'update dépendent des choix des utilisateurs ("denied" ou "granted").

Le Consent Mode garantit la compatibilité avec :

* **Google Ads**
* **Google Analytics 4 (GA4)**
* **Google Merchant Center**
* **Floodlight (Campaign Manager 360)**\
  Et permet l’activation de la **modélisation de données** (data modeling) en cas de consentement partiel ou refusé.

***

#### 4. **Activation du Microsoft Consent Mode**

Le **Microsoft UET Consent Mode** est également activé par défaut.\
Il permet à **Microsoft Ads** de :

* différer le déclenchement de ses balises,
* ne collecter les données qu’en cas de consentement explicite.

***

#### 5. **Activation du Clarity Consent Mode**

Le **Consent Mode de Microsoft Clarity** est activé par défaut.\
Il garantit que Clarity ne commence à collecter les données comportementales qu’après obtention du consentement pour l’analyse.

***

#### 6. **Activation du framework IAB TCF**

Le **Transparency & Consent Framework (TCF)** de l’IAB Europe est activé automatiquement.\
Cela implique :

* la génération d’une **chaîne TC valide** (`TC string`),
* le mapping de tous les vendors déclarés selon la dernière version du TCF,
* la communication des finalités et bases légales aux vendors en conformité avec le RGPD.

***

#### 7. **Option de retrait du consentement et de réaffichage de l’UI**

Un élément d’interface (bouton, lien ou icône flottante) est ajouté par défaut pour permettre à l’utilisateur de :

* **modifier ou retirer son consentement à tout moment**,
* depuis n’importe quelle page, conformément aux exigences réglementaires de **"retrait facile"**.

La forme et l’emplacement de cet élément sont **adaptables selon le design choisi**.

***

#### 8. **Détection automatique de la langue de l’utilisateur**

L’interface de la CMP est automatiquement **affichée dans la langue de l’utilisateur**,\
en fonction :

* de la **langue du navigateur**,
* ou des **préférences régionales du système**.

Le texte, les libellés, les boutons et les messages sont traduits dynamiquement sans configuration manuelle.

***

### 🔧 Personnalisation

Toutes les options ci-dessus peuvent être **modifiées dans le portail** :

* Ajouter ou retirer des vendors,
* Activer ou désactiver des plateformes (ex. : Meta, TikTok, Pinterest),
* Activer ou désactiver un mode de consentement (Google, Microsoft, TCF...),
* Personnaliser l’apparence ou le comportement du bouton de réaffichage de la CMP.

***

#### ✅ En résumé

Cette configuration par défaut permet un **déploiement rapide**, conforme aux exigences légales (RGPD, ePrivacy, DMA...) tout en étant compatible avec les principaux écosystèmes publicitaires et analytiques.\
Elle reste **entièrement personnalisable selon vos besoins**.


# Data Layer

La CMP ABconsent utilise la variable **`dataLayer`** par défaut pour pousser les informations de consentement.

**Si vous choisissez volontairement un autre nom que `dataLayer` et que la CMP n’est pas chargée via Google Tag Manager,** déclarez explicitement ce nom **avant le chargement de la CMP** à l’aide de la variable suivante :

<pre class="language-javascript"><code class="lang-javascript">&#x3C;script>
    window.ABconsentCMP = window.ABconsentCMP || {};
<strong>    window.ABconsentCMP.gtmDataLayerName = "NOM_DU_DATALAYER_PERSONNALISÉ";
</strong><strong>&#x3C;/script>
</strong></code></pre>

<figure><img src="/files/og8gJ20c03PuBQqRFMxq" alt=""><figcaption></figcaption></figure>


# Introduction

Les **modes de consentement numérique** désignent des mécanismes techniques permettant aux plateformes publicitaires et aux sites web de respecter les choix des utilisateurs en matière de confidentialité et de traitement des données.

Parmi eux, le **Google Consent Mode**, le **TCF (Transparency & Consent Framework) de l'IAB** et le **Bing Consent Mode** sont des protocoles qui facilitent la transmission du consentement des utilisateurs aux différents services publicitaires et analytiques.

Ces systèmes interagissent avec les **CMP (Consent Management Platforms)** pour moduler le stockage et l’utilisation des cookies sans nécessiter d’intervention manuelle, garantissant ainsi une gestion fluide et dynamique des données utilisateur en fonction des réglages définis par le site.


# Google Consent Mode

Le Mode Consentement de Google, ou Google Consent Mode, est une interface qui vous permet d'informer Google du consentement de vos utilisateurs concernant l'utilisation de cookies ou d'identifiants d'application.

Par exemple, les balises gtag.js et gtm.js reçoivent et interprètent les préférences de consentement de vos utilisateurs exprimées via Sirdata CMP, puis ajustent dynamiquement le fonctionnement en termes de création ou de lecture de cookies.

{% hint style="info" %}
Consultez la [page officielle du Google Consent Mode](https://support.google.com/analytics/answer/9976101?hl=fr) pour plus d'information.
{% endhint %}

{% hint style="danger" %}
ATTENTION : le Google Consent Mode ne couvre pas ou pas complètement certains aspects relatifs au RGPD, comme la base légale des traitements de données personnelles ou le transfert potentiel vers les Etats-Unis lorsqu'ils s'appuient sur les Clauses Contractuelles Type de l'Union Européenne par exemple.

Merci de vous référer à la section dédié à [Sirdata Analytics Helper](https://server-side.docs.sirdata.net/sirdata-server-side/sirdata-analytics-helper) si votre souhait est de sécuriser les transferts de données vers Google Analytics aux Etats-Unis.
{% endhint %}


# Préalable Obligatoire

Pour activer une version de la CMP Sirdata compatible avec le Google Consent Mode, voici les prérequis à mettre en place :

## 1) Activation du partenaire "Google Advertising Products"

Assurez-vous que le partenaire Google Advertising Products (ID : 755) est bien activé dans votre liste de partenaire :

<figure><img src="/files/4ImAlkjsP7d7AXQ1qtgT" alt=""><figcaption><p>Partenaire "Google Advertising Products" (ID : 755)</p></figcaption></figure>

## 2) Activation du partenaire "Google Analytics"

Assurez-vous que le partenaire Google Analytics (ID : 8) est bien activé dans votre liste de partenaire :

<figure><img src="/files/uD6Cgk0UwmqMJN3OyCTJ" alt=""><figcaption><p>Partenaire "Google Analytics" (ID : 8)</p></figcaption></figure>

## 3) Activation du Google Consent Mode

### a) Vous n'avez pas désactivé l'option du Google Consent Mode (Implémentation de la CMP en dur ou via un CMS)

L'option du Google Consent Mode est activée par défaut avec la CMP Sirdata :

<figure><img src="/files/2obZzbUZrf5g9R0WZU0D" alt=""><figcaption><p>Option "Google Consent Mode"</p></figcaption></figure>

Cette option permet d'activer le Google Consent Mode via la CMP Sirdata lorsque l'implémentation de la CMP Sirdata est en dur ou via un CMS.

### b) Vous avez désactivé l'option du Google Consent Mode (Implémentation de la CMP via Google Tag Manager)

Si vous souhaitez implémenter la CMP Sirdata via GTM, il faut désactiver cette option et utiliser le template "Sirdata CMP | Google Consent Mode" disponible dans la Galerie de Google Tag Manager :

<figure><img src="/files/wAu3geU4Dn8IYR7d0hNH" alt=""><figcaption><p>Modèle de balise "Sirdata CMP | Google Consent Mode"</p></figcaption></figure>


# Activation du Google Consent Mode Avancé


# Via la CMP Sirdata

## 1) Activation du Google Consent Mode avancé

La première possibilité qui s'offre à vous pour activer le mode de Consentement avancé de Google est également la plus simple.

Il suffit de vous connecter à votre [compte Sirdata CMP](https://cmp.sirdata.io/), puis d'accéder à la [section de configuration](https://cmp.sirdata.io/cmp).

Cliquez alors sur le pictogramme d'édition de votre CMP, ou de celle qui est installée sur le site concerné si vous en avez plusieurs (bouton![](/files/UL5vmZAJYNa6Yfy7SpN3) situé à droite dans le tableau de vos configurations), puis sélectionnez "***Editer les modules complémentaires***" :

<figure><img src="/files/rX7UDo91oasKPn26ehMC" alt=""><figcaption></figcaption></figure>

Bougez le slider de l'option "***Activation du Google Consent Mode***" vers la droite :

<figure><img src="/files/lipWcEKOzmWT8Tx3wuna" alt=""><figcaption></figcaption></figure>

Cliquez alors sur ![](/files/34P11cTXRFDj6w8iJgeF) et c'est terminé :)

## 2) Configuration du Google Consent Mode

L'intégration du Consent Mode via cette option est une intégration universelle dans laquelle les signaux par défaut sont :

* *ad\_storage='denied'*
* *analytics\_storage='denied'*
* *functionality\_storage='denied'*
* *personalization\_storage='denied'*
* *security\_storage='denied'*

Après le consentement de l'utilisateur, un signal de mise à jour '*granted*' est envoyé pour les signaux concernés parmi.

En cas de retrait du consentement un signal de mise à jour '*denied*' est envoyé pour les signaux concernés.

Dans tous les cas, les balises attendront pendant 1 seconde un signal de choix envoyé par la CMP avant de déclencher d'éventuels pings sans cookie (commande "*wait\_for\_update: 1000*").

{% hint style="info" %}
Consultez la [page officielle du Google Consent Mode](https://support.google.com/analytics/answer/9976101?hl=fr) pour plus d'information.
{% endhint %}

{% hint style="danger" %}
ATTENTION : le Google Consent Mode ne couvre pas ou pas complètement certains aspects relatifs au RGPD, comme la base légale des traitements de données personnelles ou le transfert potentiel vers les Etats-Unis lorsqu'ils s'appuient sur les Clauses Contractuelles Type de l'Union Européenne par exemple.

Merci de vous référer à la section dédié à [Sirdata Analytics Helper](https://server-side.docs.sirdata.net/sirdata-server-side/sirdata-analytics-helper) si votre souhait est de sécuriser les transferts de données vers Google Analytics.
{% endhint %}

{% hint style="info" %}
Si vous souhaitez gérer différemment ce comportement par défaut et/ou le comportement de mise à jour, ou encore établir des règles régionales, reportez-vous à la section "[*Activation via Google Tag Manager*](/standards-de-transmission-du-consentement/google-consent-mode/activation-du-google-consent-mode-avance/via-google-tag-manager)".
{% endhint %}


# Via Google Tag Manager

Si vous souhaitez activer le mode de Consentement avancé de Google via Google Tag Manager (GTM), pour avoir plus de contrôle sur son comportement ou pour charger les scripts de la CMP Sirdata à parir de GTM par exemple, c'est tout à fait possible.

Rendez-vous alors dans votre [compte GTM](https://tagmanager.google.com), section "Modèles", et cliquez sur "Rechercher dans la galerie" dans le tableau "Modèles de balise".

<figure><img src="/files/lhtr2LNeX2qOXN3VqAgj" alt=""><figcaption><p>"Rechercher dans la galerie"</p></figcaption></figure>

Rechercher "Sirdata CMP | Google Consent Mode"

<figure><img src="/files/saBrjAV4AAhi7bGVWTj3" alt=""><figcaption><p>Modèle "Sirdata CMP | Google Consent Mode"</p></figcaption></figure>

Ajouter le modèle "Sirdata CMP | Google Consent Mode" à l'espace de travail

<figure><img src="/files/UTxJTW6FBCkRMfRxzp9v" alt=""><figcaption><p>Ajout du modèle à l'espace de travail</p></figcaption></figure>

Rendez-vous dans la section "*Balises*", puis créez-en une nouvelle en sélectionnant le nouveau type de balise "*Sirdata | Google Consent Mode*" qui apparait désormais dans les balises personnalisées :

<figure><img src="/files/DlIb5phB5rll9RLeAxsR" alt=""><figcaption></figcaption></figure>

Dans la partie configuration, cliquez sur ![](/files/0hWS0Qz9JQaa6kRnjGbq) pour ajouter une configuration :

<figure><img src="/files/iiAbvxVmmhEiLCRD73a9" alt=""><figcaption></figcaption></figure>

Sélectionnez vos critères ou conservez la suggestion par défaut (Consultez si besoin la [page officielle du Google Consent Mode](https://support.google.com/analytics/answer/9976101?hl=fr) pour plus d'information sur ces critères) :

<figure><img src="/files/73ISBiql0OGPYIVvNkZs" alt=""><figcaption></figcaption></figure>

Répétez l'opération si nécessaire, par exemple si vous faîtes des configurations différenciées par pays. Cliquez [ici](https://developers.google.com/tag-platform/devguides/privacy?hl=fr) pour plus d'information sur ces critères.

Configurez alors vos options avancées et entrez vos identifiants de partenaire et de configuration si vous souhaitez charger la CMP depuis GTM :

<figure><img src="/files/sP7lxOc52T2vGsawlzfy" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Si vous ne chargez pas la CMP Sirdata depuis GTM, il est **obligatoire** de la charger depuis le site, et les scripts de la CMP doivent être chargés **en amont** du Taga Manager.
{% endhint %}

Pour finir, sélectionnez le déclencheur "*Consent Initialization - All Pages*" et ![](/files/mU2dwvOBqq7FqAkNiyfv).

<figure><img src="/files/PKyUZ2u4U0HWfKag1AyY" alt=""><figcaption></figcaption></figure>

Testez via la prévisualisation, et publiez si tout fonctionne comme attendu.

**Bravo !**

{% hint style="danger" %}
ATTENTION : le Google Consent Mode ne couvre pas ou pas complètement certains aspects relatifs au RGPD, comme la base légale des traitements de données personnelles ou le transfert potentiel vers les Etats-Unis lorsqu'ils s'appuient sur les Clauses Contractuelles Type de l'Union Européenne par exemple.

Merci de vous référer à la section dédié à [Sirdata Analytics Helper](https://server-side.docs.sirdata.net/sirdata-server-side/sirdata-analytics-helper) si votre souhait est de sécuriser les transferts de données vers Google Analytics.
{% endhint %}


# Activation du Google Consent Mode Basique


# Via la CMP Sirdata

## 1) Activation du Google Consent Mode basique

La première possibilité qui s'offre à vous pour activer le mode de Consentement avancé de Google est également la plus simple.

Il suffit de vous connecter à votre [compte Sirdata CMP](https://cmp.sirdata.io/), puis d'accéder à la [section de configuration](https://cmp.sirdata.io/cmp).

Cliquez alors sur le pictogramme d'édition de votre CMP, ou de celle qui est installée sur le site concerné si vous en avez plusieurs (bouton![](/files/UL5vmZAJYNa6Yfy7SpN3) situé à droite dans le tableau de vos configurations), puis sélectionnez "***Editer les modules complémentaires***" :

<figure><img src="/files/rX7UDo91oasKPn26ehMC" alt=""><figcaption></figcaption></figure>

Bougez le slider de l'option "***Activation du Google Consent Mode***" vers la droite :

<figure><img src="/files/lipWcEKOzmWT8Tx3wuna" alt=""><figcaption></figcaption></figure>

Cliquez alors sur ![](/files/34P11cTXRFDj6w8iJgeF)

## 2) Configuration du Google Consent Mode

L'intégration du Consent Mode via cette option est une intégration universelle dans laquelle les signaux par défaut sont :

* *ad\_storage='denied'*
* *analytics\_storage='denied'*
* *functionality\_storage='denied'*
* *personalization\_storage='denied'*
* *security\_storage='denied'*

Après le consentement de l'utilisateur, un signal de mise à jour '*granted*' est envoyé pour les signaux concernés parmi.

En cas de retrait du consentement un signal de mise à jour '*denied*' est envoyé pour les signaux concernés.

Dans tous les cas, les balises attendront pendant 1 seconde un signal de choix envoyé par la CMP avant de déclencher d'éventuels pings sans cookie (commande "*wait\_for\_update: 1000*").

{% hint style="info" %}
Consultez la [page officielle du Google Consent Mode](https://support.google.com/analytics/answer/9976101?hl=fr) pour plus d'information.
{% endhint %}

{% hint style="danger" %}
ATTENTION : le Google Consent Mode ne couvre pas ou pas complètement certains aspects relatifs au RGPD, comme la base légale des traitements de données personnelles ou le transfert potentiel vers les Etats-Unis lorsqu'ils s'appuient sur les Clauses Contractuelles Type de l'Union Européenne par exemple.

Merci de vous référer à la section dédié à [Sirdata Analytics Helper](https://server-side.docs.sirdata.net/sirdata-server-side/sirdata-analytics-helper) si votre souhait est de sécuriser les transferts de données vers Google Analytics.
{% endhint %}

{% hint style="info" %}
Si vous souhaitez gérer différemment ce comportement par défaut et/ou le comportement de mise à jour, ou encore établir des règles régionales, reportez-vous à la section "[*Activation via Google Tag Manager*](/standards-de-transmission-du-consentement/google-consent-mode/activation-du-google-consent-mode-basique/via-google-tag-manager)".
{% endhint %}

## **3) Conditionnement des balises Google**

Pour activer le Google Consent Mode **"Basique"** il faut conditionner vos scripts Google.

Exemple pour Google Adsense :

{% code title="Tag avant conditionnement" %}

```
<script src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
```

{% endcode %}

devient :

{% code title="Tag modifié avec conditionnement" %}

```
<script
    data-cmp-src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"
    data-cmp-vendor="755"
    data-cmp-purposes="1,3,4">
</script>
```

{% endcode %}

Exemple pour Google Analytics :

{% code title="Tag avant conditionnement" %}

```
 <script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());

      gtag('config', 'G-XXXXXXXXXX');
    </script>
```

{% endcode %}

devient :

{% code title="Tag modifié avec conditionnement" %}

```
<script async 
  data-cmp-src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"
  data-cmp-extravendor="8"
  data-cmp-purposes="1,9,10">

</script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());

      gtag('config', 'G-XXXXXXXXXX');
    </script>
```

{% endcode %}


# Via Google Tag Manager

Si vous souhaitez activer le mode de Consentement basique de Google via Google Tag Manager (GTM), pour avoir plus de contrôle sur son comportement ou pour charger les scripts de la CMP Sirdata à parir de GTM par exemple, c'est tout à fait possible.

Rendez-vous alors dans votre [compte GTM](https://tagmanager.google.com), section "Modèles", et cliquez sur "Rechercher dans la galerie" dans le tableau "Modèles de balise".

<figure><img src="/files/lhtr2LNeX2qOXN3VqAgj" alt=""><figcaption><p>"Rechercher dans la galerie"</p></figcaption></figure>

Rechercher "Sirdata CMP | Google Consent Mode"

<figure><img src="/files/saBrjAV4AAhi7bGVWTj3" alt=""><figcaption><p>Modèle "Sirdata CMP | Google Consent Mode"</p></figcaption></figure>

Ajouter le modèle "Sirdata CMP | Google Consent Mode" à l'espace de travail

<figure><img src="/files/UTxJTW6FBCkRMfRxzp9v" alt=""><figcaption><p>Ajout du modèle à l'espace de travail</p></figcaption></figure>

Rendez-vous dans la section "*Balises*", puis créez-en une nouvelle en sélectionnant le nouveau type de balise "*Sirdata | Google Consent Mode*" qui apparait désormais dans les balises personnalisées :

<figure><img src="/files/DlIb5phB5rll9RLeAxsR" alt=""><figcaption></figcaption></figure>

Dans la partie configuration, cliquez sur ![](/files/0hWS0Qz9JQaa6kRnjGbq) pour ajouter une configuration :

<figure><img src="/files/iiAbvxVmmhEiLCRD73a9" alt=""><figcaption></figcaption></figure>

Sélectionnez vos critères ou conservez la suggestion par défaut (Consultez si besoin la [page officielle du Google Consent Mode](https://support.google.com/analytics/answer/9976101?hl=fr) pour plus d'information sur ces critères) :

<figure><img src="/files/73ISBiql0OGPYIVvNkZs" alt=""><figcaption></figcaption></figure>

Répétez l'opération si nécessaire, par exemple si vous faîtes des configurations différenciées par pays. Cliquez [ici](https://developers.google.com/tag-platform/devguides/privacy?hl=fr) pour plus d'information sur ces critères.

Configurez alors vos options avancées et entrez vos identifiants de partenaire et de configuration si vous souhaitez charger la CMP depuis GTM :

<figure><img src="/files/sP7lxOc52T2vGsawlzfy" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Si vous ne chargez pas la CMP Sirdata depuis GTM, il est **obligatoire** de la charger depuis le site, et les scripts de la CMP doivent être chargés **en amont** du Taga Manager.
{% endhint %}

Sélectionnez le déclencheur "*Consent Initialization - All Pages*" et ![](/files/mU2dwvOBqq7FqAkNiyfv).

<figure><img src="/files/PKyUZ2u4U0HWfKag1AyY" alt=""><figcaption></figcaption></figure>

Testez via la prévisualisation.

{% hint style="danger" %}
ATTENTION : le Google Consent Mode ne couvre pas ou pas complètement certains aspects relatifs au RGPD, comme la base légale des traitements de données personnelles ou le transfert potentiel vers les Etats-Unis lorsqu'ils s'appuient sur les Clauses Contractuelles Type de l'Union Européenne par exemple.

Merci de vous référer à la section dédié à [Sirdata Analytics Helper](https://server-side.docs.sirdata.net/sirdata-server-side/sirdata-analytics-helper) si votre souhait est de sécuriser les transferts de données vers Google Analytics.
{% endhint %}

Pour finir le paramétrage du Google Consent Mode basique, il faut conditionner les balises Google (Google Analytics, Google Ads, Google Floodlight etc...)

**a) Conditionnement de Google Analytics**

* Créer un déclencheur "événement personnalisé" avec "sirdataConsent" dans le champ "Nom de l'événement"
* Créer une première "variable de couche de données" : "sirdataExtraVendors"

<figure><img src="/files/na89BnIfkAI4VyRutzPX" alt=""><figcaption><p>variable de couche de données "sirdataExtraVendors"</p></figcaption></figure>

* Ajouter la variable "sirdataExtraVendors" à votre déclencheur en ajoutant "contient" et l'id ExtraVendor "|8|"
* Ajouter une deuxième "variable de couche de données" : "sirdataPurposes" :

<figure><img src="/files/i0kyHSy4hKNyn26jfOSY" alt=""><figcaption><p>variable de couche de données "sirdataPurposes"</p></figcaption></figure>

* Ajouter 3 événements personnalisés 'sirdataPurposes" pour les finalités |1|, |9| et |10| comme ceci:

<figure><img src="/files/pBhZ2taSEZd3EfCpjQG8" alt=""><figcaption></figcaption></figure>

* Pour finir, ajouter votre déclencheur "sirdataConsent Google Analytics" à votre balise GA4

<figure><img src="/files/l8xQHalujg1g9yq78y3L" alt=""><figcaption></figcaption></figure>

**b) Conditionnement de Google Ads**

* Créer un déclencheur "événement personnalisé" avec "sirdataConsent" dans le champ "Nom de l'événement"
* Créer une première "variable de couche de données" : "sirdataVendors" :

<figure><img src="/files/zzQU2UJ0CFvxIb5ylmvu" alt=""><figcaption><p>variable de couche de données "sirdataVendors"</p></figcaption></figure>

* Ajouter la variable "sirdataVendors" à votre déclencheur en ajoutant "contient" et l'id Vendor "|755|"
* Ajouter une deuxième "variable de couche de données" : "sirdataPurposes" :

<figure><img src="/files/zqgM1S05XvSIQtzCjhEO" alt=""><figcaption><p>variable de couche de données "sirdataPurposes"</p></figcaption></figure>

* Ajouter 3 événements personnalisés "sirdataPurposes" pour les finalités |1|, |3| et |4| comme ceci :

<figure><img src="/files/oL6Ci9YDDnfgVpIZwWkS" alt=""><figcaption><p>Conditionnement Google Ads</p></figcaption></figure>

Pour finir, ajouter votre déclencheur "sirdataConsent Google Advertising Products" à votre balise Google Ads :

<figure><img src="/files/wahZPqXwYNx0uXW0xTyt" alt=""><figcaption><p>Balise Google Ads</p></figcaption></figure>


# Vérification du Google Consent Mode V2 sur un site

Afin de vérifier si le Google Consent Mode V2 est bien actif, voici les étapes à suivre

* Aller sur votre site
* à l'aide de votre souris, cliquer sur "inspecter" :

<figure><img src="/files/UJy2Wr6uTqriWDnLc5Yb" alt=""><figcaption><p>"Inspecter"</p></figcaption></figure>

* Aller dans l'onglet "Network" :<br>

  <figure><img src="/files/XznnabsWIVvEMpBpyspg" alt=""><figcaption><p>"Network"</p></figcaption></figure>
* Taper "collect" dans la barre de rechercher et rafraichir la page (F5) :

<figure><img src="/files/UNNnarghnzGrzEZy3SCQ" alt=""><figcaption><p>"collect"</p></figcaption></figure>

* Cliquer sur l'appel GA4 puis cliquer sur "Payload" et vérifier le "Query String Parameters" "gcs" (Google Consent Status) est présent :

<figure><img src="/files/yjPmlQJB3hxtXrM1sdPv" alt=""><figcaption><p>"Appel GA4"</p></figcaption></figure>

Si le "gcs" est présent, alors le Google Consent Mode est actif.

* G100 : Aucun consentement n'a été accordé.
* G110 : Google Ads a le consentement, Google Analytics ne l'a pas.
* G101 : Google Analytics a le consentement, Google Ads ne l'a pas.
* G111 : Google Ads et Google Analytics ont tous deux le consentement.


# Google Tag Gateway

## Qu'est-ce que Google Tag Gateway ?

Google Tag Gateway (GTG) est une infrastructure Google qui achemine les requêtes des balises Google via les propres serveurs de Google, agissant comme un proxy. Lorsqu'un site web est inscrit au GTG, les requêtes vers les domaines Google (tels que `googletagmanager.com` ou `google-analytics.com`) sont interceptées et redirigées via l'infrastructure de Google.

GTG est conçu pour améliorer la fiabilité et les performances des balises, mais il introduit des considérations spécifiques pour les plateformes de gestion du consentement (CMP), car il peut entraîner le chargement des balises Google **avant que la CMP n'ait défini les valeurs de consentement par défaut**.

{% hint style="info" %}
Pour plus d'informations, consultez la documentation officielle de Google :

* [Présentation de Google Tag Gateway](https://developers.google.com/tag-platform/tag-manager/gateway?hl=fr)
* [Configurer Google Tag Gateway pour les annonceurs](https://developers.google.com/tag-platform/tag-manager/gateway/setup-guide?hl=fr)
  {% endhint %}

## Impact du GTG sur le consentement

Lorsque GTG est activé sur un site web, les balises Google peuvent se déclencher **avant que la commande de consentement par défaut de la CMP ne soit définie**. Cela signifie que les balises peuvent s'exécuter sans que les signaux de consentement appropriés ne soient en place, ce qui est détecté comme un problème de **« consentement tardif »** par la CMP Sirdata.

Cette situation se produit car GTG peut charger les balises Google au niveau de l'infrastructure — indépendamment de l'ordre d'exécution des scripts de la page — contournant ainsi la séquence d'initialisation du consentement de la CMP.

En particulier, la méthode d'**injection CDN en un clic** utilisée par Google pour activer le GTG via les comptes Google Ads empêche souvent le client de contrôler l'ordre de chargement des scripts. Étant donné que le GTG est injecté au niveau CDN/infrastructure sans aucune modification de code sur le site web, le client n'a aucun moyen de garantir que les consentements par défaut sont définis avant le déclenchement des balises Google.

{% hint style="warning" %}
Le consentement tardif causé par GTG peut entraîner le déclenchement de balises Google sans signaux de consentement appropriés. Cela peut compromettre la conformité avec les réglementations en matière de confidentialité et l'efficacité du Google Consent Mode sur votre site.
{% endhint %}

{% hint style="info" %}
Pour plus d'informations sur le fonctionnement du Google Consent Mode et la différence entre l'implémentation basique et avancée (U+C), consultez :

* [Présentation du Consent Mode](https://developers.google.com/tag-platform/security/concepts/consent-mode?hl=fr) — Google for Developers
* [Configurer le Consent Mode sur les sites web](https://developers.google.com/tag-platform/security/guides/consent?hl=fr) — Google for Developers
* [À propos du Consent Mode](https://support.google.com/google-ads/answer/10000067?hl=fr) — Aide Google Ads
* [Configurer le Consent Mode](https://support.google.com/google-ads/answer/14009635?hl=fr) — Aide Google Ads
  {% endhint %}

## Fonctionnement de GTG

GTG fonctionne en interceptant les requêtes vers les domaines Google et en les acheminant via les serveurs de Google :

1. **Interception des requêtes** — GTG intercepte les requêtes HTTP envoyées aux domaines de balises Google (par ex. `googletagmanager.com`, `google-analytics.com`, `googlesyndication.com`).
2. **Routage par proxy** — Ces requêtes sont acheminées via l'infrastructure de Google, qui peut servir les scripts de balises directement depuis le réseau edge de Google.
3. **Chargement anticipé des balises** — Étant donné que GTG opère au niveau DNS/infrastructure, les balises Google peuvent être chargées et exécutées avant que le JavaScript de la page n'ait pu initialiser la CMP et définir les consentements par défaut.

## Méthodes d'implémentation

GTG peut être activé via différentes méthodes :

### Compte Google Ads — Injection CDN en un clic (non recommandé)

Le GTG est fréquemment activé via le **compte Google Ads** par une **injection CDN en un clic** — souvent à l'insu du propriétaire du site web. Lorsqu'une campagne Google Ads est liée à un site web, Google peut inscrire automatiquement le site au GTG au niveau CDN/infrastructure en un seul clic. Cette méthode d'**injection CDN en un clic** est la **cause la plus fréquente des signaux de consentement tardif** signalés par la CMP Sirdata, car :

* L'inscription se fait au niveau du compte Google Ads via injection CDN, et non sur le site web lui-même
* L'injection CDN en un clic empêche le client de contrôler l'ordre de chargement des scripts
* Les propriétaires du site peuvent ne pas savoir que le GTG a été activé
* Le GTG charge les balises Google avant que la CMP ne puisse définir les consentements par défaut
* La CMP n'a aucun contrôle sur l'ordre de chargement des balises imposé par le GTG

{% hint style="warning" %}
Si le GTG a été activé via votre compte Google Ads (injection CDN en un clic), il est fortement recommandé de **le désactiver à ce niveau** et de **le réactiver via Google Tag Manager** en utilisant le template de la CMP ABConsent. Cela vous donne un contrôle total sur l'ordre de chargement des balises et empêche les problèmes de consentement tardif.
{% endhint %}

### Inscription au niveau DNS (CNAME)

Une autre méthode consiste à configurer des enregistrements CNAME DNS qui pointent les domaines de balises Google vers les points de terminaison GTG. Par exemple :

* Un enregistrement CNAME pour `gtm.example.com` pointant vers un point de terminaison GTG
* Un enregistrement CNAME pour `analytics.example.com` pointant vers un point de terminaison GTG

Cette méthode opère au niveau DNS et est entièrement transparente pour le code du site web.

### Google Tag Manager (recommandé)

Le GTG peut être activé via la configuration de **Google Tag Manager**. C'est la **méthode recommandée** car elle offre un contrôle total sur l'ordre de chargement des balises et garantit que les consentements par défaut de la CMP sont définis avant le déclenchement de toute balise Google.

Lorsque vous utilisez GTM avec le **template CMP ABConsent** de la galerie de templates communautaires GTM :

1. La balise CMP est chargée sur le déclencheur **« Consent Initialization »** (`gtm.init_consent`) — le déclencheur le plus précoce dans GTM
2. Les consentements par défaut sont définis **avant** que toute autre balise ne puisse s'exécuter
3. L'inscription au GTG est gérée dans GTM, ce qui vous donne visibilité et contrôle
4. Aucun code supplémentaire n'est requis au-delà de la configuration du template CMP

{% hint style="success" %}
**Configuration recommandée :** Activez le GTG via Google Tag Manager et utilisez le **template CMP ABConsent** de la galerie de templates communautaires GTM. Cela garantit que les consentements par défaut sont définis avant le déclenchement des balises chargées par le GTG, éliminant ainsi les problèmes de consentement tardif.
{% endhint %}

### Configuration manuelle du GTG (contrôlée par le client)

Le GTG peut également être configuré manuellement par le client, généralement via [Google Cloud Load Balancer](https://developers.google.com/tag-platform/tag-manager/gateway/setup-guide?hl=fr). Lorsqu'il est configuré manuellement, le client conserve le **contrôle total sur l'ordre d'importation des scripts**, garantissant que les consentements par défaut de la CMP sont définis avant le déclenchement de toute balise Google.

Cette méthode est recommandée pour les utilisateurs avancés qui souhaitent conserver le GTG activé tout en maintenant un contrôle strict sur la séquence de chargement des balises.

## Comment vérifier l'inscription à GTG

Pour déterminer si un site web est inscrit à Google Tag Gateway, vous pouvez utiliser les méthodes suivantes :

### Vérifier dans Google Tag Manager

Dans Google Tag Manager :

1. Accédez à l'onglet **Administrateur**
2. Cliquez sur **Google Tag Gateway**
3. Vérifiez le statut d'inscription et la configuration

### Vérifier dans Google Ads

Dans Google Ads :

1. Accédez à **Outils > Data Manager**
2. Dans l'onglet **Connected Products**, localisez la section **Google Tag Section**
3. Cliquez sur **Manage** pour le tag concerné
4. Dans la section ouverte, sélectionnez l'onglet **Admin**
5. Cliquez sur **Google Tag Gateway**
6. Vérifiez le statut d'inscription et la configuration

### Vérifier dans Google Analytics

Dans Google Analytics :

1. Accédez à **Administrateur > Data Streams**
2. Choisissez un flux et sélectionnez **Configure Tag Settings**
3. Allez dans l'onglet **Admin**
4. Cliquez sur **Google Tag Gateway**
5. Vérifiez le statut d'inscription et la configuration

### Utiliser les DevTools du navigateur

Ouvrez les outils de développement de votre navigateur (F12) et inspectez les requêtes réseau :

1. Chargez la page et ouvrez l'onglet **Réseau**.
2. Filtrez les requêtes par domaines Google (par ex. `googletagmanager.com`).
3. Vérifiez si les requêtes sont acheminées via les points de terminaison GTG — recherchez les requêtes passant par votre sous-domaine (par ex. `gtm.example.com`) plutôt que directement vers `googletagmanager.com`.

### Vérifier via le diagnostic de la CMP Sirdata

La CMP Sirdata intègre une détection native de l'inscription au GTG. Lorsqu'un signal de consentement tardif est détecté, l'outil de diagnostic indique si le GTG est en cause et fournit un lien direct vers cette documentation.

{% hint style="info" %}
Pour des instructions détaillées sur la vérification de l'inscription au GTG, consultez le [guide de configuration de Google Tag Gateway](https://developers.google.com/tag-platform/tag-manager/gateway/setup-guide?hl=fr).
{% endhint %}

## Détection du consentement tardif

Le consentement tardif se produit lorsque la **commande de consentement par défaut et/ou le stub TCF se chargent après le déclenchement des balises Google**. Il s'agit d'un problème de conformité critique car cela signifie que les balises Google peuvent s'exécuter sans signaux de consentement appropriés.

La CMP Sirdata offre une **détection proactive du consentement tardif** :

* **Mode standard** — Les avertissements de consentement tardif sont visibles dans l'interface de diagnostic de la CMP
* **Mode debug** — Des informations de diagnostic détaillées sont disponibles, incluant les balises spécifiques qui se sont déclenchées avant la définition des consentements par défaut et la détection éventuelle de l'inscription au GTG

{% hint style="warning" %}
Le consentement tardif est particulièrement probable lorsque le GTG est activé via l'injection CDN en un clic (par ex., via un compte Google Ads), car le client ne peut pas contrôler l'ordre de chargement des scripts dans cette configuration.
{% endhint %}

Pour les étapes de dépannage détaillées, consultez la page [Signal `default` tardif](/standards-de-transmission-du-consentement/google-consent-mode/corriger-les-erreurs-dimplementation/signal-default-tardif).

## Résoudre le consentement tardif lorsque le GTG est inscrit

Si un **signal de consentement tardif est détecté** (par le mode debug et/ou l'outil de diagnostic) et que **l'inscription au GTG est vérifiée**, les solutions suivantes sont disponibles, classées par ordre de recommandation :

### 1. Adopter le U+C — Consent Mode Avancé (recommandé)

Le **U+C (Consent Mode Avancé)** est le **mécanisme recommandé pour les balises activées par le GTG** car il est entièrement compatible avec les configurations GTG manuelles où l'ordre d'importation des scripts est contrôlé par le client.

Avec le U+C (Consent Mode Avancé) :

* Les balises Google se chargent immédiatement avec des signaux de consentement **denied par défaut**
* Lorsque l'utilisateur accorde son consentement, la CMP envoie une commande **update** qui active la collecte de données
* La modélisation des conversions est activée pour les utilisateurs qui ne consentent pas, récupérant jusqu'à 65 % des données comportementales perdues
* Cette approche est compatible avec le GTG, même lorsque le GTG est configuré manuellement, car les balises se déclenchent avec des valeurs par défaut denied et ne commencent à collecter des données qu'après la mise à jour du consentement par la CMP

{% hint style="success" %}
**Le U+C (Consent Mode Avancé) est le mécanisme recommandé pour les balises activées par le GTG** car il est compatible avec le GTG manuel. Il garantit que même si les balises Google se chargent avant la commande de mise à jour de la CMP, aucune donnée n'est collectée avant que l'utilisateur n'accorde son consentement.
{% endhint %}

Pour activer le U+C (Consent Mode Avancé) avec la CMP Sirdata :

1. Dans la configuration de la CMP Sirdata, activez le **Consent Mode Avancé (U+C)**
2. La CMP définira les signaux de consentement denied par défaut avant le déclenchement de toute balise
3. Lors de l'interaction de l'utilisateur, la CMP enverra la commande de mise à jour du consentement

Pour plus d'informations, consultez :

* [Présentation du Consent Mode — Basique vs. Avancé](https://developers.google.com/tag-platform/security/concepts/consent-mode?hl=fr) — Google for Developers
* [Configurer le Consent Mode sur les sites web](https://developers.google.com/tag-platform/security/guides/consent?hl=fr) — Google for Developers

### 2. Activer les Data Transmission Controls et les Global Consent Defaults

Lorsque vous utilisez le U+C (Consent Mode Avancé), vous devez également configurer les **Data Transmission Controls** et les **Global Consent Defaults** selon vos besoins :

* **Data Transmission Controls** — Vous permettent de contrôler la manière dont les données sont transmises à Google, offrant des garanties de confidentialité supplémentaires au-delà du Consent Mode. Les Data Transmission Controls fonctionnent séparément des autres paramètres du consent mode, mais nécessitent que le Consent Mode soit activé au préalable.
* **Global Consent Defaults** — Vous permettent de définir des états de consentement par défaut applicables globalement à toutes vos configurations Google Ads et Analytics, garantissant un comportement de consentement cohérent indépendamment des règles d'affichage de la bannière par région.

{% hint style="info" %}
Les Data Transmission Controls et les Global Consent Defaults sont particulièrement importants lorsque :

* Le GTG est activé et votre bannière ne s'affiche **pas** dans certaines régions (par ex., hors EEA/UK/Suisse), entraînant un consentement **automatiquement accordé** par défaut
* Vous devez garantir que les consentements par défaut sont appliqués de manière cohérente dans tous les produits et régions Google

Pour plus d'informations, consultez :

* [Mises à jour des contrôles de données Google Analytics](https://support.google.com/analytics/answer/17016975?hl=fr) — Aide Analytics
* [À propos du Consent Mode](https://support.google.com/google-ads/answer/10000067?hl=fr) — Aide Google Ads
* [Configurer le Consent Mode](https://support.google.com/google-ads/answer/14009635?hl=fr) — Aide Google Ads
  {% endhint %}

### 3. Migrer vers un conteneur GTM et déployer GTM via GTG

Si vous n'utilisez pas encore Google Tag Manager, la migration de toutes les balises Google dans un **conteneur GTM** vous donne un contrôle total sur l'ordre de déclenchement des balises :

1. Créez un conteneur GTM et ajoutez le **template CMP ABConsent** depuis la galerie de templates communautaires
2. Configurez le template CMP pour utiliser le déclencheur **« Consent Initialization »** (`gtm.init_consent`)
3. Déployez GTM via GTG, en garantissant que la CMP s'initialise avant toute autre balise
4. Cette approche élimine le consentement tardif en garantissant la séquence d'initialisation du consentement

Pour des instructions étape par étape, consultez le [guide de configuration de Google Tag Gateway](https://developers.google.com/tag-platform/tag-manager/gateway/setup-guide?hl=fr).

### 4. Configurer le GTG manuellement avec un ordre d'importation contrôlé

Si vous préférez conserver le GTG activé mais avez besoin de contrôler la séquence de chargement des scripts, vous pouvez configurer le **GTG manuel** où l'ordre d'importation des scripts est contrôlé par vous :

1. Désactivez le GTG via votre compte Google Ads
2. Configurez le GTG manuellement via [Google Cloud Load Balancer](https://developers.google.com/tag-platform/tag-manager/gateway/setup-guide?hl=fr)
3. Assurez-vous que la commande de consentement par défaut de la CMP se charge **avant** tout script de balise Google dans la section `<head>` de votre page
4. Cela vous donne une visibilité et un contrôle total sur le moment où les balises Google se déclenchent par rapport à la CMP

{% hint style="success" %}
Lorsque le GTG est configuré manuellement avec un ordre d'importation de scripts contrôlé, le **U+C (Consent Mode Avancé)** reste le mécanisme recommandé, car il est entièrement compatible avec cette configuration et offre des avantages supplémentaires de modélisation des conversions.
{% endhint %}

## Autres options disponibles en cas de consentement tardif

Si le GTG cause des problèmes de consentement tardif mais que vous ne pouvez pas adopter immédiatement les solutions ci-dessus, les mesures d'atténuation suivantes sont disponibles :

### S'assurer que le stub de la CMP se charge avant toute balise Google

Le script de la CMP doit être le **premier script** chargé dans la section `<head>` de votre page, avant tout script de balise Google. Cela garantit que la commande de consentement par défaut est définie avant que les balises déclenchées par GTG ne puissent s'exécuter.

### Utiliser l'attribut `data-cmp-src` sur les scripts gtag

Si vous utilisez gtag directement (sans Google Tag Manager), vous devez conditionner le chargement du script gtag en utilisant l'attribut `data-cmp-src` :

```html
<script data-cmp-src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
```

Cela garantit que le script gtag ne se charge qu'après que la CMP a obtenu le consentement de l'utilisateur.

### Dans Google Tag Manager, s'assurer de la bonne configuration des déclencheurs

Si vous utilisez Google Tag Manager :

* Assurez-vous que **seule la balise de votre CMP** utilise le déclencheur **« Initialisation du consentement »** (`gtm.init_consent`)
* Ne **réutilisez pas** ce déclencheur dans d'autres balises, car cela peut créer des conflits et retarder l'initialisation du Consent Mode

### Vérifier le diagnostic de la CMP Sirdata pour la détection du consentement tardif

La CMP Sirdata intègre une détection native du consentement tardif. Si GTG cause un consentement tardif sur votre site, le diagnostic de la CMP signalera une **erreur de consentement tardif** avec un lien vers la documentation de dépannage.

{% hint style="info" %}
La CMP Sirdata offre une détection proactive du consentement tardif, avec des informations de diagnostic détaillées visibles à la fois dans l'interface standard et en mode debug.
{% endhint %}

Pour les étapes de dépannage détaillées, consultez la page [Signal `default` tardif](/standards-de-transmission-du-consentement/google-consent-mode/corriger-les-erreurs-dimplementation/signal-default-tardif).

## Vous n'utilisez pas Google Tag Gateway ?

Si vous voyez un avertissement de consentement tardif mais n'êtes **pas inscrit à Google Tag Gateway**, le problème peut avoir une cause différente :

1. **Chargement tardif de la CMP** — Le script de la CMP n'est pas chargé suffisamment tôt dans la page, permettant aux balises Google de se déclencher avant que les valeurs de consentement par défaut ne soient définies.
2. **Chargement anticipé des balises Google** — Les balises Google (gtag.js ou GTM) sont chargées avant ou indépendamment de l'initialisation du consentement par la CMP.

Dans ce cas, consultez la page de dépannage dédiée aux signaux default tardifs :

👉 [Signal `default` tardif — Corriger les erreurs d'implémentation](/standards-de-transmission-du-consentement/google-consent-mode/corriger-les-erreurs-dimplementation/signal-default-tardif)

{% hint style="info" %}
Pour la documentation en français, consultez : [Signal `default` tardif](https://cmp.docs.sirdata.net/standards-de-transmission-du-consentement/google-consent-mode/corriger-les-erreurs-dimplementation/signal-default-tardif)
{% endhint %}

## Une meilleure alternative : GTM Server-Side par Sirdata

Alors que GTG opère côté client et peut interférer avec l'initialisation du consentement, **GTM Server-Side** offre une approche plus robuste et conforme à la vie privée pour la gestion des balises.

### Pourquoi choisir GTM Server-Side plutôt que GTG ?

|                                   | Google Tag Gateway (GTG)                                         | GTM Server-Side par Sirdata                                                                    |
| --------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| **Architecture**                  | Proxy côté client (niveau DNS)                                   | Conteneur côté serveur                                                                         |
| **Contrôle du consentement**      | Limité — les balises peuvent se déclencher avant le consentement | Contrôle total — les balises ne se déclenchent qu'après validation du consentement             |
| **Risque de consentement tardif** | Élevé — GTG peut charger les balises avant la CMP                | Aucun — le consentement est appliqué côté serveur                                              |
| **Couverture des partenaires**    | Balises Google uniquement                                        | **Tous les partenaires** : Google, Meta (CAPI), TikTok (Events API), LinkedIn, Pinterest, etc. |
| **Propriété des données**         | Données acheminées via l'infrastructure de Google                | Données acheminées via **votre propre domaine**                                                |
| **Contournement des adblockers**  | Non                                                              | Oui — les requêtes côté serveur contournent les bloqueurs de publicité                         |
| **Hébergement des données**       | Contrôlé par Google                                              | **Vous contrôlez le lieu d'hébergement** (UE disponible)                                       |

### Avantages clés de GTM Server-Side par Sirdata

1. **Un meilleur contrôle de vos données** — Contrairement à GTG, où les données transitent par l'infrastructure de Google, GTM Server-Side achemine les données via votre propre domaine, vous donnant une pleine propriété et un contrôle total.
2. **Architecture consentement d'abord** — Les balises ne se déclenchent qu'après que la CMP a validé le consentement. Plus de problèmes de consentement tardif causés par le chargement côté client.
3. **Support multi-partenaires** — Pas limité à Google. Des intégrations côté serveur sont disponibles pour **Meta Conversions API**, **TikTok Events API**, **LinkedIn**, **Pinterest**, et bien d'autres.
4. **Contourner les adblockers** — Les requêtes côté serveur sont envoyées depuis votre propre domaine, les rendant invisibles pour les bloqueurs de publicité qui ciblent les domaines de suivi connus.
5. **Hébergement dans l'UE** — Sirdata propose un hébergement dans l'Union Européenne, garantissant la conformité avec les exigences du RGPD en matière de transfert de données.
6. **Intégration CMP transparente** — Le GTM Server-Side de Sirdata est entièrement intégré à la CMP Sirdata, offrant une expérience unifiée de gestion du consentement et des balises.

{% hint style="success" %}
**GTM Server-Side par Sirdata** élimine le risque de consentement tardif introduit par GTG tout en offrant des avantages pour tous vos partenaires publicitaires — et pas seulement Google.

👉 Découvrez [GTM Server-Side par Sirdata](https://sgtm.sirdata.io) et reprenez le contrôle de vos données.
{% endhint %}

{% hint style="info" %}
Pour une documentation détaillée sur la configuration et l'utilisation de GTM Server-Side, consultez la [documentation Sirdata Server-Side](https://sgtm.sirdata.io).
{% endhint %}


# Corriger les erreurs d'implémentation

Soucieuse de votre sécurité juridique et contractuelle, Sirdata procède à une détection automatique des problèmes d'implémentation du Google Consent Mode.

Nous vous les indiquons via des codes erreur, par email et dans votre compte client Abconsent.com.

<figure><img src="/files/T5M4tzNJrNF54pMfxAKk" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/y7ReMje1v22ygGuxalY5" alt=""><figcaption></figcaption></figure>

Vous trouverez dans cette section les explications et instructions nécessaires à leur résolution.


# Google Consent Mode inactif

Activer le Google Consent Mode peut permettre de mieux articuler les choix exprimés par les utilisateurs avec le comportement des balises Google (Google Analytics, Google Ads, etc.). Ce mécanisme vise à adapter dynamiquement le déclenchement des tags en fonction des signaux de consentement.

### 1. Mieux exploiter les données disponibles

Le Google Consent Mode peut permettre à Google de moduler la manière dont ses balises fonctionnent selon le consentement :

* en cas d’acceptation, les balises peuvent se déclencher normalement ;
* en cas de refus, elles peuvent se limiter à envoyer des signaux partiels ou anonymisés.

Cela peut aider à réduire la perte de données observée dans les outils de mesure, tout en permettant l’activation de mécanismes de modélisation statistique.

### 2. Préserver la performance des campagnes marketing

En s’appuyant sur les signaux fournis par le Consent Mode, Google peut estimer certaines conversions lorsqu’aucune donnée directe n’est disponible. Cela peut contribuer à :

* limiter les écarts dans les rapports Google Ads et GA4 ;
* améliorer l’attribution des conversions ;
* conserver un certain niveau d’optimisation des campagnes, même en cas de refus de consentement.

### 3. Améliorer l’efficacité technique

Le Consent Mode peut aussi aider à mieux contrôler le déclenchement des balises. Cela permet notamment de :

* éviter les appels réseau non nécessaires ;
* réduire la complexité de configuration dans Google Tag Manager ;
* faciliter la gestion du tracking sur les sites multi-domaine ou multi-appareils.

Cette approche peut aussi s’inscrire dans une logique de performance et de sobriété numérique.

### 4. Fluidifier l’expérience utilisateur

En centralisant la logique de déclenchement sur la base des choix exprimés, le Consent Mode peut contribuer à une expérience plus fluide et cohérente :

* les balises s’activent ou s’ajustent automatiquement selon le statut de consentement ;
* l’utilisateur ne rencontre plus de comportements inattendus liés à des refus mal pris en compte ;
* les choix sont pris en compte immédiatement, sans avoir à recharger la page.

***

### Comment activer le Google Consent Mode

Pour activer le Google Consent Mode, deux options s'offrent à vous :

### 1. Vous n'utilisez pas le template Google Tag Manager

Rendez-vous dans la section "Editer les modules complémentaires" de la configuration de votre CMP, et activez l'addon "Google Consent Mode":

<figure><img src="/files/xy0xVANTmuS5ADEn0VRX" alt=""><figcaption></figcaption></figure>

### 2. Vous utilisez le template Google Tag Manager

Dans votre compte Google Tag Manager, vérifiez tout d'abord que votre template est bien à jour, ou effectuez la mise à jour :

<figure><img src="/files/XUAQIluwMtsREkAsTqOC" alt=""><figcaption></figcaption></figure>

Dans la section "Balises", éditez la balise ABconsent (Sirdata CMP) pour cocher la case "Activate Google Consent Mode" et ajoutez une ligne de signaux par déafaut ("denied") :

<figure><img src="/files/ejUO1l2NKNm0Dslwm8qi" alt=""><figcaption></figcaption></figure>

## Why Activate Google Consent Mode

Activating Google Consent Mode can help better align users’ expressed choices with the behavior of Google tags (Google Analytics, Google Ads, etc.). This mechanism aims to dynamically adjust tag firing based on consent signals.

### 1. Making Better Use of Available Data

Google Consent Mode can allow Google to modulate how its tags operate depending on the consent status:

* If consent is granted, tags may function as usual.
* If consent is denied, they may limit themselves to sending partial or anonymized signals.

This may help reduce data loss in measurement tools, while enabling the use of statistical modeling mechanisms.

### 2. Maintaining Marketing Performance

By relying on the signals provided by Consent Mode, Google may estimate certain conversions even when no direct data is available. This could contribute to:

* limiting discrepancies in Google Ads and GA4 reports;
* improving conversion attribution;
* maintaining a certain level of campaign optimization, even in the absence of user consent.

### 3. Improving Technical Efficiency

Consent Mode can also help better control when and how tags are triggered. This may help:

* avoid unnecessary network calls;
* reduce configuration complexity in Google Tag Manager;
* simplify tracking management across multi-domain or cross-device setups.

This approach may also support goals related to performance and digital efficiency.

### 4. Enhancing the User Experience

By centralizing tag behavior based on user choices, Consent Mode can help create a smoother and more consistent experience:

* tags adjust automatically in real time according to the consent status;
* users are less likely to encounter unexpected behavior due to unhandled refusals;
* consent choices are applied immediately, without requiring a page reload.

***

### How to Activate Google Consent Mode

There are two possible activation methods, depending on your setup:

#### 1. You are not using the Google Tag Manager template

Go to the "Update add-ons" section in your CMP configuration, and enable the **Google Consent Mode** add-on:

<figure><img src="/files/4lxOE3E9LCmcPG26WeEt" alt=""><figcaption></figcaption></figure>

#### 2. You are using the Google Tag Manager template

In your **Google Tag Manager** account, first ensure that your template is up to date. Update it if necessary.

<figure><img src="/files/XFmV1dcQQZezWvoBjaM3" alt=""><figcaption></figcaption></figure>

Then:

* In the “Tags” section, edit the **ABconsent (Sirdata CMP)** tag
* Check the box labeled **“Activate Google Consent Mode”**
* Add a line of default consent signals (e.g., `"denied"`)

<figure><img src="/files/ejUO1l2NKNm0Dslwm8qi" alt=""><figcaption></figcaption></figure>


# Signal \`default\` absent

#### Description

Le Google Consent Mode est bien activé, mais **le signal `default` est manquant**. Cela signifie que le site ne communique pas à Google les paramètres de consentement à appliquer par défaut avant toute interaction de l’utilisateur. En l’absence de ce signal, les balises Google ne peuvent pas adapter leur comportement, ce qui **désactive de fait les mécanismes du Consent Mode**.

#### Causes possibles

1. Le script “stub” de la CMP est :
   * **non présent** sur la page ;
   * mal intégré (chargement en `async`, `defer`, ou retardé) ;
   * **bloqué ou modifié** par un système d’optimisation (ex. : **Rocket Loader** de Cloudflare, cache CDN, etc.).
2. Si le Consent Mode est initialisé via **Google Tag Manager** :
   * la case **"Activer le Google Consent Mode"** n’est pas cochée dans la balise de la CMP ;
   * aucun paramètre n’est défini dans la section **"Paramètres de consentement par défaut"**.

#### Que faire

**Si vous n'utilisez pas Google Tag Manager :**

* Vérifiez que le script "stub" est **chargé en premier**, en haut de la balise `<head>` ;
* Supprimez les attributs `async` et `defer` du script ;
* Assurez-vous que le script n’est pas modifié ou ralenti par un système tiers (CDN, accélérateur, etc.).

<figure><img src="/files/g2G0LM2vyxxLewujukAr" alt=""><figcaption></figcaption></figure>

**Si vous utilisez Google Tag Manager :**

Dans votre compte Google Tag Manager, vérifiez tout d'abord que votre template est bien à jour, ou effectuez la mise à jour :

<figure><img src="/files/XUAQIluwMtsREkAsTqOC" alt=""><figcaption></figcaption></figure>

Dans la section "Balises", éditez la balise ABconsent (Sirdata CMP) pour cocher la case "Activate Google Consent Mode" et ajoutez une ligne de signaux par déafaut ("denied") :

<figure><img src="/files/ejUO1l2NKNm0Dslwm8qi" alt=""><figcaption></figcaption></figure>


# Signal \`default\` tardif

**Description**

Le Google Consent Mode est bien activé, mais le signal `default` est déclenché **trop tardivement**, c’est-à-dire **après le chargement d'autres balises Google**. Dans ce cas, les balises peuvent se déclencher avant que le statut de consentement ne soit pris en compte, ce qui **compromet l’efficacité du Consent Mode**.

#### Causes possibles

1. Un script Google est chargé avant la CMP
2. Le script `gtag` est intégré de manière **asynchrone ou différée**, ou retardé par un système d’optimisation :
   * attributs `async` ou `defer` présents sur le `<script>` principal ;
   * cache CDN ou systèmes comme **Rocket Loader** (Cloudflare), qui modifient l’ordre ou la nature du chargement ;
   * chargement conditionnel ou dynamique du script gtag.
3. Si le Consent Mode est initialisé via **Google Tag Manager** :
   * le **déclencheur** utilisé n’est pas `"Initialisation du consentement"` (`gtm.init_consent`) ;
   * une **autre balise** utilise aussi ce déclencheur, ce qui crée un conflit et peut retarder l’initialisation du Consent Mode.
4. Si un gtag est utilisé en l'absence d'un GTM

#### Que faire

* Si vous n'utilisez pas Google Tag Manager : Vérifiez que le script de la CMP est bien le premier script chargé sur votre page, en haut de la section `<head>`
* Si vous n'utilisez pas Google Tag Manager : Vérifiez que le script `gtag` est bien chargé **de manière synchrone** (sans `async`, ni `defer`), **avant tout autre script Google**.

<figure><img src="/files/71WaGskLg8CbtyxoVlte" alt=""><figcaption></figcaption></figure>

* Si vous utilisez Google Tag Manager :
  * assurez-vous que **seule la balise de votre CMP** utilise le déclencheur `"Initialisation du consentement"` ;
  * ne réutilisez jamais ce déclencheur dans d'autres balises.

<figure><img src="/files/dIWSRjupmC4KOgeBCeyR" alt=""><figcaption></figcaption></figure>

4. Si vous utilisez un gtag en l'absence d'un Google Tag manager:

* Vous devez conditionner le script gtag avec "data-cmp-src":

<figure><img src="/files/T9OaQrUWRpYVVDt4Xitg" alt=""><figcaption></figcaption></figure>


# Signal \`default\` (\`analytics\_storage\`) incorrect

#### escription

Le Google Consent Mode est bien actif, mais le signal `default` indique un statut incorrect pour `analytics_storage`. Ce paramètre contrôle le comportement des cookies analytiques avant toute interaction de l’utilisateur. Si sa valeur est différente de `"denied"`, Google peut activer des fonctionnalités de mesure **avant le recueil explicite du consentement**, ce qui **contredit le fonctionnement attendu du Consent Mode**.

#### Causes possibles

1. Si votre CMP **n’est pas intégrée via Google Tag Manager** :
   * Une **commande gtag** de type :

     ```js
     gtag('consent', 'default', {
       analytics_storage: 'granted'
     });
     ```

     est présente dans le code, en dur, ou injectée par un autre script.
2. Si votre CMP **est chargée via Google Tag Manager** :
   * Le champ `analytics_storage` dans les **paramètres de consentement par défaut** n’est pas défini à `"denied"` ;
   * Un autre tag dans GTM écrase cette valeur via une autre commande `gtag`.

#### Que faire

**Si vous n’utilisez pas Google Tag Manager :**

* **Recherchez** dans votre code toute commande `gtag('consent', 'default', {...})` ;
* Supprimez toute ligne où `analytics_storage` est défini à `"granted"` ou à une valeur autre que `"denied"` et laissez la CMP gérer les signaux

**Si vous utilisez Google Tag Manager :**

* Ouvrez la balise CMP (par ex. : **ABconsent (Sirdata CMP)**) ;
* Vérifiez dans la section **"Default Consent Mode Settings"** que le champ `Analytics` est bien défini ainsi :

<figure><img src="/files/r4nY17WhS0OgXzWzsRW3" alt=""><figcaption></figcaption></figure>


# Signal \`default\` (\`ad\_storage\`) incorrect

#### escription

Le Google Consent Mode est bien actif, mais le signal `default` indique un statut incorrect pour `ad_storage`. Ce paramètre contrôle le comportement des cookies publicitaires avant toute interaction de l’utilisateur. Si sa valeur est différente de `"denied"`, Google peut activer des fonctionnalités de mesure **avant le recueil explicite du consentement**, ce qui **contredit le fonctionnement attendu du Consent Mode**.

#### Causes possibles

1. Si votre CMP **n’est pas intégrée via Google Tag Manager** :
   * Une **commande gtag** de type :

     ```js
     gtag('consent', 'default', {
       ad_storage: 'granted'
     });
     ```

     est présente dans le code, en dur, ou injectée par un autre script.
2. Si votre CMP **est chargée via Google Tag Manager** :
   * Le champ `ad_storage`dans les **paramètres de consentement par défaut** n’est pas défini à `"denied"` ;
   * Un autre tag dans GTM écrase cette valeur via une autre commande `gtag`.

#### Que faire

**Si vous n’utilisez pas Google Tag Manager :**

* **Recherchez** dans votre code toute commande `gtag('consent', 'default', {...})` ;
* Supprimez toute ligne où `ad_storage` est défini à `"granted"` ou à une valeur autre que `"denied"` et laissez la CMP gérer les signaux

**Si vous utilisez Google Tag Manager :**

* Ouvrez la balise CMP (par ex. : **ABconsent (Sirdata CMP)**) ;
* Vérifiez dans la section **"Default Consent Mode Settings"** que le champ `Advertising` est bien défini ainsi :

<figure><img src="/files/hTdzxIVy1M1XIUA2xEHc" alt=""><figcaption></figcaption></figure>


# Signal \`default\` (\`ad\_personalization\`) incorrect

#### escription

Le Google Consent Mode est bien actif, mais le signal `default` indique un statut incorrect pour `ad_personalization`. Ce paramètre contrôle les traitements de données par les services de Google à des fins publicitaires. Si sa valeur est différente de `"denied"`, Google peut activer des fonctionnalités de mesure **avant le recueil explicite du consentement**, ce qui **contredit le fonctionnement attendu du Consent Mode**.

#### Causes possibles

1. Si votre CMP **n’est pas intégrée via Google Tag Manager** :
   * Une **commande gtag** de type :

     ```js
     gtag('consent', 'default', {
       ad_personalization: 'granted'
     });
     ```

     est présente dans le code, en dur, ou injectée par un autre script.
2. Si votre CMP **est chargée via Google Tag Manager** :
   * Le champ `ad_personalization` dans les **paramètres de consentement par défaut** n’est pas défini à `"denied"` ;
   * Un autre tag dans GTM écrase cette valeur via une autre commande `gtag`.

#### Que faire

**Si vous n’utilisez pas Google Tag Manager :**

* **Recherchez** dans votre code toute commande `gtag('consent', 'default', {...})` ;
* Supprimez toute ligne où `ad_personalization` est défini à `"granted"` ou à une valeur autre que `"denied"` et laissez la CMP gérer les signaux

**Si vous utilisez Google Tag Manager :**

* Ouvrez la balise CMP (par ex. : **ABconsent (Sirdata CMP)**) ;
* Vérifiez dans la section **"Default Consent Mode Settings"** que le champ `Advertising` est bien défini ainsi :

<figure><img src="/files/hTdzxIVy1M1XIUA2xEHc" alt=""><figcaption></figcaption></figure>


# Signal \`default\` (\`ad\_user\_data\`) incorrect

#### escription

Le Google Consent Mode est bien actif, mais le signal `default` indique un statut incorrect pour `ad_user_data`. Ce paramètre contrôle les traitements de données utilisateurs à des fins publicitaires. Si sa valeur est différente de `"denied"`, Google peut activer des fonctionnalités de mesure **avant le recueil explicite du consentement**, ce qui **contredit le fonctionnement attendu du Consent Mode**.

#### Causes possibles

1. Si votre CMP **n’est pas intégrée via Google Tag Manager** :
   * Une **commande gtag** de type :

     ```js
     gtag('consent', 'default', {
       ad_user_data: 'granted'
     });
     ```

     est présente dans le code, en dur, ou injectée par un autre script.
2. Si votre CMP **est chargée via Google Tag Manager** :
   * Le champ `ad_user_data` dans les **paramètres de consentement par défaut** n’est pas défini à `"denied"` ;
   * Un autre tag dans GTM écrase cette valeur via une autre commande `gtag`.

#### Que faire

**Si vous n’utilisez pas Google Tag Manager :**

* **Recherchez** dans votre code toute commande `gtag('consent', 'default', {...})` ;
* Supprimez toute ligne où `ad_user_data` est défini à `"granted"` ou à une valeur autre que `"denied"` et laissez la CMP gérer les signaux

**Si vous utilisez Google Tag Manager :**

* Ouvrez la balise CMP (par ex. : **ABconsent (Sirdata CMP)**) ;
* Vérifiez dans la section **"Default Consent Mode Settings"** que le champ `Advertising` est bien défini ainsi :

<figure><img src="/files/hTdzxIVy1M1XIUA2xEHc" alt=""><figcaption></figcaption></figure>


# Signal \`update\` tardif

#### Description

Le signal `update` du Google Consent Mode est envoyé **trop tard**, c’est-à-dire **après le délai maximal défini par les balises Google** (généralement 500 ms). Dans ce cas, les balises peuvent se déclencher sans tenir compte du choix de l’utilisateur, ce qui limite l’efficacité du Consent Mode.

#### Causes possibles

1. Si le Consent Mode est intégré **en dur dans le code** :
   * Le script est chargé avec l’attribut `defer`, ce qui **retarde son exécution** ;
   * Le script est **modifié, mis en cache ou retardé** par un système d’optimisation comme **Rocket Loader** (Cloudflare), un CDN, ou un module de performance.
2. Si le Consent Mode est géré via **Google Tag Manager** :
   * Le paramètre **“Wait for update”** (ou `waitForUpdate`) est défini avec une durée **trop courte**, ce qui fait expirer l’attente avant que le signal `update` ne soit reçu.

#### Que faire

**Si vous n’utilisez pas Google Tag Manager :**

* Vérifiez que le script est **chargé sans l’attribut `defer`** ;
* Désactivez ou ajustez tout système tiers (comme Rocket Loader) qui pourrait retarder ou modifier le chargement du script.

**Si vous utilisez Google Tag Manager :**

* Ouvrez la balise concernée (ex. : balise Analytics ou Ads) ;
* Activez l’option **“Attendre le signal de mise à jour”** (Wait for update) ;
* Allongez la durée maximale d’attente, par exemple à **800 ms ou 1000 ms**, dans le champ dédié.

<figure><img src="/files/IgBJ2kaKv1s0Bpme8zil" alt=""><figcaption></figcaption></figure>


# Signal \`update\` absent

#### Description

Le signal `update` du Google Consent Mode n’est **pas envoyé**. Ce signal est indispensable pour informer Google du **choix final exprimé par l’utilisateur** (acceptation, refus ou personnalisation). Sans ce signal, Google considère qu’aucune décision n’a été prise et peut désactiver par défaut certaines fonctionnalités.

#### Causes possibles

* Le script contenant la commande `gtag('consent', 'update', {...})` :
  * est **chargé trop tard** dans la page ;
  * est **chargé avec l’attribut `defer`**, ce qui retarde son exécution ;
  * est **altéré ou mis en cache** par un système d’optimisation tel que **Rocket Loader** (Cloudflare), un CDN ou un plugin de performance.
* Le script est **chargé après Google Tag Manager**, ce qui empêche certaines balises de recevoir le signal à temps.

#### Que faire

**Vérifications à effectuer :**

* Vérifiez que le script contenant la commande `gtag('consent', 'update', {...})` est :
  * **chargé sans les attributs `defer` ou `async`** ;
  * **placé en haut de la balise `<head>`**, **avant toute autre balise ou script**, en particulier **avant le conteneur Google Tag Manager** ;
  * **non modifié ou retardé** par un outil d’optimisation (CDN, Rocket Loader, etc.).

<figure><img src="/files/EA6tDDd9pphJe8X4zrXf" alt=""><figcaption></figcaption></figure>

* Utilisez les outils de développement (console du navigateur, Google Tag Assistant) pour confirmer que le signal `update` est bien déclenché.


# Mauvais nom de data layer

#### Description

Au moins un service Google détecté sur la page **n’utilise pas le nom de data layer par défaut `dataLayer`**. Cela peut entraîner des incohérences dans le déclenchement des balises ou dans la transmission des signaux de consentement, notamment si plusieurs `dataLayer` coexistent ou si la CMP n’interagit pas avec le bon objet global.

#### Causes possibles

* Une ou plusieurs balises Google (Google Ads, Google Analytics, etc.) ont été configurées pour utiliser un **nom de data layer personnalisé** (ex. : `myDataLayer`, `gtmDataLayer`, etc.).
* Si la CMP **n’est pas chargée via Google Tag Manager**, elle suppose par défaut que le nom du data layer est `dataLayer`, sauf indication contraire.

#### Que faire

**Solution recommandée :**

* **Harmoniser l’utilisation d’un seul nom de data layer** sur l’ensemble du site (de préférence `dataLayer`, sauf nécessité particulière).

**Si vous choisissez volontairement un autre nom que `dataLayer` et que la CMP n’est pas chargée via GTM :**

* Déclarez explicitement ce nom **avant le chargement de la CMP** à l’aide de la variable suivante :

<pre class="language-javascript"><code class="lang-javascript">&#x3C;script>
    window.ABconsentCMP = window.ABconsentCMP || {};
<strong>    window.ABconsentCMP.gtmDataLayerName = "NOM_DU_DATALAYER_PERSONNALISÉ";
</strong><strong>&#x3C;/script>
</strong></code></pre>

<figure><img src="/files/og8gJ20c03PuBQqRFMxq" alt=""><figcaption></figcaption></figure>


# Mauvais déclencheur dans GTM

## Le principe à retenir

Dans Google Tag Manager, l'ordre dans lequel les balises se déclenchent est **critique** pour le Consent Mode. Le déclencheur `"Initialisation du consentement"` (`gtm.init_consent`) est le **tout premier événement** de la chaîne de déclenchement GTM — c'est le seul moment où la CMP peut envoyer les signaux `default` avant que les tags Google ne s'exécutent.

Si la CMP n'est pas déclenchée à ce moment précis, les tags Google se lancent **sans connaître l'état du consentement** → le Consent Mode est inefficace.

## Le problème

Une ou plusieurs balises se déclenchent **avant que le consentement ne soit initialisé** ou utilisent un **déclencheur inadapté** dans Google Tag Manager. Résultat : la CMP ne peut pas transmettre les signaux `default` ou `update` à temps, ce qui **compromet le fonctionnement du Google Consent Mode**.

## Les 2 causes possibles

| # | Cause                                                                                           | Explication                                                                                                                                                  |
| - | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 1 | Le déclencheur du tag CMP n'est **pas** `"Initialisation du consentement"` (`gtm.init_consent`) | Par exemple, le tag CMP utilise `"Initialisation"` (`gtm.init`) ou `"Toutes les pages"` — ces déclencheurs se déclenchent trop tard ou dans le mauvais ordre |
| 2 | D'autres tags se déclenchent **avant ou en même temps** que `gtm.init_consent`                  | Si un tag Google (Analytics, Ads…) utilise aussi ce déclencheur, il peut créer un conflit et retarder l'envoi du signal de consentement                      |

## Ce qu'il faut faire — étape par étape

1. **Ouvrir le tag CMP** dans Google Tag Manager (par ex. : **ABconsent – Sirdata CMP**)
2. **Vérifier le déclencheur** : il doit être **uniquement** `"Initialisation du consentement"` (`gtm.init_consent`)
3. **Vérifier les autres tags** : aucun autre tag ne doit utiliser ce déclencheur
4. **Aucun tag Google** (Analytics, Ads, etc.) ne doit se déclencher avant cet événement

<figure><img src="/files/RaQP2gLvrgDyZo5KfnZG" alt=""><figcaption></figcaption></figure>

## Résumé visuel

| Déclencheur GTM    | Nom affiché                    | Utilisation                         |
| ------------------ | ------------------------------ | ----------------------------------- |
| `gtm.init_consent` | Initialisation du consentement | ✅ **Uniquement** pour le tag CMP    |
| `gtm.init`         | Initialisation                 | ❌ **Pas** pour le CMP — trop tardif |
| `All Pages`        | Toutes les pages               | ❌ **Pas** pour le CMP — trop tardif |

## ⚠️ Piste de résolution : la CMP est-elle séquencée ?

Si le déclencheur de la CMP est correct (`gtm.init_consent`) mais que le Consent Mode ne fonctionne toujours pas, **vérifiez si la CMP est utilisée comme balise séquencée** dans un autre tag.

### Comment détecter le problème

Dans GTM, ouvrez chaque tag Google (GA4, Google Ads, Floodlight…) et vérifiez dans **Paramètres avancés > Séquençage des balises** si la CMP apparaît comme balise à déclencher avant.

Si c'est le cas, la CMP **hérite du déclencheur** du tag parent et se déclenche une deuxième fois sur un trigger inadapté :

| Déclenchement | Déclencheur                                                   | Correct ?            |
| ------------- | ------------------------------------------------------------- | -------------------- |
| 1er           | `gtm.init_consent` (son propre trigger)                       | ✅ Oui                |
| 2e            | Trigger du tag parent (ex: `All Pages`) hérité via séquençage | ❌ Non → cause le bug |

Ce 2e déclenchement perturbe les signaux `default`/`update` et compromet le Consent Mode.

### Comment corriger

1. Ouvrez chaque tag Google dans GTM
2. Allez dans **Paramètres avancés > Séquençage des balises**
3. Si la CMP apparaît comme balise séquencée, **supprimez-la** du séquençage
4. La CMP doit être déclenchée **uniquement** par son propre trigger `gtm.init_consent`

> **La CMP ne doit JAMAIS être séquencée.** L'ordre naturel de GTM garantit déjà qu'elle se déclenche en premier.

| ❌ Ce qui cause le bug             | ✅ La correction                                                            |
| --------------------------------- | -------------------------------------------------------------------------- |
| CMP séquencée avant un tag Google | Supprimer le séquençage — laisser la CMP sur `gtm.init_consent` uniquement |


# Microsoft UET Consent Mode

Anciennement Bing Consent Mode

Le **Microsoft Consent Mode** est désormais obligatoire pour plusieurs raisons. Avec l’entrée en vigueur de nouvelles réglementations telles que la **DSA** (Digital Services Act) et la **DMA** (Digital Markets Act), le besoin de gestion rigoureuse du consentement des utilisateurs s'est renforcé. Microsoft Advertising, en tant que **"contrôleur d’accès"** désigné par l’UE aux côtés d’autres ***gatekeepers***. Dans cette optique, Microsoft exige que les annonceurs opérant dans l’**Espace économique européen, au Royaume-Uni et en Suisse** utilisent la balise **UET** (Universal Event Tracking) pour transmettre les signaux de consentement des utilisateurs.

Le non-respect de cette obligation peut entraîner des conséquences importantes : certaines fonctionnalités, comme le suivi des conversions, seront suspendues, et les données collectées risquent d’être incomplètes ou inexactes. Sans transmission du consentement utilisateur à **UET**, les annonceurs pourraient perdre des données essentielles par exemple, ce qui limiterait leur capacité à optimiser les campagnes, créer des segments d’audience pertinents et exploiter les enchères automatiques.

**Pour activer le Microsoft UET Consent Mode, il vous suffit d'ajouter&#x20;*****Microsoft Advertising*****&#x20;à la liste de vos partenaires, ou d'activer manuellement l'option de&#x20;*****compatibilité Microsoft UET Consent Mode*****. Le premier active le second et réciproquement.**

<figure><img src="/files/9qSnOK4FjQvEao4CSPgQ" alt=""><figcaption><p>Ajout Partenaire</p></figcaption></figure>

<figure><img src="/files/BiyvnIehkkU2KiV26u4c" alt=""><figcaption><p>Sélection Microsoft Advertising</p></figcaption></figure>

<figure><img src="/files/szXgJIEDK39c63h7IXbf" alt=""><figcaption><p>Consent Mode Microsoft</p></figcaption></figure>

Si le Transparency & Consent Framework ([TCF](https://iabeurope.eu/transparency-consent-framework/)) est activé pour votre configuration (c'est le cas par défaut), Le [Microsoft UET Consent Mode Avancé](https://help.ads.microsoft.com/#apex/ads/en/60186/1) sera chargé. Dans le cas contraire, le [Microsoft UET Consent Mode Basique](https://help.ads.microsoft.com/#apex/ads/en/60119/1) sera chargé.

En résumé, dès lors que vous activez l'option ou sélectionnez le partenaire Microsoft Advertising, le Microsoft UET Consent Mode est automatiquement intégré !

{% hint style="info" %}
Si vous désactivez la prise en charge du TCF, la CMP basculera automatiquement sur le mode basique du Microsoft UET Consent Mode.
{% endhint %}

{% hint style="danger" %}
Attention, ce mode ne couvre pas les activités de Microsoft Clarity ! Merci de vous référer à [cette page](/standards-de-transmission-du-consentement/microsoft-clarity-consent) si vous souhaitez activer la gestion du sonetement pour ce service.
{% endhint %}


# Microsoft Clarity Consent

Microsoft Clarity utilise des cookies pour collecter des données de session utilisateur, telles que la manière dont un utilisateur a accédé à votre site, sa localisation et ses préférences linguistiques. En tant qu'éditeur de site web, vous pouvez être soumis à des lois exigeant d'obtenir le consentement des utilisateurs avant de placer des cookies sur leur navigateur ou de collecter des informations personnelles.

Par défaut, le code de suivi de Clarity est placé dans l'en-tête HTML de votre site et se charge immédiatement, avant que l'utilisateur n'ait indiqué s'il consent à l'utilisation de cookies. Pour éviter cela, [vous pouvez configurer Clarity](https://learn.microsoft.com/en-us/clarity/setup-and-installation/cookie-consent) pour qu'il n'installe pas de cookies tant que le consentement de l'utilisateur n'a pas été obtenu.

Cela implique de désactiver les cookies dans les paramètres de Clarity et de modifier le JavaScript de votre site pour informer Clarity lorsque le consentement est accordé.

Pour cela, allez dans **Clarity > Paramètres > Configuration**, puis désactivez les cookies.

<figure><img src="/files/UZhMV3EGzXy5b8W2vdMd" alt=""><figcaption></figcaption></figure>

Ajoutez Microsoft Clarity dans la liste de vos partenaires :

<figure><img src="/files/9qSnOK4FjQvEao4CSPgQ" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/97jl9t4PmM0FVjoEUFTl" alt=""><figcaption></figcaption></figure>

C'est tout ce qu'il y a à faire, la Consent API est prise en charge par défaut si vous ajoutez le partenaire...

{% hint style="danger" %}
Attention, ce mode ne couvre pas les activités de Micorsoft UET ! Merci de vous référer à [cette page](/standards-de-transmission-du-consentement/microsoft-uet-consent-mode) si vous souhaitez activer la gestion du sonetement pour ce service.
{% endhint %}


# Fonctionnement

Dans cette section, vous trouverez les commandes JavaScript vous permettant d'interagir avec la CMP sur votre site.

Toutes les commandes sont exécutables à travers la fonction API `__sdcmpapi` et Sirdata CMP fournit une liste de commandes standards décrites dans l'[IAB Tech Lab CMP JavaScript API](https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/IAB%20Tech%20Lab%20-%20CMP%20API%20v2.md)

Si vous utilisez une version compatible avec le Transparency and Consent Framework/TCF (c'est le cas par défaut), les commandes sont alors **également** exécutables à travers la fonction API `__tcfapi`.

{% tabs %}
{% tab title="\_\_sdcmpapi" %}

```javascript
window.__sdcmpapi(command, version, callback, parameter);
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="\_\_tcfapi" %}

```javascript
window.__tcfapi(command, version, callback, parameter);
```

{% endtab %}
{% endtabs %}

Le paramètre `version` correspond à la version de la spécification TCF (= 2).

<table data-header-hidden><thead><tr><th width="173.65934065934064">COMMANDE</th><th width="172">CALLBACK</th><th width="175.2858384013901">PARAMETRE</th><th>DESCRIPTION</th></tr></thead><tbody><tr><td>COMMANDE</td><td>CALLBACK</td><td>PARAMETRE</td><td>DESCRIPTION</td></tr><tr><td><strong>ping</strong></td><td>function(PingReturn, success)</td><td>-</td><td>Renvoie des informations sur le statut de chargement de la CMP et le mode d'application du RGPD configuré.</td></tr><tr><td><strong>revokeUtiq</strong></td><td>function(success)</td><td>-</td><td>Retire le consentement existant pour le partenaire Utiq et la finalité associée. Le signal associée et l'UI de la CMP (en cas de réaffichage) sont mis à jour.<br><br>Renvoie <em>true</em> si Utiq et la finalité associée font partie du paramétrage de la CMP, et <em>false</em> sinon.</td></tr><tr><td><strong>getVendorList</strong></td><td>function(GlobalVendorList, success)</td><td><strong>vendorListVersion (int) - optionnel</strong><br>Version de la Global Vendor List à récupérer.<br>Si elle n'est pas renseignée, la version utilisée par Sirdata CMP sera renvoyée.<br>Si la valeur est <em>LATEST</em>, la dernière version disponible sera renvoyée.<br>Si la valeur est invalide, <code>GlobalVendorList</code> sera nul et <code>success</code> sera <em>false</em>.</td><td>Renvoie la Global Vendor List contenant les finalités et les partenaires participant au Transparency &#x26; Consent Framework.</td></tr><tr><td><strong>addEventListener</strong></td><td>function(TCData, success)</td><td>-</td><td>Ajoute une fonction JavaScript à appeler avec les TC Data lorsqu'un évènement CMP se produit.<br><a href="https://cmp.docs.sirdata.net/cmp-api/fonctionnement#events">Voir la liste des évènements</a></td></tr><tr><td><strong>removeEventListener</strong></td><td>function(success)</td><td><strong>listenerId (int)</strong><br>ID du listener à supprimer.</td><td>Supprime un listener précédemment ajouté avec la commande addEventListener.</td></tr></tbody></table>

### PingReturn <a href="#ping-return" id="ping-return"></a>

```erlang
{
    gdprApplies: *Boolean*,
    cmpLoaded: *Boolean*,
    cmpStatus: *String*,
    displayStatus: *String*,
    apiVersion: '2.0',
    cmpVersion: *Integer*,
    cmpId: *Integer*,
    gvlVersion: *Integer*,
    tcfPolicyVersion: *Integer*
}
```

### TCData <a href="#tc-data" id="tc-data"></a>

```erlang
{
    tcString: [base64url-encoded] *String*,
    addtlConsent: *String*,
    tcfPolicyVersion: *Integer*,
    cmpId: *Integer*,
    cmpVersion: *Integer*,
    gdprApplies: *Boolean*,
    eventStatus: *String*,
    cmpStatus: *String*,
    isServiceSpecific: *Boolean*,
    useNonStandardStacks: *Boolean*,
    publisherCC: *String*,
    purposeOneTreatment: *Boolean*,
    outOfBand: {
        allowedVendors: {
            *vendorId*: *Boolean*,
            ?
        },
        disclosedVendors: {
            *vendorId*: *Boolean*,
            ?
        }
    },
    purpose: {
        consents: {
            *purposeId*: *Boolean*,
            ?
        },
        legitimateInterests: {
            *purposeId*: *Boolean*,
            ?
        }
    },
    vendor: {
        consents: {
            *vendorId* : *Boolean*,
            ?
        },
        legitimateInterests: {
            *vendorId* : *Boolean*,
            ?
        }
    },
    specialFeatureOptins: {
        *specialFeatureId*: *Boolean*,
        ?
    },
    publisher: {
        consents: {
            *purposeId*: *Boolean*,
            ?
        },
        legitimateInterests: {
            *purposeId*: *Boolean*,
            ?
        },
        customPurpose: {
            consents: {
                *customPurposeId*: *Boolean*,
                ?
            },
            legitimateInterests: {
                *customPurposeId*: *Boolean*,
                ?
            }
        },
        restrictions: {
            *purposeId*: {
                *vendorId* : *Integer*,
                ?
            },
            ?
        }
    }
}
```

### GlobalVendorList <a href="#global-vendor-list" id="global-vendor-list"></a>

```erlang
{
    gvlSpecificationVersion: *Integer*,
    vendorListVersion: *Integer*,
    tcfPolicyVersion: *Integer*,
    lastUpdated: *String*,
    purposes: {
        *purposeId*: {
            id: *Integer*,
            name: *String*,
            description: *String*,
            descriptionLegal: *String*,
        },
        ?
    },
    specialPurposes: {
        *specialPurposeId*: {
            id: *Integer*,
            name: *String*,
            description: *String*,
            descriptionLegal: *String*,
        },
        ?
    },
    features: {
        *featureId*: {
            id: *Integer*,
            name: *String*,
            description: *String*,
            descriptionLegal: *String*,
        },
        ?
    },
    specialFeatures: {
        *specialFeatureId*: {
            id: *Integer*,
            name: *String*,
            description: *String*,
            descriptionLegal: *String*,
        },
        ?
    },
    stacks: {
        *stackId*: {
            id: *Integer*,
            name: *String*,
            description: *String*,
            purposes: [
                *Integer*,
                ?
            ],
            specialFeatures: [
                *Integer*,
                ?
            ],
        },
        ?
    },
    vendors: {
        *vendorId*: {
        {
            id: *Integer*,
            name: *String*,
            purposes: [
                *Integer*,
                ?
            ],
            legIntPurposes: [
                *Integer*,
                ?
            ],
            flexiblePurposes: [
                *Integer*,
                ?
            ],
            specialPurposes: [
                *Integer*,
                ?
            ],
            features: [
                *Integer*,
                ?
            ],
            specialFeatures: [
                *Integer*,
                ?
            ],
            policyUrl: *String*,
            usesCookies: *Boolean*,
            cookieMaxAgeSeconds: *Integer*,            
            usesNonCookieAccess: *Boolean*,
            deviceStorageDisclosureUrl: *String*
        },
        ?
    }
}
```

### Evènements <a href="#events" id="events"></a>

Vous trouverez dans le tableau ci-dessous la liste des évènements qui peuvent être déclenchés par la CMP :

| EVENEMENT              | DESCRIPTION                                                                                                                                                                                                                                                               |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **tcloaded**           | Cet évènement se déclenche lorsque la CMP est chargée, qu'une TC String valide est disponible et que l'UI n'est pas affichée.                                                                                                                                             |
| **cmpuishown**         | Cet évènement se déclenche lorsque l'UI est affichée ou ré-affichée. S'il n'y a pas de TC String existante pour l'utilisateur, la CMP crée une TC String avec tous les signaux d'intérêt légitime définis à `true` et tous les signaux de consentement définis à `false`. |
| **useractioncomplete** | Cet évènement se déclenche lorsqu'un utilisateur valide ou re-valide ses choix et que la TC String mise à jour est prête à être exposée.                                                                                                                                  |
| **cmpuiclosed**        | Cet évènement se déclenche lorsqu'un utilisateur ferme l'UI affichée en cliquant sur le bouton fermer (si activé) et donc que la TC String courante est inchangée par la CMP.                                                                                             |


# Exemples

### Lecture des TC Data <a href="#read-tc-data" id="read-tc-data"></a>

{% hint style="info" %}
Avant de charger les scripts partenaires sur votre site, vous devez vérifier que l'utilisateur a donné son consentement ou ne s'est pas opposé à l'intérêt légitime.
{% endhint %}

Avec la commande `addEventListener`, vous pouvez déclarer un listener à la CMP qui sera appelé avec les TC Data lorsqu'un évènement se déclenche.\
A l'ajout d'un listener, la callback est immédiatement appelée avec les TC Data courantes ainsi qu'un listenerId que vous devez conserver si vous avez ensuite besoin de supprimer le listener.

{% tabs %}
{% tab title="Lecture des TC Data" %}

<pre class="language-javascript"><code class="lang-javascript"><strong>window.__tcfapi("addEventListener", 2, function (tcData, success) {
</strong> if (success &#x26;&#x26; tcData &#x26;&#x26; (tcData.eventStatus == "cmpuiclosed" || tcData.eventStatus == "tcloaded")) {
      if (!tcData.gdprApplies) {
                        console.log("GDPR doesn't apply to user");
      } else {
        if (tcData.vendor.consents[53] &#x26;&#x26; tcData.purpose.consents[1]) {
                                console.log("Vendor ID 53 has consent for  purpose ID 1");
             }
        if (!tcData.vendor.consents[53] || !tcData.purpose.consents[2]) {
                                console.log("Vendor ID 53 has no consent for purpose ID 2");
             }
        if (tcData.vendor.legitimateInterests[53] &#x26;&#x26; tcData.purpose.legitimateInterests[9]) {
                                console.log("User has been informed of vendor ID 53's legitimate interest for purpose ID 9 and hasn't objected to it");
             }
         if (!tcData.vendor.legitimateInterests[53] || !tcData.purpose.legitimateInterests[10]) {
                                console.log("User has objected to vendor ID 53's legitimate interest for purpose ID 10");
             }
         }
       }
});
</code></pre>

{% endtab %}
{% endtabs %}

Vous pouvez également spécifier une liste d'ID partenaires pour lesquels les TC Data sont requêtées.

{% tabs %}
{% tab title="Lecture des TC Data filtrée sur une liste d'ID partenaires" %}

```javascript
window.__tcfapi("addEventListener", 2, function (tcData, success) {
 if (success && tcData && (tcData.eventStatus == "cmpuiclosed" || tcData.eventStatus == "tcloaded")) {
    if (!tcData.gdprApplies) {
         console.log("GDPR doesn't apply to user");
     } else {
            if (tcData.vendor.consents[53] && tcData.purpose.consents[1]) {
                console.log('Vendor ID 53 has consent for purpose ID 1');
            }
            if (tcData.vendor.consents[100] && tcData.purpose.consents[1]) {
                // This will never happen since vendor ID 100
                // is not included in the vendorIDs parameter
                console.log('Vendor ID 53 has consent for purpose ID 1');
            }
    }
  }
});
```

{% endtab %}
{% endtabs %}

### Lecture de la Global Vendor List <a href="#read-global-vendor-list" id="read-global-vendor-list"></a>

La Global Vendor List contenant les finalités et les partenaires participant au Transparency & Consent Framework peut être récupérée avec la commande `getVendorList`.

{% tabs %}
{% tab title="Lecture de la Global Vendor List" %}

```javascript
window.__tcfapi("getVendorList", 2, function (globalVendorList, success) {
 if (success) {
  console.log("vendorListVersion = " + globalVendorList.vendorListVersion);
    }
});
```

{% endtab %}
{% endtabs %}

Vous pouvez également spécifier une *vendorListVersion* pour laquelle la Global Vendor List est requêtée.

{% tabs %}
{% tab title="Lecture de la Global Vendor List pour une version spécifique" %}

```javascript
window.__tcfapi("getVendorList", 2, function (globalVendorList, success) {
        if (success) {
               console.log("globalVendorList with version 10 is retrieved");
        } else {
                console.log("Invalid vendorListVersion");
        }
}, 10);
```

{% endtab %}
{% endtabs %}

### Révoquer un consentement Utiq <a href="#add-event-listener" id="add-event-listener"></a>

Si l'utilisateur a révoqué son consentement pour Utiq en dehors de la CMP, vous pouvez mettre le statut de choix via l'API de la CMP grâce à la commande suivante :

{% tabs %}
{% tab title="Ajout d'un listener" %}

```javascript
window.__sdcmpapi("revokeUtiq", 2, function (success) {
    if (success) {
        console.log("Consent for Utiq is revoked");
    }
});
```

{% endtab %}
{% endtabs %}


# Support pour les iframes

Les iframes intégrées sur votre site peuvent utiliser les commandes fournies par la [CMP API](https://cmp.docs.sirdata.net/cmp-api/fonctionnement).\
Pour cela, elles doivent effectuer des appels à la "frame" parente (ou à une frame ancêtre) sur laquelle la CMP est chargée, en envoyant les commandes sous forme de message grâce à la fonction `postMessage()`.

La frame vers laquelle effectuer l'appel peut être déterminée par l'ancêtre en cherchant la frame enfant `.frames["__tcfapiLocator"]`.

### Envoyer une commande <a href="#iframe-send-command" id="iframe-send-command"></a>

Le message à envoyer doit avoir le format ci-dessous où l'objet `__tcfapiCall` contient les informations de la commande à exécuter.\
`command` et `parameter` sont identiques aux paramètres passés à la fonction `__tcfapi()`, et `callId` est un ID unique à déterminer.

{% tabs %}
{% tab title="Format \_\_tcfapiCall" %}

```javascript
{
	__tcfapiCall: {
		command: *command*, // name of the command to execute
		version: 2, // version of the TCF specification
		parameter: *parameter*, // parameter to be passed to the command function
		callId: *uniqueId* // unique call ID
	}
}
```

{% endtab %}

{% tab title="Exemple" %}

```javascript
this.callId = this.callId || 0;
var message = {
	__tcfapiCall: {
		command: 'addEventListener',
		version: 2,
		parameter: null,
		callId: ++this.callId
	}
};
window.top.postMessage(message, '*');
```

{% endtab %}
{% endtabs %}

### Récupérer le résultat de la commande <a href="#iframe-get-result" id="iframe-get-result"></a>

Avant d'envoyer des messages, l'iframe doit mettre en place une fonction JavaScript à exécuter lorsqu'un message est renvoyé en retour. Pour cela, elle doit tracer l'évènement message avec la fonction `window.addEventListener()`.\
De cette façon, elle récupèrera et pourra traiter le résultat de la commande contenu dans `__tcfapiReturn`.

{% hint style="danger" %}
La fonction `window.addEventListener()` est différente de la commande [addEventListener](https://cmp.docs.sirdata.net/cmp-api/exemples#add-event-listener), qui est propre à la CMP API.
{% endhint %}

{% tabs %}
{% tab title="Exemple" %}

```javascript
function processMessage(event) {
	if (event && event.data && event.data.__tcfapiReturn && event.data.__tcfapiReturn.success) {
		console.log(event.data.__tcfapiReturn.returnValue);
	}
}
window.addEventListener('message', processMessage);
```

{% endtab %}
{% endtabs %}

Lorsqu'une commande est envoyée, le message renvoyé en retour (*event.data*) contient l'objet `__tcfapiReturn` avec le résultat de la commande.\
`returnValue` et `success` sont identiques aux paramètres passés à la callback de la fonction `__tcfapi()`, et `callId` correspond à l'ID de l'appel d'origine (`__tcfapiCall`).

{% tabs %}
{% tab title="Format \_\_tcfapiReturn" %}

```javascript
{
    __tcfapiReturn: {
        returnValue: *returnValue*, // result of the command
        success: *boolean*, // true if the call to the command was successful
        callId: *uniqueId* // call ID sent in the __tcfapiCall
    }
}
```

{% endtab %}

{% tab title="Exemple" %}

```javascript
function processMessage(event) {
	if (event && event.data && event.data.__tcfapiReturn && event.data.__tcfapiReturn.success) {
		var tcData = event.data.__tcfapiReturn.returnValue;
		if (!tcData.gdprApplies) {
			console.log("GDPR doesn't apply to user");
		}
		console.log("TC String : ", tcData.tcString);
	}
}
window.addEventListener('message', processMessage);

this.callId = this.callId || 0;
var message = {
	__tcfapiCall: {
		command: 'addEventListener',
		version: 2,
		parameter: null,
		callId: ++this.callId
	}
};
window.top.postMessage(message, '*');
```

{% endtab %}
{% endtabs %}

Vous trouverez ci-dessous un exemple de script qui émule l'API \_\_tcfapi() dans une iframe.

Il localise la trame ancêtre exécutant le CMP, exécute le postMessage et écoute le message de retour et transmet ses valeurs au rappel.

En clair, les scripts de l'iframe fonctionneront comme si la CMP y était chargée directement.

```javascript
<script>
    !function(){var a=window,c;var o={};for(;a;){try{if(a.frames.__tcfapiLocator){c=a;break}}catch(a){}if(a===window.top)break;a=a.parent}window.__tcfapi=function(a,t,n,e){c?(t={__tcfapiCall:{command:a,parameter:e,version:t,callId:e=Math.random()+""}},o[e]=n,c.postMessage(t,"*")):n({msg:"CMP not found"},!1)},window.addEventListener("message",function(a){var t={};try{t="string"==typeof a.data?JSON.parse(a.data):a.data}catch(a){}var n=t.__tcfapiReturn;n&&"function"==typeof o[n.callId]&&(o[n.callId](n.returnValue,n.success))},!1);window.__sdcmpapi=window.__tcfapi;}();
</script>
```

{% hint style="warning" %}
Ne chargez pas les scripts de la CMP dans l'iframe :)
{% endhint %}


# Gestion de l'affichage de la CMP pour le CCPA

### Affichage conditionnel selon la géolocalisation

La CMP Sirdata détecte automatiquement la localisation de l'utilisateur afin d'adapter l'affichage de la bannière de consentement aux exigences légales applicables.

Dans le cadre du **CCPA (California Consumer Privacy Act)**, la bannière de consentement spécifique à cette réglementation est **affichée uniquement dans les états des États-Unis où cela est requis**, comme la Californie.

> ✅ Ce comportement permet de limiter l'affichage de la bannière CCPA uniquement aux utilisateurs concernés, afin de ne pas perturber l'expérience des utilisateurs non soumis à cette législation.

***

### Option : forcer l'affichage de la bannière CCPA partout aux États-Unis

Sur demande, il est possible **d'activer une option pour afficher la bannière CCPA à tous les visiteurs situés aux États-Unis**, quel que soit leur état de résidence.

> 🔧 Cette option peut être utile dans le cadre de politiques internes ou pour simplifier la gestion des obligations en matière de consentement.

***

### Bouton "Do Not Sell My Personal Information"

Conformément aux exigences du CCPA, un lien intitulé **"Do Not Sell My Personal Information"** est affiché **en bas de page (footer)** une fois la bannière fermée.

Ce lien permet à l'utilisateur de rouvrir la bannière afin de gérer ou modifier ses préférences de consentement.

***

### Option : suppression du bouton en bas de page

Il est également possible de **désactiver l'affichage du bouton "Do Not Sell" dans le footer**. Dans ce cas, il est recommandé de proposer une autre méthode de réaffichage de la bannière (par exemple via un lien dans les mentions légales, la politique de confidentialité ou le footer du site).

> ⚠️ Attention : pour rester conforme au CCPA, l'utilisateur doit toujours avoir la possibilité de revenir sur ses choix à tout moment.


# Mode passif

Si vous ne souhaitez pas que la CMP s'affiche automatiquement sur certaines pages de votre site, vous pouvez activer le mode passif page par page en ajoutant le script suivant entre les 2 parties de votre tag d'installation :

{% tabs %}
{% tab title="Commande" %}

```javascript
<script>window.Sddan = {"cmp": {"options": {"passive": true}}};</script>
```

{% endtab %}

{% tab title="Exemple" %}

```javascript
<script type="text/javascript" src="https://cache.consentframework.com/js/pa/12345/c/abCdE/stub" charset="utf-8"></script>
<script>window.Sddan = {"cmp": {"options": {"passive": true}}};</script>
<script type="text/javascript" src="https://choices.consentframework.com/js/pa/12345/c/abCdE/cmp" charset="utf-8" async></script>
```

{% endtab %}
{% endtabs %}

En activant le mode passif, la CMP s'affichera uniquement sur action manuelle de l'utilisateur, c'est-à-dire soit en cliquant sur le bouton "Paramètres cookies" (si affiché), soit en cliquant sur le lien ajouté sur votre site.

{% hint style="danger" %}
Cela ne met pas en pause le fonctionnement de la CMP, les commandes de l'API restent disponibles et les signaux de consentement sont envoyés de la même façon.
{% endhint %}


# Définir la langue pour un utilisateur

En configurant votre CMP, vous avez la possibilité de sélectionner la langue dans laquelle elle s'affichera aux utilisateurs.\
Par défaut, celle-ci est définie sur **Langue du navigateur**, ce qui permet une détection automatique pour toujours afficher la CMP dans une langue que l'utilisateur comprend.

Dans les paramètres avancés, vous pouvez choisir la langue dans laquelle la CMP s'affiche.

<figure><img src="/files/wcitwA0YNO3mZF2v8c6D" alt=""><figcaption></figcaption></figure>

#### Liste des langues disponibles:

Bulgare, Tchèque, Danois, Néerlandais, Anglais, Français, Allemand, Grec, Hongrois, Italien, Norvégien, Polonais, Portugais, Portugais (Brésil), Portugais (Portugal), Roumain, Espagnol, Suédois

<figure><img src="/files/suGGMmiIKfgvm5qDBtdk" alt=""><figcaption></figcaption></figure>


# Affichage manuel de la CMP

Il est impératif de permettre aux utilisateurs de retirer leur consentement à tout moment, conformément aux exigences du RGPD.

C'est pourquoi l'icône ![](/files/zKwWINRrJsA2wxwVxjWo)leur permet de consulter et modifier leurs choix à tout moment.

Cependant, il est possible de masquer cette icône en optant pour un autre mode d'affichage. Vous pouvez en effet afficher un lien dans le footer de votre site à la place, en sélectionnant l'option appropriée dans la console de gestion.

<figure><img src="/files/eABZB5dtt7KHFXk2hFxJ" alt=""><figcaption></figcaption></figure>

**Voici les étapes pour masquer l'icône et afficher un lien dans le footer :**

1. Dans la console de gestion de votre CMP, sélectionnez l'option **"Gérer dans le footer"** sous l'option **"Style d'affichage"** de l'onglet **"Editer les images et bouton"**.
2. Une fois cette option sélectionnée, ajoutez un lien permettant aux utilisateurs de réafficher la CMP dans le footer de votre site (cf ci-dessous).
3. Si vous ne respectez pas la règle d'affichage permettant le retrait du consentement via le footer, le système basculera automatiquement vers un affichage en **mode "icône"**, afin de garantir la conformité avec le RGPD.

En effet, il est possible de déclencher l'affichage de la CMP avec la commande JavaScript `window.Sddan.cmp.displayUI()`. Selon vos besoins, vous pouvez l'intégrer dans un script JavaScript ou dans un lien HTML sur votre site.

{% hint style="info" %}
Veuillez noter que cette commande permet d'afficher la CMP uniquement pour les utilisateurs pour lesquels le RGPD s'applique, en fonction de la configuration de votre CMP. Pour les autres utilisateurs, la CMP ne s'affichera pas.
{% endhint %}

```javascript
//JavaScript script demo
<script>window.Sddan.cmp.displayUI();</script>
```

```html
<!-- HTML link demo -->
<a href="javascript:window.Sddan.cmp.displayUI();">Cookies settings</a>
```

Il est essentiel que le lien permettant de réafficher la CMP soit présent dans la page dès son chargement. En effet, la CMP vérifie l'existence de ce lien au moment du chargement pour déterminer s'il doit afficher ou non l'icône de consentement.

Cela signifie donc que **le lien doit être intégré de manière synchrone dans le code HTML de la page**. Il n'est pas possible de l'ajouter de manière asynchrone, par exemple via un script JavaScript qui s'exécuterait après le chargement initial de la CMP. Si le lien n'est pas présent au moment où la CMP effectue sa vérification, l'icône sera affichée par défaut.

{% hint style="warning" %}
Si ce lien est ajouté de manière asynchrone (par exemple via JavaScript après que la CMP ait été chargée), la vérification de la CMP échouera, et l'icône sera affichée, ce qui n'est pas conforme aux attentes de l'affichage de la CMP sans l'icône si le lien est présent dans le footer.
{% endhint %}


# Configuration CMP avec différenciation mobile / desktop

Avoir une configuration différente de votre **CMP** sur **mobile** et sur **desktop** peut présenter plusieurs intérêts, principalement liés à l’**expérience utilisateur** et à la **conformité.**\
\
Les éléments qui différent d'un device à l'autre (taille de l'écran, navigation, accessibilité, temps de chargement, etc.) nous poussent à vous recommander la création de **configurations distinctes par support** afin d'améliorer:\
\- les taux de consentement\
\- l'ergonomie\
\- la conformité globale\
\
Voici comment procéder :

### Création de la variable personnalisée “Device Type”

* **Type de variable** : Variable JavaScript personnalisée
* **Nom de la variable** : `Device Type`

Code :

function() {\
var width = window\.innerWidth;\
if (width <= 768) {\
return 'mobile';\
} else {\
return 'desktop';\
}\
}

### Création de deux déclencheurs conditionnels

Créer deux déclencheurs basés sur la variable `Device Type` :

1. **Déclencheur Mobile**
   * Type : Déclencheur personnalisé (condition)
   * Condition : `Device Type` **égale** `mobile`
2. **Déclencheur Desktop**
   * Type : Déclencheur personnalisé (condition)
   * Condition : `Device Type` **égale** `desktop`

Ces déclencheurs serviront ensuite pour différencier les balises CMP selon le device.

### Création d’une deuxième configuration CMP

1. **Dupliquer la configuration CMP existante.**
2. **Renommer la deuxième configuration** (exemple : `CMP - Mobile`).
3. **Modifier l’affichage du bouton “Continuer sans accepter”** :
   * Sur **Desktop** : le bouton conserve son emplacement actuel.
   * Sur **Mobile** : le bouton doit être repositionné en **haut à droite** de la CMP (afin d’améliorer la visibilité et l’ergonomie).

### Association des déclencheurs aux configurations CMP

* Associer le déclencheur **Mobile** uniquement à la balise `CMP - Mobile`.
* Associer le déclencheur **Desktop** uniquement à la balise `CMP - Desktop`.

Ainsi, en fonction du device, la bonne configuration de CMP s’affichera avec la bonne ergonomie.

**Contrôler l’affichage CMP** :

* Desktop → bouton “Continuer sans accepter” au même emplacement.
* Mobile → bouton repositionné en haut à droite.

### **Statistiques Mobile vs Desktop :**

**Mobile**

<figure><img src="/files/Jckyw4YfwmGC9C1ucqSn" alt=""><figcaption></figcaption></figure>

**Desktop**

<figure><img src="/files/jvDpUe7ir5MqCs0xKbbf" alt=""><figcaption></figcaption></figure>


# Domaine de Consentement

## Définition <a href="#definition" id="definition"></a>

Un domaine de consentement (ou *consent domain*) est utilisé par une plateforme de gestion du consentement (CMP) pour :

* héberger les cookies et préférences de consentement des utilisateurs ;
* isoler ces cookies du reste du site (souvent pour des raisons de conformité et de sécurité) ;
* centraliser la gestion du consentement pour plusieurs sites ou sous-domaines appartenant à la même organisation.

\
**Accès à la fonctionnalité - Cette fonctionnalité peut-être activée sur demande**

Dans le side menu, cliquer sur “**Domaines de consentement**”.

<figure><img src="/files/QQJX60dlNTOO30PJFYL9" alt=""><figcaption></figcaption></figure>

## Créer un domaine de consentement <a href="#creer-un-domaine-de-consentement" id="creer-un-domaine-de-consentement"></a>

Pour créer un domaine de consentement, cliquer sur le bouton de création d’un nouveau domaine.

Le formulaire se compose de l'étape 1 où il faut renseigner le nom de domaine

<figure><img src="/files/7892FVLyWCXKjTdkkAl7" alt=""><figcaption></figcaption></figure>

<figure><img src="https://media-cdn.atlassian.com/file/acabc33f-86dc-4083-a74d-931bc01bac7e/image/cdn?allowAnimated=true&#x26;client=620a4196-e1a1-4db1-89d5-c38bef926545&#x26;collection=contentId-396460038&#x26;height=125&#x26;max-age=2592000&#x26;mode=full-fit&#x26;source=mediaCard&#x26;token=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI2MjBhNDE5Ni1lMWExLTRkYjEtODlkNS1jMzhiZWY5MjY1NDUiLCJhY2Nlc3MiOnsidXJuOmZpbGVzdG9yZTpjb2xsZWN0aW9uOmNvbnRlbnRJZC0zOTY0NjAwMzgiOlsicmVhZCJdfSwiZXhwIjoxNzY2MDc3NzkyLCJuYmYiOjE3NjYwNzQ5MTIsImFhSWQiOiI3MTIwMjA6NTUyNjZkNDMtYmQ1MC00OTgxLWI5NzItYmVlMTgzNGRjOWIxIiwiaHR0cHM6Ly9pZC5hdGxhc3NpYW4uY29tL2FwcEFjY3JlZGl0ZWQiOmZhbHNlfQ.gOfTB4XGzHtB0sTGzvvhzViM8HZ5EDrHQl2XCmla6m0&#x26;width=760" alt=""><figcaption></figcaption></figure>

L'étape 2 est l’installation du domaine sur l’hébergeur du client. Cette étape peut être fermée et on peut revenir dessus par la suite. Pour afficher la modale d’installation il faut soit cliquer sur le statut soit cliquer sur l’icone setting.

<figure><img src="https://media-cdn.atlassian.com/file/3819ecea-2727-4eb2-8dab-63e9b9168c9a/image/cdn?allowAnimated=true&#x26;client=620a4196-e1a1-4db1-89d5-c38bef926545&#x26;collection=contentId-396460038&#x26;height=125&#x26;max-age=2592000&#x26;mode=full-fit&#x26;source=mediaCard&#x26;token=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI2MjBhNDE5Ni1lMWExLTRkYjEtODlkNS1jMzhiZWY5MjY1NDUiLCJhY2Nlc3MiOnsidXJuOmZpbGVzdG9yZTpjb2xsZWN0aW9uOmNvbnRlbnRJZC0zOTY0NjAwMzgiOlsicmVhZCJdfSwiZXhwIjoxNzY2MDc3NzkyLCJuYmYiOjE3NjYwNzQ5MTIsImFhSWQiOiI3MTIwMjA6NTUyNjZkNDMtYmQ1MC00OTgxLWI5NzItYmVlMTgzNGRjOWIxIiwiaHR0cHM6Ly9pZC5hdGxhc3NpYW4uY29tL2FwcEFjY3JlZGl0ZWQiOmZhbHNlfQ.gOfTB4XGzHtB0sTGzvvhzViM8HZ5EDrHQl2XCmla6m0&#x26;width=760" alt=""><figcaption></figcaption></figure>

Pour installer le domaine il faut :

* Ajouter l’enregistrement TXT dans les paramètres DNS de l’hébergeur du site
* Ajouter l’enregistrement CNAME dans les paramètres DNS de l’hébergeur du site
* Cliquer sur “Vérifier les DNS”

  * La vérification du CNAME peut prendre entre 5min et plusieurs heures
  *

  ```
  <figure><img src="../.gitbook/assets/image (4).png" alt=""><figcaption></figcaption></figure>
  ```

<figure><img src="https://media-cdn.atlassian.com/file/d2b99878-7123-4720-9353-79bda919a4f4/image/cdn?allowAnimated=true&#x26;client=620a4196-e1a1-4db1-89d5-c38bef926545&#x26;collection=contentId-396460038&#x26;height=125&#x26;max-age=2592000&#x26;mode=full-fit&#x26;source=mediaCard&#x26;token=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI2MjBhNDE5Ni1lMWExLTRkYjEtODlkNS1jMzhiZWY5MjY1NDUiLCJhY2Nlc3MiOnsidXJuOmZpbGVzdG9yZTpjb2xsZWN0aW9uOmNvbnRlbnRJZC0zOTY0NjAwMzgiOlsicmVhZCJdfSwiZXhwIjoxNzY2MDc3NzkyLCJuYmYiOjE3NjYwNzQ5MTIsImFhSWQiOiI3MTIwMjA6NTUyNjZkNDMtYmQ1MC00OTgxLWI5NzItYmVlMTgzNGRjOWIxIiwiaHR0cHM6Ly9pZC5hdGxhc3NpYW4uY29tL2FwcEFjY3JlZGl0ZWQiOmZhbHNlfQ.gOfTB4XGzHtB0sTGzvvhzViM8HZ5EDrHQl2XCmla6m0&#x26;width=760" alt=""><figcaption></figcaption></figure>

## Editer / supprimer un domaine de consentement <a href="#editer-supprimer-un-domaine-de-consentement" id="editer-supprimer-un-domaine-de-consentement"></a>

On ne peut pas éditer un domaine de consentement. On peut seulement vérifier les enregistrement DNS et supprimer.

<figure><img src="https://media-cdn.atlassian.com/file/02964a5a-0bf9-4e07-9221-39a518f71140/image/cdn?allowAnimated=true&#x26;client=620a4196-e1a1-4db1-89d5-c38bef926545&#x26;collection=contentId-396460038&#x26;height=125&#x26;max-age=2592000&#x26;mode=full-fit&#x26;source=mediaCard&#x26;token=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI2MjBhNDE5Ni1lMWExLTRkYjEtODlkNS1jMzhiZWY5MjY1NDUiLCJhY2Nlc3MiOnsidXJuOmZpbGVzdG9yZTpjb2xsZWN0aW9uOmNvbnRlbnRJZC0zOTY0NjAwMzgiOlsicmVhZCJdfSwiZXhwIjoxNzY2MDc3NzkyLCJuYmYiOjE3NjYwNzQ5MTIsImFhSWQiOiI3MTIwMjA6NTUyNjZkNDMtYmQ1MC00OTgxLWI5NzItYmVlMTgzNGRjOWIxIiwiaHR0cHM6Ly9pZC5hdGxhc3NpYW4uY29tL2FwcEFjY3JlZGl0ZWQiOmZhbHNlfQ.gOfTB4XGzHtB0sTGzvvhzViM8HZ5EDrHQl2XCmla6m0&#x26;width=388" alt=""><figcaption></figcaption></figure>

Pour supprimer, il faut cliquer sur l’icone corbeille et valider la suppression.

## Créer un Groupe de site

Les groupes de sites prennent les domaines et sous domaines sur lesquels le domaine de consentement sera actif. Ils seront affiché sur la CMP finale. Pensez bien à renseigner le [www.domaine.com](http://www.domaine.com) ET le domaine.com pour chacun des domaines.

<figure><img src="/files/Yrk9zY1tCSB1IoaEYm2B" alt=""><figcaption></figcaption></figure>

## Comment utiliser un domaine de consentement sur une CMP ? <a href="#comment-utiliser-un-domaine-de-consentement-sur-une-cmp" id="comment-utiliser-un-domaine-de-consentement-sur-une-cmp"></a>

Sur la page de récupération du code,

<figure><img src="/files/QwQkaIUwAbuB7xdPdHXJ" alt=""><figcaption></figcaption></figure>

Il faut sélectionner le domaine de consentement désiré sur la CMP. Le script se mets automatiquement à jour avec ce nouveau domaine et il faut que le client copie / colle le nouveau script sur son site.

Dans le template GTM de Sirdata:

<figure><img src="/files/QRFvqLehm8UWSfV9M1P9" alt=""><figcaption></figcaption></figure>

<figure><img src="https://media-cdn.atlassian.com/file/b69a8086-3ab4-46ab-905e-909c5a42ad84/image/cdn?allowAnimated=true&#x26;client=620a4196-e1a1-4db1-89d5-c38bef926545&#x26;collection=contentId-396460038&#x26;height=125&#x26;max-age=2592000&#x26;mode=full-fit&#x26;source=mediaCard&#x26;token=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI2MjBhNDE5Ni1lMWExLTRkYjEtODlkNS1jMzhiZWY5MjY1NDUiLCJhY2Nlc3MiOnsidXJuOmZpbGVzdG9yZTpjb2xsZWN0aW9uOmNvbnRlbnRJZC0zOTY0NjAwMzgiOlsicmVhZCJdfSwiZXhwIjoxNzY2MDc3NzkyLCJuYmYiOjE3NjYwNzQ5MTIsImFhSWQiOiI3MTIwMjA6NTUyNjZkNDMtYmQ1MC00OTgxLWI5NzItYmVlMTgzNGRjOWIxIiwiaHR0cHM6Ly9pZC5hdGxhc3NpYW4uY29tL2FwcEFjY3JlZGl0ZWQiOmZhbHNlfQ.gOfTB4XGzHtB0sTGzvvhzViM8HZ5EDrHQl2XCmla6m0&#x26;width=760" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Attention, ce champ n’est pas persistant. Si on sélectionne un domaine de consentement personnalisé, on quitte la page et on revient dessus, on n’aura plus le domaine sélectionné.
{% endhint %}


# Conditionnement d'un script distant hors Tag Manager

Sirdata CMP vous permet de conditionner automatiquement vos tags présents sur la page au chargement. C'est-à-dire aux tags insérés "en dur" sur la page mais pas aux tags insérés par un outil tiers comme un Tag Manager. Pour utiliser cette fonctionnalité via un Tag Manager, merci de vous référer à la page suivante.

{% hint style="info" %}
Important : Cette méthode permet une grande simplification technique des conditionnements. Néanmoins, il est important de garder en tête qu'une expertise juridique est nécessaire pour déterminer comment les réaliser vous-mêmes.

\
Pour chaque tag/balise, il faut :

* Étudier l’éventuelle présence de traceurs non exemptés (cookies, indexdb, local storage…) (Directive ePrivacy)
* Évaluer les traitements de données personnelles et le cas échéant les finalités poursuivies par vos partenaires et leurs bases légales respectives (RGPD)
* Déterminer si le tag/balise est automatiquement pris en charge par vos partenaires via les API de la CMP (exemple : le « Consent Mode » de Google et de Microsoft Bing)

N'hésitez pas à solliciter nos équipes pour que nous paramétrions ces conditionnements pour vous : <https://cmp.docs.sirdata.net/gestion-des-scripts/prestations-conditionnement-tags>
{% endhint %}

Avant de charger les scripts partenaires sur votre site, il est important de vérifier que l'utilisateur a donné son consentement ou ne s'est pas opposé à l'intérêt légitime.

Pour cela, vous pouvez utiliser les commandes JavaScript disponibles dans la CMP API. Avec Sirdata CMP, vous avez également la possibilité de procéder au conditionnement de vos tags, en quelques minutes et en toute simplicité.

{% hint style="danger" %}
Cette fonctionnalité étant intégrée au sein de la CMP, elle ne peut s'appliquer au tag de votre CMP, qui doit toujours être déployé comme fourni dans la procédure d'installation.
{% endhint %}

### Conditionnement préalable aux cookies <a href="#configuration" id="configuration"></a>

Afin de conditionner le chargement d'un script au consentement de l'utilisateur, il vous suffit simplement de remplacer l'attribut `src` par `data-cmp-src` dans le tag HTML. Ainsi, après avoir collecté les choix de l'utilisateur, la CMP vérifiera automatiquement qu'il a donné son consentement à la finalité 1 (*Stocker et/ou accéder à des informations sur un terminal*), et auquel cas chargera le script sur votre site.

{% hint style="info" %}
La plupart des scripts impliquent *a minima* un consentement préalable pour les cookies. Cette simple manipulation vous permet alors de répondre aux exigences règlementaires, tout en contrôlant les scripts pouvant se charger sur votre site.
{% endhint %}

{% tabs %}
{% tab title="Exemple pour un script distant" %}

```markup
<script src="https://www.exemple.com/script.js" type="text/javascript"></script>
```

{% endtab %}
{% endtabs %}

devient alors :

```markup
<script data-cmp-src="https://www.exemple.com/script.js" type="text/javascript"></script>
```

{% hint style="info" %}
Dans l'exemple ci-dessus le script distant est inséré manuellement. Vous pouvez le vérifier car `src` n'est pas précédé d'un point ("."). Lorsque le script distant est inséré par une fonction JavaScript il suffit d'utiliser la fonction `setAttribute`. Pour repérer ces scripts, il suffit de chercher `src` précédé d'un point et le modifier comme suit.
{% endhint %}

```markup
<script>
(function() {
    var s = document.createElement('script');
    s.type = 'text/javascript';
    s.async = true;
    s.src = 'https://www.example.com';
    var _head = document.head || document.getElementsByTagName("head")[0];
    _head.appendChild(s);
})();
</script>
```

devient alors :

```markup
<script>
(function() {
    var s = document.createElement('script');
    s.type = 'text/javascript';
    s.async = true;
    s.setAttribute('data-cmp-src','https://www.example.com');
    var _head = document.head || document.getElementsByTagName("head")[0];
    _head.appendChild(s);
})();
</script>
```

{% hint style="danger" %}
Ce procédé fonctionne uniquement pour les tags présents dans le code HTML de votre page et ne doit pas être utilisé pour les tags chargés via un Tag Manager. Pour utiliser cette fonctionnalité via un Tag Manager merci de vous référer à la page suivante.
{% endhint %}

### Tags supportés <a href="#configuration" id="configuration"></a>

Vous trouverez ci-dessous la liste des éléments HTML auxquels le conditionnement de tag peut s'appliquer :

| **TAG**        | **EXEMPLE**                                                                                                                               |
| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **`<script>`** | `<script data-cmp-src="/script.js" data-cmp-vendor="53" data-cmp-purposes="1,3"></script>`                                                |
| **`<img>`**    | `<img data-cmp-src="/image.png" data-cmp-vendor="22" data-cmp-purposes-li="2" width="1" height="1"/>`                                     |
| **`<iframe>`** | `<iframe data-cmp-src="/iframe.html" data-cmp-provider="89" width="250" height="200"></iframe>`                                           |
| **`<embed>`**  | `<embed data-cmp-src="/embed.html" data-cmp-vendor="178" width="250" height="200">`                                                       |
| **`<video>`**  | `<video data-cmp-src="/video.mp4" controls width="320" height="240"/>`                                                                    |
| **`<audio>`**  | `<audio data-cmp-src="/audio.ogg" controls/>`                                                                                             |
| **`<source>`** | `<audio controls><source data-cmp-src="audio-consent.ogg" type="audio/ogg"><source data-cmp-src="audio-li.ogg" type="audio/ogg"></audio>` |
| **`<track>`**  | `<video width="320" height="240" controls><source data-cmp-src="video.mp4" type="video/mp4"><track data-cmp-src="subtitles.vtt"></video>` |


# Conditionnement d'un script distant via un Tag Manager

La méthode de conditionnement décrite à la page précédente est utilisable via un Tag Manager et la méthode reste la même à ceci près qu'il faut déclencher manuellement du traitement de la pile via la fonction dédiée suivante.

```markup
<script>try{Sddan.cmp.triggerTM();}catch(e){}</script>
```

{% hint style="danger" %}
Cette fonctionnalité étant intégrée au sein de la CMP, elle ne fonctionnera que si la CMP est chargée sur la page.
{% endhint %}

{% hint style="info" %}
Important : Cette méthode permet une grande simplification technique des conditionnements. Néanmoins, il est important de garder en tête qu'une expertise juridique est nécessaire pour déterminer comment les réaliser vous-mêmes.

\
Pour chaque tag/balise, il faut :

* Étudier l’éventuelle présence de traceurs non exemptés (cookies, indexdb, local storage…) (Directive ePrivacy)
* Évaluer les traitements de données personnelles et le cas échéant les finalités poursuivies par vos partenaires et leurs bases légales respectives (RGPD)
* Déterminer si le tag/balise est automatiquement pris en charge par vos partenaires via les API de la CMP (exemple : le « Consent Mode » de Google et de Microsoft Bing)

N'hésitez pas à solliciter nos équipes pour que nous paramétrions ces conditionnements pour vous : <https://cmp.docs.sirdata.net/gestion-des-scripts/prestations-conditionnement-tags>
{% endhint %}

### Méthode <a href="#configuration" id="configuration"></a>

{% hint style="info" %}
Procédez comme décrit à la page précédente mais ajoutez la fonction ci-dessus :

* Soit à chaque tag que vous souhaitez conditionner
* Soit une seule fois en tant que dernier script chargé par le Tag Manager
  {% endhint %}

```markup
<script src="https://www.exemple.com/script.js"></script>
```

devient dans le Tag Manager :

```markup
<script data-cmp-src="https://www.exemple.com/script.js"></script>
<script>try{Sddan.cmp.triggerTM();}catch(e){}</script>
```

Si le tag est inséré en JavaScript :

```markup
<script>
(function() {
    var s = document.createElement('script');
    s.type = 'text/javascript';
    s.async = true;
    s.src = 'https://www.example.com';
    var _head = document.head || document.getElementsByTagName("head")[0];
    _head.appendChild(s);
})();
</script>
```

devient dans le Tag Manager :

```markup
<script>
(function() {
    var s = document.createElement('script');
    s.type = 'text/javascript';
    s.async = true;
    s.setAttribute('data-cmp-src','https://www.example.com');
    var _head = document.head || document.getElementsByTagName("head")[0];
    _head.appendChild(s);
})();
</script>
<script>try{Sddan.cmp.triggerTM();}catch(e){}</script>
```

{% hint style="warning" %}
L'ensemble des fonctionnalités avancées décrites plus loin est disponible pour les tags conditionnés dans votre page principale ou via le Tag Manager.
{% endhint %}

## Cas spécifique Google Tag Manager

Il est possible de conditionner rapidement et facilement chaque tag ainsi qu'expliqué ci-dessus via l'attribut `data-cmp-src` et de ne déclencher qu'une seule fois la fonction `Sddan.cmp.triggerTM()` en dernier script avec une priorité inférieure.

{% hint style="warning" %}
Attention : il s'agit de la méthode simplifiée, utile pour les balise HTML seulement. Si vous cherchez à conditionner des balises automatisées de Google Tag Manager (Analytics, Ads...) en plus de balises HTML merci de vous reporter à la section suivante "Conditionnement d'une balise via Google Tag Manager"
{% endhint %}

![pour chaque script cochez "Compatible avec document.write"](/files/-MZy-OSFtx7oERpeUU-g)

{% hint style="danger" %}
Attention : vous devez IMPERATIVEMENT cocher la case "Compatible avec document.write"
{% endhint %}

{% tabs %}
{% tab title="Tag 1" %}

```markup
<script data-cmp-src="https://www.example2.com/script.js"></script>
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Tag 2" %}

```markup
<script data-cmp-src="https://www.example3.com/script.js"></script>
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Tag X" %}

```markup
<script data-cmp-src="https://www.exampleX.com/script.js"></script>
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Dernier tag" %}

```markup
<script>try{Sddan.cmp.triggerTM();}catch(e){}</script>
```

{% endtab %}
{% endtabs %}

Ce nouveau tag ajouté doit être paramétré comme suite dans GTM :

![Paramétrage de la fonction de conditionnement en priorité -10](/files/-MXbOnjmoUqkFzlj73H-)


# Conditionnement d'un script via Google Tag Manager

Méthode avancée

La CMP intelligente de Sirdata est programmée pour détecter l'existence d'un dataLayer dédié à Google Tag Manager (GTM) ou en créer un pour injecter dans GTM les signaux de choix (non-choix/consentement/refus/opposition de l'utilisateur).

{% hint style="warning" %}
Vous n'avez rien à modifier sur votre site, la CMP est autonome.
{% endhint %}

La CMP injecte une fois par page un événement de "consentement" ("sirdataConsent") si l'utilisateur accepte déjà accepté les cookies (ou réside hors Europe), et/ou de "non-consentement" ("sirdataNoConsent") si l'utilisateur a refusé les cookies. Si l'utilisateur n'a pas encore fait de choix, un événement intermédiaire de non choix ("sirdataNoChoice") sera envoyé. Toutefois les deux événement sirdataConsent et sirdataNoConsent peuvent être envoyés sur une même page en cas de modification du choix par l'utilisateur.

{% hint style="info" %}
Attention donc à bien manipuler les événements si vous souhaitez mettre en place des conditionnements complexes : en fonction du choix et des modifications éventuelles de choix sur une même page il peut y avoir 2 événements liés au choix : sirdataConsent et sirdataNoConsent.
{% endhint %}

La CMP va également injecter dans GTM toutes les informations d'environnement et de choix pour permettre de mettre en œuvre la granularité des bases légales par finalité.

La stratégie de base pour rapidement bloquer les tags (balises) utilisant des cookies consiste donc à conditionner les balises au consentement ("événement"), tandis que la stratégie évoluée consiste à utiliser les informations transmises ("variables") pour vérifier la validité du consentement pour un partenaire en particulier par exemple.

{% hint style="info" %}
Important : Cette méthode permet une grande simplification technique des conditionnements. Néanmoins, il est important de garder en tête qu'une expertise juridique est nécessaire pour déterminer comment les réaliser vous-mêmes.

\
Pour chaque tag/balise, il faut :

* Étudier l’éventuelle présence de traceurs non exemptés (cookies, indexdb, local storage…) (Directive ePrivacy)
* Évaluer les traitements de données personnelles et le cas échéant les finalités poursuivies par vos partenaires et leurs bases légales respectives (RGPD)
* Déterminer si le tag/balise est automatiquement pris en charge par vos partenaires via les API de la CMP (exemple : le « Consent Mode » de Google et de Microsoft Bing)

N'hésitez pas à solliciter nos équipes pour que nous paramétrions ces conditionnements pour vous : <https://cmp.docs.sirdata.net/gestion-des-scripts/prestations-conditionnement-tags>
{% endhint %}

## 1) Création des événements

Dans votre compte GTM, rendez-vous dans la section "Déclencheurs" de votre espace de travail :

![](/files/-M_RIHQd1WywWbU4dnno)

Cliquez sur "Nouveau", puis paramétrez un premier événement personnalisé "Sirdata Consent" en sélectionnant un type de déclencheur "événement personnalisé" et en utilisant le nom d'événement "sirdataConsent" (sans majuscule initiale ni espace), comme suit :

![](/files/-M_RIxRfPK02G8slBpkD)

Enregistrez et répétez l'opération pour paramétrer un second événement personnalisé nommé "Sirdata No Consent", en sélectionnant un type de déclencheur "événement personnalisé" et en utilisant le nom d'événement "sirdataNoConsent" (sans majuscule initiale ni espace), comme suit :

![](/files/-M_RJeNeqyYohqwAOyf0)

Vous avez désormais 2 événements à votre disposition, qui permettront à la CMP de piloter automatiquement vos tags.

![](/files/-M_RJq1gU0QMoXB_tVm7)

## 2) Conditionnement d'un tag

Rendez-vous maintenant dans la section "Balises" ou vous gérez vos tags :

![](/files/-M_RK8L6gudOH8wMECtI)

Éditez un tag existant ou créez-en un nouveau, en utilisant la balise (tag) de votre choix et en utilisant la deuxième section ("Déclenchement") pour ne déclencher la balise qu'en cas de consentement (cf. événement "Sirdata Consent" créé à l'étape 1) ou au contraire en cas non consentement si par exemple vous souhaitez déclencher un tag sans cookie en l'absence de consentement.

![](/files/-Mezt2VTc9skljGv6I-Q)

Il est bien entendu possible d'utiliser ce déclencheur en complément d'autres déclencheurs ou conditions externes à la CMP.

Votre tag est désormais conditionné et ne sera plus déclenché sans consentement préalable par exemple. C'est l'étape majeure, et nous vous conseillons ici de répéter cette opération pour tous les tags qui le nécessitent.

Ensuite, vous pouvez utiliser les informations envoyées par la CMP et créer des paramètres granulaires pour aller plus loin dans le contrôle.

## 3) Création de paramètres granulaires

La CMP intelligente de Sirdata transmet à GTM les signaux de choix conformément au standard du [TCF de l'IAB Europe](https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/IAB%20Tech%20Lab%20-%20CMP%20API%20v2.md) :

| Paramètre                        | Valeur                                                                                                                                                                              |
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| sirdataGdprApplies               | Paramètre GDPR du TCF de l'IAB Europe : 1 si utilisateur soumis au RGPD, 0 sinon                                                                                                    |
| sirdataProviders                 | <p>ID des partenaires Google bénéficiant d'un consentement</p><p>Valeurs encadrées et séparées par des pipes. Exemple :</p>                                                         |
| sirdataVendors                   | <p>ID des partenaires IAB bénéficiant d'un consentement.</p><p><br>Valeurs encadrées et séparées par des pipes. Exemple :</p>                                                       |
| sirdataVendorsLI                 | <p>ID des partenaires IAB ayant établi un intérêt légitime.</p><p><br>Valeurs encadrées et séparées par des pipes. Exemple :</p>                                                    |
| sirdataExtraVendors              | <p>ID des partenaires Sirdata bénéficiant d'un consentement.</p><p><br>Valeurs encadrées et séparées par des pipes. Exemple :</p>                                                   |
| sirdataExtraVendorsLI            | <p>ID des partenaires Sirdata ayant établi un intérêt légitime.</p><p><br>Valeurs encadrées et séparées par des pipes. Exemple :</p>                                                |
| sirdataExtraPurposes\*           | <p>Liste des IDs des finalités Sirdata\* pour lesquelles l'utilisateur a donné son consentement.</p><p>Valeurs encadrées et séparées par des pipes. Exemple :</p>                   |
| sirdataExtraPurposesLI\*         | <p>Liste des IDs des finalités Sirdata\* pour lesquelles un intérêt légitime a été établi.</p><p>Valeurs encadrées et séparées par des pipes. Exemple :</p>                         |
| sirdataPurposes\*\*              | <p>Liste des IDs des finalités TCF\*\* pour lesquelles l'utilisateur a donné son consentement.</p><p>Valeurs encadrées et séparées par des pipes. Exemple :</p>                     |
| sirdataPurposesLI\*\*            | <p>Liste des IDs des finalités TCF\*\* pour lesquelles un intérêt légitime a été établi.</p><p>Valeurs encadrées et séparées par des pipes. Exemple :</p>                           |
| sirdataSpecialFeatures           | <p>Liste des IDs des fonctionnalités spéciales pour lesquelles l'utilisateur a donné son consentement.</p><p>Valeurs encadrées et séparées par des pipes. Exemple :</p>             |
| sirdataPublisherPurposes         | <p>Liste des IDs des finalités standard pour lesquelles vous avez obtenu le consentement de l'utilisateur.<br></p><p>Valeurs encadrées et séparées par des pipes. Exemple :</p>     |
| sirdataPublisherPurposesLI       | <p>Liste des IDs des finalités standard pour lesquelles vous avez établi un intérêt légitime.</p><p>Valeurs encadrées et séparées par des pipes. Exemple :</p>                      |
| sirdataPublisherCustomPurposes   | <p>Liste des IDs des finalités NON standard pour lesquelles vous avez obtenu le consentement de l'utilisateur.<br></p><p>Valeurs encadrées et séparées par des pipes. Exemple :</p> |
| sirdataPublisherCustomPurposesLI | <p>Liste des IDs des finalités NON standard pour lesquelles vous avez établi un intérêt légitime.</p><p>Valeurs encadrées et séparées par des pipes. Exemple :</p>                  |
| sirdataTcString                  | TC String du TCF de l'IAB Europe                                                                                                                                                    |

\*Finalités gérées par Sirdata :

1. Communications électroniques (email, fax, SMS/MMS ou appels automatisés)
2. Courrier postal et téléprospection
3. Publicités personnalisées à la TV (TV segmentée)
4. Publicités personnalisées à la radio (radio segmentée)

\*\*Finalités gérées par le TCF :

1. Stocker et/ou accéder à des informations sur un appareil
2. Utiliser des données limitées pour sélectionner la publicité
3. Créer des profils pour la publicité personnalisée
4. Utiliser des profils pour sélectionner des publicités personnalisées
5. Créer des profils de contenus personnalisés
6. Utiliser des profils pour sélectionner des contenus personnalisés
7. Mesurer la performance des publicités
8. Mesurer la performance des contenus
9. Comprendre les publics par le biais de statistiques ou de combinaisons de données provenant de différentes sources
10. Développer et améliorer les services
11. Utiliser des données limitées pour sélectionner le contenu

Pour les utiliser, rendez-vous à la section "Variables" :

![](/files/-M_RR_5nbpJ94LoOzEp_)

Dans la section "Variables définies par l'utilisateur" cliquez sur "nouvelle" et optez pour le type de variable "Variable de couche de donnée" :

![](/files/-M_RSRM8TFBqqVuvgGGZ)

Utilisez alors comme nom de variable un des paramètres du tableau ci-dessus. Exemple pour le paramètre sirdataTcString :

![](/files/-M_RSefeJQQP9vQlY6hA)

Enregistrer et rendez-vous dans la section "événement" ou "balise" pour utiliser ces paramètres.

## 4) Utilisation de paramètres granulaires pour les événements

Vous pouvez créer des déclencheurs d'événement complexes basés sur les événements sirdataConsent et sirdataNoConsent envoyés à GTM, en les couplant avec ces variables crées au point précédent.

Par exemple pour conditionner un tag de publicité personnalisée à l'obtention préalable d'un consentement pour les finalités 1, 3 et 4 et le partenaire Google (id 755), ainsi qu'un intérêt légitime établi pour la finalité 2 et ce même partenaire :

![](/files/-M_RVFNtvOel1veiarpH)

Utilisez alors ces déclencheurs pour déclencher les tags spécifiques pour lesquels ils ont été créés.

## 5) Utilisation de paramètres granulaires pour les balises

Pour transmettre des informations dans vos tags, comme par exemple la TC String, utilisez dans vos balises les noms de variables que vous avez crées, entourées de double-crochet.

Par exemple si vous avez créée une variable sirdataTcString, vous pouvez l'utiliser dans un tag en l'injectant comme ceci : {{sirdataTcString}}

![](/files/-M_RXnJ2fG2_FmycKiWi)

{% hint style="info" %}
Vous pouvez consulter la section dédiée à la [proxyfication cookieless ](https://server-side.docs.sirdata.net/)pour comprendre si nécessaire le fonctionnement des groupes de déclencheurs, ou des exceptions de déclenchement
{% endhint %}


# Conditionnement d'un script local

La logique de conditionnement décrite aux pages précédentes est utilisable pour les fonctions. Il suffit de wrapper cette dernière pour l'appeler de la même manière qu'un script distant.

{% hint style="info" %}
Important : Cette méthode permet une grande simplification technique des conditionnements. Néanmoins, il est important de garder en tête qu'une expertise juridique est nécessaire pour déterminer comment les réaliser vous-mêmes.

\
Pour chaque tag/balise, il faut :

* Étudier l’éventuelle présence de traceurs non exemptés (cookies, indexdb, local storage…) (Directive ePrivacy)
* Évaluer les traitements de données personnelles et le cas échéant les finalités poursuivies par vos partenaires et leurs bases légales respectives (RGPD)
* Déterminer si le tag/balise est automatiquement pris en charge par vos partenaires via les API de la CMP (exemple : le « Consent Mode » de Google et de Microsoft Bing)

N'hésitez pas à solliciter nos équipes pour que nous paramétrions ces conditionnements pour vous : <https://cmp.docs.sirdata.net/gestion-des-scripts/prestations-conditionnement-tags>
{% endhint %}

## Exemple 1

```markup
<script>
    console.log("demo");
</script>
```

devient, si elle est chargée dans la page principale :

```markup
<script>
function myScript() {
    console.log("demo");
}
</script>
<script data-cmp-src="myScript"></script>
```

ou, si elle est chargée via un Tag Manager :

```markup
<script>
function myScript() {
    console.log("demo");
}
</script>
<script data-cmp-src="myScript"></script>
<script>try{Sddan.cmp.triggerTM();}catch(e){}</script>
```

## Exemple 2

```markup
<script>
(function() {
    console.log("demo");
})();
</script>
```

devient, si elle est chargée dans la page principale :

```markup
<script>
function myScript() {
    (function() {
        console.log("demo");
    })();
}
</script>
<script data-cmp-src="myScript"></script>
```

ou, si elle est chargée via un Tag Manager :

```markup
<script>
function myScript() {
    (function() {
        console.log("demo");
    })();
}
</script>
<script data-cmp-src="myScript"></script>
<script>try{Sddan.cmp.triggerTM();}catch(e){}</script>
```

{% hint style="warning" %}
L'ensemble des fonctionnalités avancées décrites à la page suivante est disponible pour ces scripts conditionnés dans votre page principale ou via le Tag Manager.
{% endhint %}


# Mécanisme de refus en Belgique

Contrairement à la France, il n'existe actuellement aucune recommandation claire de l'Autorité de protection des données (APD) en Belgique concernant l'obligation d'inclure un bouton « Refuser » sur le premier écran des bannières de cookies.

Cette incertitude réglementaire laisse à l'éditeur la décision d'activer ou non le mécanisme de refus dans la CMP.

Néanmoins, bien que cette option ne soit pas obligatoire en Belgique à ce stade, nous recommandons de l'activer via le portail afin d'anticiper les évolutions réglementaires et de limiter les risques potentiels.

Vous pouvez l'activer dans la plateforme <https://www.abconsent.com/home>

{% hint style="info" %}
Configurations > Mettre à jour > Mettre à jour les paramètres avancés.
{% endhint %}


# Configuration avancée

Si nécessaire, vous pouvez procéder à un conditionnement plus spécifique en renseignant les informations que vous souhaitez que la CMP vérifie avant de déclencher le chargement du script.

Vous trouverez dans le tableau ci-dessous la liste des attributs qui peuvent être renseignés :

| **ATTRIBUT**                              | **DESCRIPTION**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **data-cmp-src (requis)**                 | <p>URL du script à conditionner (ex : <code><https://www.abc.com/script.js></code>).<br>Il est également possible de renseigner le nom d'une fonction JavaScript à exécuter, préalablement définie sur la page (ex : <code>loadScript</code>).</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **data-cmp-vendor**                       | <p>ID du partenaire IAB à vérifier (ex : <code>53</code>).<br>Lorsqu'il est renseigné, une liste de finalités et/ou de fonctionnalités spéciales doit être également spécifiée.</p><p>Exemples :</p><ul><li>Amazon Advertising : <code>793</code></li><li>Awin : <code>907</code></li><li>BeOp : <code>666</code></li><li>Criteo : <code>91</code></li><li>Dailymotion : <code>573</code></li><li>Digiteka : <code>343</code></li><li>Effiliation / Effinity : <code>402</code></li><li>Google (Ad Manager, AdSense, Ads, Tag Manager, ...) : <code>755</code></li><li>Impactify : <code>606</code></li><li>Invibes : <code>436</code></li><li>Kwanko : <code>702</code></li><li>Microsoft : <code>1126</code></li><li>Opti Digital : <code>915</code></li><li>Outbrain : <code>164</code></li><li>Rakuten Marketing LLC : <code>60</code></li><li>Seedtag : <code>157</code></li><li>Taboola : <code>42</code></li><li>Teads : <code>132</code></li></ul><p><a href="https://iabeurope.eu/vendor-list/">Voir la liste complète des partenaires IAB</a></p> |
| **data-cmp-provider**                     | <p>ID du partenaire Google à vérifier.</p><p>Exemples :</p><ul><li>Facebook : <code>89</code></li><li>AT Internet : <code>587</code></li><li>Tradedoubler AB : <code>486</code></li></ul><p><a href="https://choices-preprod.consentframework.com/api/v1/public/list/google-ac">Voir la liste complète des partenaires Google</a></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **data-cmp-extra-vendor**                 | <p>ID du partenaire Sirdata à vérifier.<br>Lorsqu'il est renseigné, une liste de finalités doit être également spécifiée.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **data-cmp-extra-purposes\***             | <p>Liste des IDs des finalités Sirdata\* pour lesquelles le partenaire spécifié demande le consentement de l'utilisateur (ex : <code>1,3,4</code>).</p><p><strong>ATTENTION : <code>data-cmp-extra-vendor</code> doit également être spécifié.</strong></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **data-cmp-extra-purposes-li\***          | <p>Liste des IDs des finalités Sirdata\* pour lesquelles le partenaire spécifié se repose sur son intérêt légitime (ex : <code>2,5</code>).<br><strong>ATTENTION : <code>data-cmp-extra-vendor</code> doit également être spécifié.</strong></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **data-cmp-purposes\*\***                 | <p>Liste des IDs des finalités TCF\*\* pour lesquelles le partenaire spécifié demande le consentement de l'utilisateur (ex : <code>1,3,4</code>).</p><p><strong>ATTENTION : <code>data-cmp-vendor</code> doit également être spécifié.</strong></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **data-cmp-purposes-li\*\***              | <p>Liste des IDs des finalités TCF\*\* pour lesquelles le partenaire spécifié se repose sur son intérêt légitime (ex : <code>2,5</code>).<br><strong>ATTENTION : <code>data-cmp-vendor</code> doit également être spécifié.</strong></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **data-cmp-special-features**             | <p>Liste des IDs des fonctionnalités spéciales pour lesquelles le partenaire spécifié demande le consentement de l'utilisateur (ex : <code>1</code>).<br><strong>ATTENTION : <code>data-cmp-vendor</code> doit également être spécifié.</strong></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **data-cmp-publisher-purposes**           | Liste des IDs des finalités pour lesquelles vous demandez le consentement de l'utilisateur.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **data-cmp-publisher-purposes-li**        | Liste des IDs des finalités pour lesquelles vous vous reposez sur votre intérêt légitime.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **data-cmp-publisher-custom-purposes**    | Liste des IDs des finalités personnalisées pour lesquelles vous demandez le consentement de l'utilisateur.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| **data-cmp-publisher-custom-purposes-li** | Liste des IDs des finalités personnalisées pour lesquelles vous vous reposez sur votre intérêt légitime.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **data-cmp-require-choice**               | Booléen (`true` ou `false`) permettant d'indiquer si la CMP doit attendre que l'utilisateur valide ses choix avant de déclencher la vérification.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| **data-cmp-disable-check**                | <p>Booléen (<code>true</code> ou <code>false</code>) permettant d'indiquer si la CMP doit désactiver le contrôle par défaut sur la finalité 1.<br><strong>NOTE : Cela n'est fonctionnel que si aucune condition spécifique sur une finalité ou un partenaire n'est définie.</strong></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **data-cmp-parent**                       | Si le script conditionné doit être chargé à un endroit précis de la page, il est possible d'indiquer l'ID de l'élément HTML parent devant le contenir (uniquement valable pour les tags `<script>`).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **data-cmp-fallback-src**                 | Permet de définir un script alternatif lorsque les conditions de chargement de `data-cmp-src` ne sont pas remplies. Ce script peut être conditionné avec les mêmes attributs listés ci-dessus en les préfixant avec `data-cmp-fallback-` au lieu de `data-cmp-`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **${SDDAN\_GDPR\_APPLIES}**               | Macro à utiliser dans l'url appelée via l'attribut data-cmp-src pour ajouter le paramètre GDPR du TCF de l'IAB Europe                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **${SDDAN\_GDPR\_CONSENT}**               | Macro à utiliser dans l'url appelée via l'attribut data-cmp-src pour ajouter la TC String du TCF de l'IAB Europe                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

\*Finalités gérées par Sirdata :

1. Communications électroniques (email, fax, SMS/MMS) personnalisées
2. Courrier postal et téléprospection personnalisés
3. Publicités personnalisées à la TV (TV segmentée)
4. Publicités personnalisées à la radio (radio segmentée)
5. Utilisation de la technologie Utiq, alimentée par votre opérateur télécom
6. Publicité ciblée par GPS
7. Pixels de suivi d'ouverture et d'interaction des emails
8. Rejeu de session (enregistrement de navigation)
9. Collecte automatique d'identifiants sur vos terminaux
10. Traitement des données d'identification
11. Transmission inter-contextes des données digitales
12. Transmission inter-contextes des données de géolocalisation
13. Transmission inter-contextes des données de prospection commerciale
14. Transmission inter-contextes des données audiovisuelles

\*\*Finalités gérées par le TCF :

1. Stocker et/ou accéder à des informations sur un appareil
2. Utiliser des données limitées pour sélectionner la publicité
3. Créer des profils pour la publicité personnalisée
4. Utiliser des profils pour sélectionner des publicités personnalisées
5. Créer des profils de contenus personnalisés
6. Utiliser des profils pour sélectionner des contenus personnalisés
7. Mesurer la performance des publicités
8. Mesurer la performance des contenus
9. Comprendre les publics par le biais de statistiques ou de combinaisons de données provenant de différentes sources
10. Développer et améliorer les services
11. Utiliser des données limitées pour sélectionner le contenu

{% hint style="danger" %}
Lorsqu'un partenaire et des finalités sont renseignés, cela supprime le contrôle par défaut sur la finalité 1. Si vous souhaitez conserver le contrôle sur la finalité 1, veuillez vous assurer de l'inclure dans l'attribut `data-cmp-purposes`.
{% endhint %}

{% hint style="info" %}
Important : Cette méthode permet une grande simplification technique des conditionnements. Néanmoins, il est important de garder en tête qu'une expertise juridique est nécessaire pour déterminer comment les réaliser vous-mêmes.

\
Pour chaque tag/balise, il faut :

* Étudier l’éventuelle présence de traceurs non exemptés (cookies, indexdb, local storage…) (Directive ePrivacy)
* Évaluer les traitements de données personnelles et le cas échéant les finalités poursuivies par vos partenaires et leurs bases légales respectives (RGPD)
* Déterminer si le tag/balise est automatiquement pris en charge par vos partenaires via les API de la CMP (exemple : le « Consent Mode » de Google et de Microsoft Bing)

N'hésitez pas à solliciter nos équipes pour que nous paramétrions ces conditionnements pour vous : <https://cmp.docs.sirdata.net/gestion-des-scripts/prestations-conditionnement-tags>
{% endhint %}


# Exemples

### Google AdSense

{% tabs %}
{% tab title="Tag avant conditionnement" %}

```markup
<script src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
```

{% endtab %}
{% endtabs %}

devient :

{% tabs %}
{% tab title="Tag modifié avec conditionnement" %}

```markup
<script
    data-cmp-src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"
    data-cmp-vendor="755"
    data-cmp-purposes="1,3,4"
    data-cmp-purposes-li="2,7,9,10">
</script>
```

{% endtab %}
{% endtabs %}

### Google Ad Manager

Conditionnement Google Ad Manager avec Limited Ads en fallback

{% tabs %}
{% tab title="Tag avant conditionnement" %}

```markup
<script src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
```

{% endtab %}
{% endtabs %}

devient :

{% tabs %}
{% tab title="Tag modifié avec conditionnement et Limited Ads en fallback" %}

```markup
<script
    data-cmp-src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"
    data-cmp-vendor="755"
    data-cmp-purposes="1,3,4"
    data-cmp-purposes-li="2,7,9,10"
    data-cmp-fallback-src="https://pagead2.googlesyndication.com/tag/js/gpt.js"
    data-cmp-fallback-vendor="755"
    data-cmp-fallback-purposes-li="2,7,9,10">
</script>
```

{% endtab %}
{% endtabs %}

## Autres exemples

### Exemple 1

Conditionnement d'un script du partenaire 53 nécessitant le consentement pour les finalités 1 et 3

```markup
<script data-cmp-src="https://www.example.com/script.js"
       data-cmp-vendor="53"
       data-cmp-purposes="1,3">
</script>
```

###

### Exemple 2

Conditionnement d'un script du partenaire 81 nécessitant le consentement pour la finalité 1 et l'intérêt légitime établi pour la finalité 6

```markup
<script data-cmp-src="https://www.example.com/script.js"
       data-cmp-vendor="81"
       data-cmp-purposes="1"
       data-cmp-purposes-li="6">
</script>
```

###

### Exemple 3

Conditionnement d'un pixel du partenaire 29 nécessitant le consentement pour les finalités 1 et 9

```markup
<img data-cmp-src="https://www.example.com/pixel.png"
       data-cmp-vendor="29"
       data-cmp-purposes="1,9"
       width="1" height="1"/>
```

### Exemple 4

Conditionnement d'un script nécessitant le consentement pour la finalité 1 avec chargement d'un script alternatif en cas de non-consentement

```markup
<script data-cmp-src="https://www.example.com/script.js"
       data-cmp-fallback-src="https://www.example.com/script_noconsent.js">
</script>
```


# Exemple GTM : Google Ads User-provided Data Event

Conditionnement avancé dans Google Tag Manager

Ce guide explique comment conditionner la balise **Google Ads User-provided Data Event** dans Google Tag Manager (GTM) à l'aide des variables et événements injectés par la CMP Sirdata.

{% hint style="info" %}
La CMP Sirdata pousse automatiquement les choix de consentement dans le dataLayer GTM via l'événement `sirdataConsent`. Les variables `sirdataExtraPurposes` et `sirdataExtraVendors` contiennent respectivement les finalités Sirdata et les partenaires Sirdata consentis, au format `|ID|` (ex : `|9|`, `|10|`, `|101|`).
{% endhint %}

## 1) Créer la variable « Données fournies par l'utilisateur »

Dans GTM, créez une variable de type **Google Ads User-provided Data** :

1. **Type de variable** : Google Ads User-provided Data
2. **Mode de collecte** : Automatic collection ou définissez manuellement les règles de récupération

<figure><img src="/files/RGBnyPWCzaWpWPSBkHR5" alt=""><figcaption></figcaption></figure>

## 2) Créer la variable « sirdataExtraPurposes »

Créez une variable de type **Variable de couche de données** (Data Layer Variable) :

1. **Nom de la variable de couche de données** : `sirdataExtraPurposes`

<figure><img src="/files/D3tL30nkpSHz3VxBLA1Q" alt=""><figcaption></figcaption></figure>

## 3) Créer la variable « sirdataExtraVendors »

Créez une variable de type **Variable de couche de données** (Data Layer Variable) :

1. **Nom de la variable de couche de données** : `sirdataExtraVendors`

<figure><img src="/files/yUWx5xUIi9QSnDrWiIjN" alt=""><figcaption></figcaption></figure>

## 4) Créer le déclencheur « sirdataConsent »

Créez un déclencheur de type **Événement personnalisé** (Custom Event) :

1. **Nom de l'événement** : `sirdataConsent`
2. Sélectionnez l'option **Certains événements personnalisés**
3. Ajoutez les conditions suivantes :
   * `{{sirdataExtraPurposes}}` **contient** `|9|` — Collecte automatique d'identifiants sur les terminaux
   * `{{sirdataExtraPurposes}}` **contient** `|10|` — Traitement des données d'identification
   * `{{sirdataExtraVendors}}` **contient** `|101|` — Google Customer Match, Enhanced & Offline Conversions

{% hint style="warning" %}
Les trois conditions doivent être réunies (ET logique) pour que le déclencheur s'active.
{% endhint %}

<figure><img src="/files/ZvmctQvFHXknGvgMFXS8" alt=""><figcaption></figcaption></figure>

## 5) Ajouter la balise « Google Ads User-provided Data Event »

Créez une balise de type **Google Ads User-provided Data Event** :

1. **ID de compte Google Ads** : renseignez votre ID de compte
2. **Données fournies par l'utilisateur** : sélectionnez la variable créée à l'étape 1
3. **Déclencheur** : sélectionnez le déclencheur créé à l'étape 4

<figure><img src="/files/VaJPT5TVJ4MJ461x0Nr3" alt=""><figcaption></figcaption></figure>

La balise ne se déclenchera désormais que lorsque l'utilisateur aura consenti aux finalités 9 et 10 de Sirdata ainsi qu'au partenaire Google Customer Match (ID 101).


# Transmission de la TC String

Si vos partenaires vous le demandent, vous pouvez ajouter à vos script distants que vous conditionnez à l'aide de l'attribut data-cmp-src une macro pour transmettre la [TC String](https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/IAB%20Tech%20Lab%20-%20Consent%20string%20and%20vendor%20list%20formats%20v2.md) générée par la CMP conformément au standard TCF de l'IAB Europe.

{% tabs %}
{% tab title="Exemple pour un script distant" %}

```markup
<script src="https://www.exemple.com/script.js?gdpr=&gdpr_consent=" type="text/javascript"></script>
```

{% endtab %}
{% endtabs %}

devient alors :

```markup
<script data-cmp-src="https://www.exemple.com/script.js?gdpr=${SDDAN_GDPR_APPLIES}&gdpr_consent=${SDDAN_GDPR_CONSENT}" type="text/javascript"></script>
```

Les macros seront automatiquement replacée par les valeurs adéqates. Dans l'exemple ci-dessus par exemple le tad sera appelé sur l'URL

```markup
https://www.exemple.com/script.js?gdpr=1&gdpr_consent=CPEBG-2PEv0r8BcAFBENBWCgAP_AAH_AAAqIHpQJwABAALAAeABUADIAIIAUgBUAC2AGgAagBEAC3AGEAYgA5ACEAE6ALgAY4A9AB-gEDAIQAR0AngBVwC6gGBAMIAaIA2gCPQEvAJiAT-AowBcwC8wGLgMZAZIB6UBUABYADwAKgAZABBADQANQAiABiAEIAP0AgYBCACrgF1AMCAaIA2gCPQExALzAZIAA
```


# Prestations de conditionnement

L'accompagnement chez Sirdata est entièrement gratuit car il fait partie intégrante de notre service.

De ce fait, toutes les questions relatives à la CMP, à la "Privacy" de manière générale et toutes les questions techniques sur les conditionnements sont traitées par nos équipes.

Dans ce guide technique, nous mettons à votre disposition des méthodes pour conditionner vos tags en utilisant l'API du TCF ou en utilisant la méthode universelle et simplifiée de Sirdata.

Ces conditionnements peuvent être réalisés facilement par nos éditeurs et fonctionnent dans tous les cas de figures (que ce soit pour des scripts en dur, des scripts dans des plugins, ou même des scripts dans des Tag Manager...).

Pour recevoir de l'aide sur le conditionnement d'un tag, il faut systématiquement nous préciser :\
\- le tag en question\
\- l'environnement dans lequel il est chargé\
\- le type de conditionnement souhaité

**Demande d’intervention :**

Pour tous les sujets qui sortent de notre périmètre de traitement, vous pouvez souscrire à différentes prestations techniques.

Si vous ne souhaitez pas utiliser vous-même ces méthodes mais que vous préférez que Sirdata se charge de vos conditionnements, vous pouvez nous contacter sur le formulaire suivant :

[Contact Sirdata CMP](https://www.sirdata.com/fr/Consent-Management#FContact)

*Objet* : Prestation de conditionnement\
\&#xNAN;*A renseigner* : Le ou les domaines pour lesquels vous souhaitez qu'un développeur de chez Sirdata intervienne

Un développeur examinera alors votre site pour auditer tous les tags présents : qu'il s'agisse de vos propres tags ou ceux de tiers (partenaires).\
Cette analyse permettra de comprendre chaque traitement et déterminer quels sont les tags utilisant des cookies ou autres traceurs nécessitant un consentement (et donc un conditionnement).

La facturation s'entend par domaine (par site) :

\
A partir de **1 000€ H.T.** : Vous nous donnez accès à votre Tag Manager pour que nos équipes réalisent directement les conditionnements nécessaires.\ <br>


# Exemption

Vous utilisez un outil de mesure d'audience ou d'analytics, et vous vous demandez si les cookies qu'il utilise sont exemptés de consentement... Vous êtes sur la bonne page :)

L'exemption pour les cookies de mesure d'audience est définie dans les Lignes Directrices du 17 septembre 2020.

> ***Cas spécifique des traceurs de mesure d’audience***
>
> *50. La gestion d’un site web ou d’une application requiert presque systématiquement l’utilisation de statistiques de fréquentation et/ou de performance. Ces mesures sont dans de nombreux cas indispensables au bon fonctionnement du site ou de l’application et donc à la fourniture du service. En conséquence, la Commission considère que les traceurs dont la finalité se limite à la mesure de l’audience du site ou de l’application, pour répondre à différents besoins (mesure des performances, détection de problèmes de navigation, optimisation des performances techniques ou de l’ergonomie, estimation de la puissance des serveurs nécessaires, analyse des contenus consultés, etc.) sont strictement nécessaires au fonctionnement et aux opérations d’administration courante d’un site web ou d’une application et ne sont donc pas soumis, en application de l’article 82 de la loi « Informatique et Libertés », à l’obligation légale de recueil préalable du consentement de l’internaute.*
>
> *51. Afin de se limiter à ce qui est strictement nécessaire à la fourniture du service, la Commission souligne que ces traceurs doivent avoir une finalité strictement limitée à la seule mesure de l’audience sur le site ou l’application pour le compte exclusif de l’éditeur. Ces traceurs ne doivent notamment pas permettre le suivi global de la navigation de la personne utilisant différentes applications ou naviguant sur différents sites web. De même, ces traceurs doivent uniquement servir à produire des données statistiques anonymes, et les données à caractère personnel collectées ne peuvent être recoupées avec d’autres traitements ni transmises à des tiers, ces différentes opérations n’étant pas non plus nécessaires au fonctionnement du service.*
>
> *52. Plus généralement, la Commission rappelle que les traitements de mesure d’audience sont des traitements de données à caractère personnel qui sont soumis à l’ensemble des dispositions pertinentes du RGPD.*

En clair soit l'outil utilisé et son paramétrage permettent de bénéficier d'une exemption de consentement pour les cookies, soit il ne doit pas utiliser de cookies sans consentement et il convient :

* de conditionner les tags si le partenaire utilise des tags non dynamiques
* ou d'envoyer un signal au partenaire pour qu'il n'utilise pas de cookies (s'il est capable de recevoir ce signal sans cookie !)

A la date du 25 juin 2021, 5 solutions sont officiellement déclarées par la CNIL comme [exemptée de consentement](https://www.cnil.fr/fr/cookies-solutions-pour-les-outils-de-mesure-daudience) :

![](/files/-Md2n81EipES6bVcfn3d)

{% hint style="info" %}
Vous pouvez donc utiliser une solution de mesure sans cookie, une solution exemptée, une solution exemptée couplée à une solution basée sur le consentement en activant dynamiquement le routage, ou encore une solution sans cookie couplée à une solution avec cookies lorsque l'utilisateur donne son consentement.
{% endhint %}


# AT Internet

Solution exemptée et mesure hybride

La solution Analytics Suite Delta de AT Internet paramétrée selon [ce guide](https://www.cnil.fr/sites/default/files/atoms/files/atinternet_-_guide_de_configuration_-_solution_exemptee_0.pdf) peut utiliser des cookies sans consentement préalable selon la CNIL.

Si vous ne souhaitez utiliser que ce mode exempté, nous vous conseillons de ne pas utiliser la CMP pour l'expliquer à l'utilisateur, mais de séparer l'information et de la loger dans votre page de Vie Privée.

Si vous souhaitez activer la [Mesure Hybride](https://support.piano.io/hc/fr/articles/4467784345362) d'AT Internet, c'est-à-dire utiliser cette version exemptée lorsque l'utilisateur ne donne pas son consentement à une utilisation basée sur le consentement, et utiliser automatiquement plus de données personnelles lorsque l'utilisateur donne son consentement, voici comment ajuster votre tag.

{% hint style="warning" %}
Attention, pour que cette méthode fonctionne vous devez paramétrer votre compte AT Internet en amont pour permettre la conformité avec l'exemption CNIL : paramétrage de l’organisation, définition du strictement nécessaire… Vous trouverez plus d'information dans le guide [AT Internet dédié](https://www.cnil.fr/sites/default/files/atoms/files/atinternet_-_guide_de_configuration_-_solution_exemptee_0.pdf).

Vous devez également Activer le plugin Privacy de Tag Composer (disponible dans la version Javascript **24.0**) dans votre compte AT Internet.
{% endhint %}

Votre tag actuel est composé d'un sript principal smarttag.js, d'une portion d'initialisation et de données qui sont déterminée, puis de la fonction *tag.dispatch()* qui déclenche l'envoi de donnée à AT Internet :

```javascript
<!-- Tag AT Internet principal -->
<script src="//tag.aticdn.net/123456/smarttag.js"></script>

<!-- Init AT Internet et events -->
<script>
var tag = new ATInternet.Tracker.Tag();
tag.page.set({
    name: 'pageName',
});
</script>

<!-- Trigger tag -->
<script>
    tag.dispatch();
</script>
```

Il vous suffit faire transiter l'information de consentement avant le déclenchement dela fonction *tag.dispatch().*

1\) Dans la section partenaire de la configuration de votre CMP, dans votre [console de paramétrage](https://cmp.sirdata.io), vérifiez que vous avez bien activé AT Internet, id 587 dans les Partenaires Google :

![](/files/-MYJiRTs5OCUWcVMIdg3)

2\) Ajustez votre script

a) Supprimez la fonction tag.dispatch();

Si elle est incluse avec le reste du code, supprimez uniquement "*tag.dispatch();*"

```javascript
<script>
var tag = new ATInternet.Tracker.Tag();
tag.page.set({
    name: 'pageName',
});
tag.dispatch();
</script>
```

devient :

```javascript
<script>
var tag = new ATInternet.Tracker.Tag();
tag.page.set({
    name: 'pageName',
});
</script>
```

Si elle est seule supprimez tout également la balise script :

```javascript
<script>
    tag.dispatch();
</script>
```

b) collez ce script dans la page :

```javascript
<script>
function loadAtInternetWithExemption () {
    tag.privacy.setVisitorMode('cnil', 'exempt'); // Visiteur défini en Exempt 
    tag.dispatch();
}
function loadAtInternetWithConsent () {
    tag.privacy.setVisitorOptin(); // Visiteur défini en Optin 
    tag.dispatch();
}
</script>
<script data-cmp-src="loadAtInternetWithConsent" data-cmp-provider="587" data-cmp-fallback-src="loadAtInternetWithExemption"></script>
```

Votre script final est désormais de cette forme :

```javascript
<!-- Tag AT Internet principal -->
<script src="//tag.aticdn.net/123456/smarttag.js"></script>

<!-- Init AT Internet et events -->
<script>
var tag = new ATInternet.Tracker.Tag();
tag.page.set({
    name: 'pageName',
});
</script>

<!-- Trigger w or w/o consent -->
<script>
function loadAtInternetWithExemption () {
    tag.privacy.setVisitorMode('cnil', 'exempt'); // Visiteur défini en Exempt 
    tag.dispatch();
}
function loadAtInternetWithConsent () {
    tag.privacy.setVisitorOptin(); // Visiteur défini en Optin 
    tag.dispatch();
}
</script>
<script data-cmp-src="loadAtInternetWithConsent" data-cmp-provider="587" data-cmp-fallback-src="loadAtInternetWithExemption"></script>
```


# Google Analytics

Pas d'exemption à ce jour

{% hint style="danger" %}
ATTENTION : plusieurs Autorité de Régulation européennes ont estimé que l'utilisation de Google Analytics (a minima Universal Analytics) n'est pas conforme au RGPD, en raison du transfert de données personnelles aux Etats-Unis insuffisamment sécurisé.

Il serait possible, [selon la CNIL et sous condition](https://www.cnil.fr/fr/cookies-et-autres-traceurs/regles/google-analytics-et-transferts-de-donnees-comment-mettre-son-outil-de-mesure-daudience-en-conformite), de mettre ce transfert en conformité, mais nous vous confirmons que le consentement pour les cookie ou l'utilisation du Consent Mode n'ont pas pas d'impact sur la conformité de ce transfert.

Sirdata peut vous accompagner sur ce transfert et la gestion des traceurs via son offre Sirdata Analytic Helper (cf section suivante).
{% endhint %}

A ce jour (23 septembre 2021), la solution Analytics de Google ne fait pas partie de la liste des solutions bénéficiant d'une [exemption de consentement accordée par la CNIL](https://www.cnil.fr/fr/cookies-solutions-pour-les-outils-de-mesure-daudience), et il est donc nécessaire de recueillir un consentement pour les cookies ayant une finalité de mesure d'audience.

Par ailleurs Google poursuivant ses propres finalités publicitaires avec les données collectées, il faut également un consentement pour ses cookies ayant une finalité publicitaire.

Vous devez donc :

* Recueillir un consentement pour les cookies de mesure d'audience
* ET Recueillir un consentement pour les cookies publicitaires

**Il existe une alternative, si vous utilisez le tag gtag.js ou Google Tag Manager (et uniquement dans ce cas) :** **il est possible via la CMP Sirdata d'envoyer à Google des signaux lui indiquant si les cookies sont autorisés pour l'une et/ou l'autre de ces finalités.**

{% hint style="warning" %}
Pour activer l'option ci-dessous, si vous utilisez d'anciennes balises Google, telles que ga.js, analytics.js ou conversion.js, vous devez effectuer une mise à jour vers gtag.js ou Google Tag Manager.
{% endhint %}

Pour laisser Google gérer automatiquement l'utilisation des cookies sans changer vos tags, il vous suffit de vous rendre dans [votre compte](https://cmp.sirdata.io), section "Configuration de la CMP => Editer l'affichage => Paramètre avancés => Extensions => Google, et de cocher la case "Compatibilité Google Ads/Analytics/Tag Manager" :

![](/files/-MaYrrQ0eD5mVK0Yizw4)

C'est tout ce qu'il y a à faire. Voici ci-dessous l'explication des 2 options que cela déclenche.

{% hint style="danger" %}
ATTENTION : à ce jour le CONSENT MODE de Google permet d'éviter le dépôt et l'utilisation de cookies, et de calculer des statitiques modélisées de conversions pour la partie Google Ads, mais pas encore pour la partie de mesure d'audience d'Analytics : les visiteurs qui ne donnent pas leur consentement pour la mesure n'apparaissent pas (encore) dans les vues en "temps réel" ou dans les rapports d'audience.
{% endhint %}

## 1) Le Google Consent Mode pour la partie Analytics

Les éditeurs développant leur propre bandeau cookies ou utilisant une CMP non certifiée peuvent utiliser la version bêta du [Consent Mode de Google](https://support.google.com/analytics/answer/9976101?hl=fr) pour l'ensemble des finalités de mesure et de publicités ci-dessus.

![](/files/-MYJm0K6h46OELMyzZlb)

{% hint style="success" %}
Avec l'option de comptabilité Google Analytics/Google Tag Manager/Google Ads activée, la CMP de Sirdata prend automatiquement en charge la gestion de ces signaux pour la partie Analytics. En cas de non consentement aucun cookie Google Analytics ne sera pas déposé.
{% endhint %}

Elle ne prend pas en charge la partie publicitaire; nous la jugeons moins granulaire et efficace que la solution basée sur le TCF (voir ci-dessous) compatible avec tous les produits publicitaires Google et pas uniquement Google Ads.

Rendez vous sur [cette page ](https://developers.google.com/gtagjs/devguide/consent)pour découvrir comment utiliser les balises adéquates si vous souhaitez n'utiliser que les fonctionnalité du Consent Mode en dehors de la CMP, à vos risques et périls.

## 2) La solution TCF, réservée aux CMP Premiums Certifiées, pour la partie publicitaire

Grâce à un processus long de conformité nous avons l'avantage d'être certifiés conformes au TCF v2.3 et nous prenons en charge le mode de[ compatibilité des produits Google](https://support.google.com/admanager/answer/9461778?hl=fr#zippy=%2Cquels-produits-publicitaires-google-int%C3%A8grent-la-version-du-tcf-de-liab) avec ce Framework.

Ce mode de compatibilité est beaucoup plus granulaire et fiable à nos yeux que le Consent Mode, et permet une meilleure prise en charge dans la galaxie des produits Google, notamment avec :

![](/files/-MYJnzi3ngqgO-XegORX)

Pour ce qui concerne la gestion automatique des cookies de mesure de conversions publicitaires de Google Ads, la CMP Sirdata prend en charge [cette option](https://support.google.com/analytics/answer/10022331?hl=fr) lorsque l'option de compatibilité Google Ads est activée:

![](/files/-MYJoqlb_4mIm4aJYvdc)

{% hint style="success" %}
Avec l'option de compatibilité Google Analytics/Google Tag Manager/Google Ads activée, la CMP de Sirdata prend automatiquement en charge la gestion de ces signaux pour la partie attribution/mesure de Google Ads.
{% endhint %}


# F.A.Q. CMP

Vous trouverez ici les réponses aux questions les plus fréquentes sur le fonctionnement de la CMP. Si vous ne trouvez pas de réponse à votre question, veuillez contacter le support Sirdata CMP.


# Google Consent Mode V2


# Utilité Google Consent Mode V2

À quoi sert le Google Consent Mode V2 ?

## 🎯 Introduction au Google Consent Mode V2

Dans un monde où la protection des données personnelles devient primordiale, Google a développé une solution innovante pour aider les entreprises à respecter la vie privée de leurs utilisateurs tout en optimisant leurs données marketing. Découvrons ensemble le Google Consent Mode V2 ! 🚀

### 🤔 Qu'est-ce que le Google Consent Mode V2 ?

Le Google Consent Mode V2 est une évolution majeure de l'interface de gestion des consentements proposée par Google. Il permet aux sites web de gérer dynamiquement le comportement des tags Google en fonction des choix de consentement des utilisateurs.

### 🎮 Comment ça marche ?

1. Adaptation dynamique des tags en fonction du consentement
2. Modélisation des données manquantes grâce à l'IA
3. Respect automatique des choix de confidentialité

### 🌟 Les principaux avantages

* Conformité RGPD simplifiée

  Plus besoin de paniquer avec la réglementation, le Consent Mode V2 s'occupe de tout !
* Récupération des données perdues

  Grâce à l'IA, Google peut modéliser jusqu'à 30% des conversions non mesurées.
* Installation facile

  Une implémentation simple qui s'intègre parfaitement avec votre CMP existant.

### 📊 Les signaux de consentement

| Signal                   | Description                 |
| ------------------------ | --------------------------- |
| ad\_storage              | Cookies publicitaires       |
| analytics\_storage       | Cookies analytiques         |
| functionality\_storage   | Cookies fonctionnels        |
| personalization\_storage | Cookies de personnalisation |
| security\_storage        | Cookies de sécurité         |

### 🔄 Workflow du Consent Mode V2

<figure><img src="/files/i4Xfm9zBLrR2Kdxkx3Jx" alt="" width="187"><figcaption></figcaption></figure>

### ⚡ Points clés à retenir

* ✅ Respect total de la vie privée des utilisateurs
* 📈 Maintien de la qualité des données marketing
* 🤖 Intelligence artificielle pour combler les gaps
* 🔒 Conformité RGPD native

🚀 Pro Tip : Pensez à mettre à jour votre configuration Google Tag Manager pour profiter pleinement du Consent Mode V2 !

### 📈 Impact sur les performances marketing

Le Consent Mode V2 permet de maintenir une vision précise de vos performances marketing même lorsque certains utilisateurs refusent les cookies. C'est comme avoir un super pouvoir qui vous permet de voir à travers le brouillard ! 🦸‍♂️

### 🎯 Conclusion

Le Google Consent Mode V2 représente une avancée majeure dans la gestion du consentement des utilisateurs. Il offre un équilibre parfait entre respect de la vie privée et performance marketing. C'est l'outil idéal pour les entreprises qui souhaitent rester compétitives tout en respectant les règles du jeu ! 🏆

💡 N'oubliez pas : La protection des données personnelles n'est plus une option, c'est une nécessité. Le Consent Mode V2 vous aide à en faire une opportunité ! 🌟


# Nouveautés Google Consent Mode V2

Quelles sont les nouveautés du Google Consent Mode V2 ?

Le Google Consent Mode V2 introduit deux nouveaux signaux supplémentaires :

1. **ad\_user\_data** : indique si l'utilisateur consent à l'utilisation de ses données personnelles à des fins publicitaires.
2. **ad\_personalization** : spécifie si l'utilisateur autorise l'utilisation de ses données pour du remarketing.

Contrairement aux signaux **ad\_storage** et **analytics\_storage**, ces nouveaux indicateurs n'ont pas d'impact direct sur le comportement des balises du site. Ils servent à informer les services Google sur la manière dont les données utilisateur peuvent être exploitées à des fins publicitaires.


# Mode avancé ou mode basique

Quelle est la différence entre le mode avancé et le mode basique ?

Le Google Consent Mode V2 introduit deux concepts : le mode de consentement avancé et le mode de consentement basique.

* **Mode de consentement basique** : Le mode est activé, mais les balises Google ne collectent des données qu'une fois que l'utilisateur a donné son consentement.
* **Mode de consentement avancé** : Il permet de collecter des données auprès des utilisateurs, qu'ils aient donné leur consentement ou non. Toutefois, pour ceux qui refusent, seules des données limitées et anonymes sont utilisées via des pings de données.


# Fonctionnement des signaux Google Consent Mode v2

### Présentation

Lors de l'utilisation de la CMP Sirdata avec le Google Consent Mode v2, vous pouvez constater que certains signaux (comme `personalization_storage` ou `ad_user_data`) restent à l'état `denied` malgré un consentement positif de l'utilisateur.

Cette documentation explique la logique de liaison "Finalités-Partenaires" qui régit le déclenchement de ces signaux.

***

### 1. La Logique Fondamentale : Le lien Partenaires-Finalités

Contrairement à d'autres solutions, la CMP Sirdata n'active pas les signaux de consentement de manière isolée. Elle applique une règle de "Privacy-by-Design" où chaque signal est conditionné par deux facteurs cumulatifs :

1. Le choix de l'utilisateur : L'utilisateur doit avoir accepté les cookies (ex: clic sur "Tout Accepter").
2. La nécessité technique : Au moins un partenaire actif dans votre configuration Sirdata doit avoir déclaré avoir besoin de la finalité correspondante pour fonctionner.

Conséquence : Si vous n'avez aucun partenaire configuré qui requiert la "Personnalisation", le signal `personalization_storage` restera `denied` même après un clic sur "Accepter", car la CMP considère qu'il n'y a aucune raison légitime de l'activer.

<figure><img src="/files/yxHSWK9nSrnqrgKBwfcO" alt=""><figcaption></figcaption></figure>

***

### 2. Liste des signaux et correspondances

Voici les principaux signaux Google Consent Mode v2 et les raisons de leur maintien à l'état `denied` :

| **Signal GCM**            | **Rôle**                               | **Condition d'activation (Sirdata)**                                                                                                  |
| ------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `ad_storage`              | Stockage publicitaire                  | Requiert des partenaires avec des finalités de type "Stockage et accès aux informations".                                             |
| `analytics_storage`       | Mesure d'audience                      | Requiert des partenaires comme Google Analytics 4 ou des outils de mesure d'audience.                                                 |
| `ad_user_data`            | Envoi des données utilisateur à Google | Requiert l'activation de Google en tant que partenaire et le consentement aux finalités publicitaires.                                |
| `personalization_storage` | Personnalisation du contenu/pub        | Point fréquent : Nécessite des partenaires ayant déclaré des finalités de personnalisation ou l'activation manuelle de ces finalités. |

***

### 3. Comment résoudre un signal bloqué à "Denied" ?

Si un signal reste refusé alors qu'il est nécessaire pour vos balises, vous devez ajuster votre configuration dans la Console Sirdata :

#### A. Vérification des Partenaires (Recommandé)

Le moyen le plus propre est de déclarer vos outils tiers :

* Allez dans la section Partenaires.
* Ajoutez les régies ou outils spécifiques que vous utilisez (ex: Google Ads, Meta, LinkedIn).
* Publiez la configuration. La CMP fera automatiquement la correspondance entre ces partenaires et les signaux GCM correspondants.

#### B. Activation Manuelle des Finalités

Si vous utilisez un script "maison" ou un outil non listé qui nécessite un signal spécifique :

* Allez dans la section Finalités (Purposes).
* Activez manuellement la finalité liée au signal manquant (ex: "Publicités personnalisées" pour le stockage de personnalisation).
* Publiez pour mettre à jour le comportement de la CMP.


# GCS - GCD Comprendre le Google Consent Mode

### 1. Le paramètre GCS — Google Consent State

| Segment | Signification                                     |
| ------- | ------------------------------------------------- |
| `G1`    | Version du protocole                              |
| `x`     | État de `ad_storage` (stockage publicitaire)      |
| `y`     | État de `analytics_storage` (stockage analytique) |

**Valeurs** : `1` = Accordé (vanne ouverte) · `0` = Refusé (vanne fermée)

{% hint style="warning" %}
**Point clé** : Un signal `G111` indique uniquement que le navigateur est autorisé techniquement à stocker des cookies. Il ne garantit **pas** que le consentement a été obtenu spécifiquement pour le vendeur Google ou pour l'utilisation des données à des fins publicitaires.
{% endhint %}

***

### 2. Le paramètre GCD — Google Consent Data

> **Rôle** : Signal granulaire de traitement des données — référence DMA.

[👉 Accéder au décodeur Google Consent Mode](https://gcd-decode.fr/)

Le paramètre `gcd` est le signal de référence pour la conformité DMA. Il transmet un historique granulaire de l'état de consentement, couvrant à la fois le **stockage** et l'**utilisation (traitement)** des données, incluant les nouveaux signaux introduits par Consent Mode v2.

**Encodage** : Chaîne encodée en Base64URL (ex : `13r3r3q2q5l1`)

#### 2.1 Les 4 signaux obligatoires (Consent Mode v2)

La chaîne GCD transmet les quatre signaux suivants, dans cet ordre :

| Catégorie      | Signal               | Rôle                                                                     |
| -------------- | -------------------- | ------------------------------------------------------------------------ |
| **Stockage**   | `ad_storage`         | Consentement pour le stockage à des fins publicitaires                   |
| **Stockage**   | `analytics_storage`  | Consentement pour le stockage à des fins analytiques                     |
| **Usage (v2)** | `ad_user_data`       | Consentement pour le traitement des données utilisateur (ex : profilage) |
| **Usage (v2)** | `ad_personalization` | Consentement pour la personnalisation publicitaire (ex : remarketing)    |

#### 2.2 Mécanique d'encodage : Default vs Update

Chaque signal est décomposé en deux états encodés de façon binaire :

| État        | Description                                                                                                |
| ----------- | ---------------------------------------------------------------------------------------------------------- |
| **Default** | État au chargement initial de la page, avant interaction utilisateur (souvent basé sur la géolocalisation) |
| **Update**  | État après interaction explicite avec la bannière CMP                                                      |

{% hint style="info" %}
Pour décoder précisément les états Default/Update de vos requêtes réseau, utilisez l'outil dédié mentionné en bas de page.
{% endhint %}

***

### 3. Distinction critique : GCS vs GCD

| Paramètre | Fonction                         | Portée                                                 | Rôle pour la conformité                                                     |
| --------- | -------------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------- |
| **GCS**   | Indicateur de Stockage           | Global, autorisation technique du navigateur           | Indique si des cookies peuvent être écrits                                  |
| **GCD**   | Indicateur de Traitement (Usage) | Granulaire, consentement explicite par finalité Google | Détermine si Google peut traiter les données pour la publicité ou l'analyse |

#### Cas concret : `gcs=G111` sans consentement Google

Il est techniquement possible d'observer `gcs=G111` alors que le **vendeur Google est bloqué** dans la CMP.

* **Côté GCS (Stockage)** : Sirdata active le stockage global (`G111`) dès que l'utilisateur accepte la Finalité 1 du TCF (stockage d'informations). Cette finalité est générique et ouvre la vanne technique, même si le vendeur Google est exclu.
* **Côté GCD (Usage)** : Si `ad_user_data` est à `Denied` dans la chaîne GCD, Google ne traitera pas la donnée pour le profilage publicitaire — indépendamment du statut GCS.

{% hint style="success" %}
**Conclusion** : Le paramètre `gcd` est le **seul mécanisme prouvant l'absence d'utilisation des données par Google** sans consentement explicite, même quand les vannes de stockage sont ouvertes. C'est le signal de conformité critique pour le DMA.
{% endhint %}

***

### Outil de validation et décodage

Pour une vérification approfondie, décodez la chaîne GCD afin d'extraire les états binaires précis (Default/Update) de vos requêtes réseau.

[👉 Accéder au décodeur Google Consent Mode](https://gcd-decode.fr/)


# Facebook


# Facebook Consent Mode

## Facebook Consent Mode (Meta)

L'intégration du **Facebook Consent Mode** par Sirdata permet de synchroniser automatiquement l'état du consentement de vos utilisateurs avec les outils publicitaires de Meta (Facebook & Instagram).

<figure><img src="/files/ooHbBlKhAw9ylGVLXKP1" alt=""><figcaption></figcaption></figure>

### Présentation

Cette fonctionnalité permet de transmettre les signaux de consentement ("revoke" ou "grant") aux pixels et balises Facebook sans avoir à modifier manuellement votre code source ou vos balises GTM.

#### Avantages clés :

* **Conformité simplifiée** : Respectez les politiques de Meta et le RGPD sans intervention technique lourde.
* **Automatisation** : La CMP gère nativement la transmission des signaux dès son chargement.
* **Performance** : Assure que vos campagnes publicitaires reçoivent les signaux appropriés pour optimiser le tracking.

### Configuration

Pour activer cette option, suivez les étapes suivantes dans votre interface :

1. Accédez à la gestion de vos configurations CMP.
2. Accédez à la section **Modules complémentaires**.
3. Rendez-vous dans la section **Autres partenaires**.
4. Localisez le bloc **Facebook Consent Mode**.
5. Activez l'option en cliquant sur le Toggle.
6. **Enregistrez** votre configuration.

> Pour que le Facebook Consent Mode fonctionne correctement, la CMP ABconsent doit impérativement être chargée **avant** vos scripts ou balises Facebook sur votre site.

### Fonctionnement technique

Une fois l'option activée, la CMP ABconsent communique directement avec le Pixel Facebook. Si l'utilisateur refuse le consentement, les signaux de refus sont transmis instantanément pour limiter la collecte de données conformément aux choix de l'utilisateur. À l'inverse, si le consentement est accordé, les signaux "grant" autorisent le tracking publicitaire standard.


# Meta Retargeting & Conversions API (CAPI)

> Ce document couvre le fonctionnement du retargeting Meta, du Pixel client-side à la Conversions API server-side, avec une attention particulière sur le matching utilisateur et les bonnes pratiques d'implémentation.

***

### Vue d'ensemble

Le retargeting Meta repose sur la capacité de Meta à **faire le lien entre un visiteur de site web et un utilisateur Facebook/Instagram**. Pour ça, Meta utilise deux canaux complémentaires :

| Canal               | Déclenchement   | Résistance ITP/adblock | Richesse données |
| ------------------- | --------------- | ---------------------- | ---------------- |
| **Pixel Meta**      | Navigateur (JS) | Faible                 | Moyenne          |
| **Conversions API** | Serveur (HTTP)  | Totale                 | Élevée           |

L'approche recommandée est le **mode hybride** : Pixel + CAPI en parallèle, avec déduplication.

***

### Comment Meta identifie un utilisateur

C'est la question centrale. Meta ne connaît pas l'identité réelle du visiteur — il cherche à **matcher** des signaux techniques avec son annuaire d'utilisateurs connectés.

#### Les identifiants utilisés

**1. Cookies Meta (`_fbp` et `_fbc`)**

* **`_fbp`** (Facebook Browser ID) : posé par le Pixel sur le domaine du site, identifie le navigateur de manière unique. Durée de vie : 90 jours.
* **`_fbc`** (Facebook Click ID) : posé quand l'utilisateur arrive sur le site via un clic sur une pub Meta (paramètre `fbclid` dans l'URL).

Ces cookies sont lisibles **uniquement par le site lui-même** (first-party), mais leur valeur est transmise à Meta via le Pixel ou la CAPI.

**2. Données personnelles hashées (PII)**

Via la CAPI, il est possible d'envoyer des données utilisateur **hashées en SHA-256** :

```
email brut → SHA-256 → a665a45920422f9d...
```

Meta compare ce hash avec les hashs de sa propre base. Si ça correspond → match.

Les données supportées :

* Email (`em`)
* Téléphone (`ph`)
* Prénom (`fn`), Nom (`ln`)
* Date de naissance (`db`)
* Genre (`ge`)
* Ville (`ct`), Code postal (`zp`), Pays (`country`)

> **Important** : le hash SHA-256 est irréversible. Meta ne récupère jamais l'email en clair. C'est le principe du *privacy-preserving matching*.

**3. Signaux contextuels**

* Adresse IP (`client_ip_address`)
* User Agent (`client_user_agent`)
* URL de la page (`event_source_url`)

Ces signaux seuls sont insuffisants pour un match fiable, mais ils renforcent la confiance du matching quand combinés aux autres.

#### Le score de matching

Meta attribue un **Event Match Quality (EMQ)** entre 0 et 10 à chaque événement reçu. Plus le score est élevé, plus Meta est confiant dans l'identification de l'utilisateur, et plus le retargeting sera efficace.

```
EMQ faible (< 6)  → peu de signaux → audience incomplète
EMQ élevé (> 7)   → signaux riches → matching précis
```

Pour maximiser l'EMQ : envoyer `_fbp` + `_fbc` + email hashé + IP + user agent.

***

### Le Pixel Meta (client-side)

#### Fonctionnement

Le Pixel est un snippet JavaScript chargé dans le navigateur. Il :

1. Lit les cookies `_fbp` / `_fbc` existants (ou les crée)
2. Collecte l'IP, user agent, URL
3. Envoie une requête HTTP vers `https://www.facebook.com/tr/`

#### Événements standards

| Événement          | Déclenchement typique    |
| ------------------ | ------------------------ |
| `PageView`         | Toutes les pages         |
| `ViewContent`      | Page produit / article   |
| `AddToCart`        | Ajout au panier          |
| `InitiateCheckout` | Début de checkout        |
| `Purchase`         | Confirmation de commande |
| `Lead`             | Soumission de formulaire |

#### Exemple de code

```html
<!-- Pixel de base -->
<script>
!function(f,b,e,v,n,t,s){...}(window, document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', 'PIXEL_ID');
fbq('track', 'PageView');
</script>

<!-- Événement Purchase avec données -->
<script>
fbq('track', 'Purchase', {
  value: 49.99,
  currency: 'EUR',
  content_ids: ['SKU-123'],
  content_type: 'product'
});
</script>
```

#### Limites du Pixel seul

* **Bloqueurs de publicités** : Firefox + uBlock Origin bloque `connect.facebook.net`
* **ITP (Safari)** : les cookies third-party sont limités à 7 jours, voire 24h
* **Perte de signal estimée** : 20 à 40% des événements selon les configurations

C'est pour pallier ces limites que la CAPI existe.

***

### La Conversions API (server-side)

#### Principe

La CAPI permet d'envoyer les événements **directement depuis le serveur** vers l'API Meta, sans passer par le navigateur. Les bloqueurs et les restrictions de cookies n'ont aucun impact.

```
Navigateur
    │
    │  requête HTTP
    ▼
Ton serveur (ou GTM SS)
    │
    │  POST /v19.0/{pixel_id}/events
    ▼
API Meta
```

#### Endpoint

```
POST https://graph.facebook.com/v19.0/{PIXEL_ID}/events
     ?access_token={ACCESS_TOKEN}
```

#### Structure d'un payload CAPI

```json
{
  "data": [
    {
      "event_name": "Purchase",
      "event_time": 1714000000,
      "event_id": "evt_order_9876",
      "event_source_url": "https://monsite.com/merci",
      "action_source": "website",
      "user_data": {
        "em": ["a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3"],
        "ph": ["b3b3b3b3..."],
        "client_ip_address": "82.65.12.34",
        "client_user_agent": "Mozilla/5.0 (Macintosh...)",
        "fbp": "fb.1.1714000000000.1234567890",
        "fbc": "fb.1.1714000000000.IwAR1..."
      },
      "custom_data": {
        "value": 49.99,
        "currency": "EUR",
        "content_ids": ["SKU-123"],
        "content_type": "product",
        "order_id": "ORD-9876"
      }
    }
  ]
}
```

#### Points clés

* **`event_id`** : identifiant unique de l'événement — **indispensable pour la déduplication** avec le Pixel
* **`event_time`** : timestamp Unix en secondes
* **`action_source`** : toujours `"website"` pour les événements web
* **`em` et `ph`** : tableaux — Meta accepte plusieurs hashs (ex. email normalisé + email avec majuscule)

#### Normalisation avant hash

Meta impose des règles de normalisation **avant** de hasher :

| Champ        | Normalisation                                                |
| ------------ | ------------------------------------------------------------ |
| Email        | lowercase, trim des espaces                                  |
| Téléphone    | chiffres uniquement, avec indicatif pays (ex. `33612345678`) |
| Prénom / Nom | lowercase, trim, sans accents                                |
| Code postal  | trim                                                         |

```javascript
// Exemple de normalisation email
const hashEmail = (email) => {
  const normalized = email.toLowerCase().trim();
  return crypto.createHash('sha256').update(normalized).digest('hex');
};
```

***

### Déduplication Pixel + CAPI

Quand Pixel et CAPI sont actifs simultanément, Meta peut recevoir **deux fois le même événement**. La déduplication évite de comptabiliser deux conversions.

#### Mécanisme

Meta déduplique sur deux critères combinés :

* **`event_name`** identique
* **`event_id`** identique

Si ces deux valeurs sont les mêmes entre l'événement Pixel et l'événement CAPI reçus dans une fenêtre de \~48h, Meta ne compte qu'**une seule conversion**.

#### Implémentation

**Côté Pixel (dataLayer / GTM) :**

```javascript
dataLayer.push({
  event: 'purchase',
  meta_event_id: 'evt_order_9876', // ID unique généré côté serveur
  transaction_id: 'ORD-9876',
  value: 49.99,
  currency: 'EUR'
});
```

**Dans le tag Pixel (GTM) :**

```javascript
fbq('track', 'Purchase', {
  value: {{DL - value}},
  currency: {{DL - currency}}
}, {
  eventID: {{DL - meta_event_id}} // ← même ID que la CAPI
});
```

**Côté CAPI :**

```json
{
  "event_name": "Purchase",
  "event_id": "evt_order_9876"  // ← même ID
}
```

> **Bonne pratique** : générer l'`event_id` côté backend au moment de l'événement, le passer dans le dataLayer pour le Pixel, et l'utiliser directement dans la requête CAPI.

***

### Implémentation via GTM Server-Side

GTM Server-Side est la solution la plus propre pour implémenter la CAPI sans développement backend custom.

#### Architecture

```
Navigateur
    │
    │  hits vers ton domaine (collect.monsite.com)
    ▼
GTM Server-Side Container
    │
    ├──► Tag Meta CAPI → API Meta
    ├──► Tag GA4 SS → Google Analytics
    └──► Tag autres...
```

#### Setup

**1. Client GTM SS**

Utiliser le **client GA4** natif ou un client custom selon la source des données. Il reçoit les hits du navigateur et les transforme en événements exploitables par les tags.

**2. Tag Meta CAPI**

Utiliser le template officiel **"Facebook Conversions API"** disponible dans la galerie de templates GTM.

Configuration minimale :

* **Pixel ID** : ton ID pixel Meta
* **Access Token** : généré dans Meta Business Manager → Paramètres du pixel → CAPI
* **Event Name** : mappé depuis l'événement entrant
* **Event ID** : récupéré depuis le dataLayer (pour déduplication)

**3. Récupération des données utilisateur**

Le tag CAPI doit pouvoir accéder aux données de matching. Deux approches :

**Option A — via le dataLayer enrichi (côté client)**

Le site pousse les données dans le dataLayer :

```javascript
dataLayer.push({
  event: 'purchase',
  user: {
    email: 'user@example.com', // sera hashé par GTM SS
    phone: '+33612345678'
  },
  fbp: getCookie('_fbp'),
  fbc: getCookie('_fbc')
});
```

**Option B — enrichissement côté serveur**

Le container SS récupère les cookies `_fbp` / `_fbc` depuis les headers de la requête entrante, et les données utilisateur depuis une API interne ou un cookie first-party chiffré.

**4. Variables GTM SS utiles**

```
{{Request Header - x-forwarded-for}}  → IP réelle du visiteur
{{Request Header - user-agent}}        → User Agent
{{Cookie - _fbp}}                      → Facebook Browser ID
{{Cookie - _fbc}}                      → Facebook Click ID
```

**5. Exemple de mapping dans le tag CAPI**

| Champ CAPI          | Variable GTM SS                                          |
| ------------------- | -------------------------------------------------------- |
| `client_ip_address` | `{{Request Header - x-forwarded-for}}`                   |
| `client_user_agent` | `{{Request Header - user-agent}}`                        |
| `fbp`               | `{{Cookie - _fbp}}`                                      |
| `fbc`               | `{{Cookie - _fbc}}`                                      |
| `em`                | `{{DL - user.email}}` (hashé automatiquement par le tag) |
| `event_id`          | `{{DL - meta_event_id}}`                                 |

***

### Gestion du consentement (CMP)

#### Principe

Le RGPD impose de ne collecter des données à des fins publicitaires qu'après **consentement explicite** de l'utilisateur. Cela s'applique au Pixel Meta **et** à la CAPI.

#### Implémentation avec une CMP (ex. Sirdata)

**Côté Pixel (GTM client-side)**

Le tag Pixel doit avoir un **trigger conditionné au consentement** :

```
Trigger : Consent Initialization
Condition : Analytics Storage = granted
         ET Ad Storage = granted
```

Ou via le Consent Mode de Google : activer le tag uniquement si `ad_storage` et `analytics_storage` sont en `granted`.

**Côté CAPI (GTM server-side)**

La CAPI est déclenchée côté serveur, mais elle doit **refléter le consentement côté client**. Deux approches :

**La balise Sirdata permet de le faire nativement**

***

### Paramètres de matching — référence complète

| Paramètre           | Clé CAPI            | Hash requis | Priorité EMQ |
| ------------------- | ------------------- | ----------- | ------------ |
| Email               | `em`                | SHA-256     | ⭐⭐⭐⭐⭐        |
| Téléphone           | `ph`                | SHA-256     | ⭐⭐⭐⭐         |
| Facebook Browser ID | `fbp`               | Non         | ⭐⭐⭐⭐         |
| Facebook Click ID   | `fbc`               | Non         | ⭐⭐⭐⭐         |
| IP                  | `client_ip_address` | Non         | ⭐⭐⭐          |
| User Agent          | `client_user_agent` | Non         | ⭐⭐⭐          |
| Prénom              | `fn`                | SHA-256     | ⭐⭐           |
| Nom                 | `ln`                | SHA-256     | ⭐⭐           |
| Date de naissance   | `db`                | SHA-256     | ⭐⭐           |
| Genre               | `ge`                | SHA-256     | ⭐            |
| Ville               | `ct`                | SHA-256     | ⭐            |
| Code postal         | `zp`                | SHA-256     | ⭐            |
| Pays                | `country`           | SHA-256     | ⭐            |


# Conditionnement


# Conditionnement des tags

Mon partenaire / prestataire ne conditionne pas ses tags et me dit que c'est à moi de le faire sur mon site. Que dois je faire ?

Plusieurs acteurs participant au [Transparency & Consent Framework](https://www.cnil.fr/fr/definition/transparency-and-consent-framework-tcf) choisissent de ne pas conditionner leurs tags, c'est par exemple le cas pour Google Advertising, Microsoft Advertising, Teads ou Taboola.

Dans ce cas, c'est au site utilisant ces tags de procéder au préalable à la vérification du consentement de l'utilisateur avant de les charger.

Pour cela, vous devez utiliser les [commandes de la CMP](https://cmp.docs.sirdata.net/gestion-des-scripts/conditionnement-tags) qui vous permettront de lire et contrôler les choix faits par l'utilisateur avant d'injecter les scripts de vos partenaires.

Nous proposons des prestations de conditionnement, retrouvez le détail de notre offre sur ce [lien](https://cmp.docs.sirdata.net/gestion-des-scripts/prestations-conditionnement-tags).

{% embed url="<https://sirdata.com/fr/Contact>" %}


# Gestion des cookies

La CMP gère t'elle automatiquement le blocage des cookies en fonction du choix des utilisateurs ?

Non, aucune CMP sur le marché ne peut conditionner automatiquement les tags en dur et / ou les balises GTM.

Il est à la charge de l’éditeur de réaliser ces opérations. Pour cela il est nécessaire que chaque tag/balise soit relié aux finalités et sociétés présentes dans votre CMP (conditionnement des tags).

Sirdata CMP met à disposition des outils pour réaliser ces conditionnements vous même : <https://cmp.docs.sirdata.net/gestion-des-scripts/conditionnement-tags>

Si besoin, Sirdata peut réaliser ces [conditionnements ](/prestations-cmp/conditionnement-des-tags)à votre place.

{% embed url="<https://sirdata.com/fr/Contact>" %}


# Conditionnement des partenaires non membres du TCF

Le conditionnement fonctionne-t-il pour les scripts provenant d'acteurs hors TCF ?

Oui. Notre [gestion des scripts](https://cmp.docs.sirdata.net/gestion-des-scripts/conditionnement-tags) est compatible avec tous les acteurs présentés dans la documentation y compris hors TCF.

{% embed url="<https://sirdata.com/fr/Contact>" %}


# Gestion des scripts

Comment conditionner un script au consentement ? La méthode est-elle différente si j'utilise un tag manager ?

Il est possible de conditionner vous-même (vos [tags en dur](https://cmp.docs.sirdata.net/gestion-des-scripts/conditionnement-tags) ou vos[ balises GTM](https://cmp.docs.sirdata.net/gestion-des-scripts/conditionnement-dun-script-via-google-tag-manager)) grâce à notre guide technique.

{% embed url="<https://sirdata.com/fr/Contact>" %}


# Sirdata - Extra Purposes

### En bref

Le **conditionnement** consiste à n'autoriser le déclenchement d'un tag (script ou pixel) **que si l'utilisateur a donné le consentement** — ou que l'intérêt légitime est établi — pour les finalités concernées. La CMP Sirdata vérifie l'état du consentement avant de charger le tag.

Sirdata gère deux familles de finalités :

* Les **finalités TCF** (le standard IAB Europe), qui couvrent surtout la publicité et la mesure d'audience.
* Les **finalités Sirdata** (appelées *extraPurposes*), qui couvrent des usages **hors périmètre du TCF** : emailing, courrier postal, TV/radio segmentée, session replay, etc.

La finalité Sirdata qui nous intéresse comme exemple fil rouge est la **finalité 7 — « Pixels de suivi d'ouverture et d'interaction des emails »**, c'est-à-dire l'autorisation de déposer un pixel de tracking dans un email.

{% hint style="info" %}
**À retenir :** une finalité TCF et une finalité Sirdata portant le même numéro **ne désignent pas la même chose**. Le « 7 » des extraPurposes (pixel email) n'a rien à voir avec le « 7 » du TCF (mesure de la performance des publicités). Le préfixe de l'attribut (`extra-` ou non) lève l'ambiguïté.
{% endhint %}

***

### 1. Pourquoi conditionner ? (volet métier)

Sous le RGPD et la directive ePrivacy, le dépôt d'un traceur non exempté (cookie, pixel, accès au terminal…) et certains traitements de données personnelles nécessitent une **base légale** : le plus souvent le **consentement**.

Le conditionnement traduit cette exigence juridique en règle technique :

> *« Ne charge ce tag que si l'utilisateur a accepté la (les) finalité(s) qui le justifient. »*

Concrètement, pour chaque tag il faut au préalable :

* Identifier la présence éventuelle de traceurs non exemptés (cookies, IndexedDB, local storage…).
* Évaluer les traitements de données personnelles et leur base légale.
* Déterminer si le partenaire est déjà géré automatiquement via les API de la CMP (ex. *Consent Mode* de Google ou Microsoft).

{% hint style="warning" %}
Cette page décrit le **fonctionnement technique** du conditionnement. Le **choix** des finalités et des bases légales à appliquer relève d'une **expertise juridique** : il doit être validé avec votre DPO / service juridique. Sirdata propose aussi une prestation de paramétrage des conditionnements.
{% endhint %}

***

### 2. Les finalités Sirdata (extraPurposes)

Ces finalités sont **propres à Sirdata** et complètent le TCF pour des canaux que ce dernier ne couvre pas. On les référence par leur ID dans les attributs `data-cmp-extra-purposes` et `data-cmp-extra-purposes-li`.

| ID    | Finalité Sirdata                                                          | Exemple d'usage                                |
| ----- | ------------------------------------------------------------------------- | ---------------------------------------------- |
| 1     | Communications électroniques (email, fax, SMS/MMS) personnalisées         | Ciblage d'une newsletter selon le profil       |
| 2     | Courrier postal et téléprospection personnalisés                          | Mailing papier ciblé, appels sortants          |
| 3     | Publicités personnalisées à la TV (TV segmentée)                          | Spot TV adressé selon le foyer                 |
| 4     | Publicités personnalisées à la radio (radio segmentée)                    | Publicité radio adressée                       |
| 5     | Utilisation de la technologie Utiq, alimentée par votre opérateur télécom | Identifiant réseau opérateur                   |
| 6     | Publicité ciblée par GPS                                                  | Ciblage selon la localisation GPS              |
| **7** | **Pixels de suivi d'ouverture et d'interaction des emails**               | **Dépôt d'un pixel de tracking dans un email** |
| 8     | Rejeu de session (enregistrement de navigation)                           | Session replay                                 |
| 9     | Collecte automatique d'identifiants sur vos terminaux                     | Fingerprinting / identifiants device           |
| 10    | Traitement des données d'identification                                   | Réconciliation d'identités                     |
| 11    | Transmission inter-contextes des données digitales                        | Partage cross-site de données digitales        |
| 12    | Transmission inter-contextes des données de géolocalisation               | Partage cross-site de la géolocalisation       |
| 13    | Transmission inter-contextes des données de prospection commerciale       | Partage cross-site des données de prospection  |
| 14    | Transmission inter-contextes des données audiovisuelles                   | Partage cross-site des données AV              |

#### Focus — Finalité 7 : pixel de suivi des emails

Un **pixel de tracking email** est une image invisible (généralement 1×1) intégrée au corps d'un email. À son chargement par le client de messagerie, il signale **l'ouverture** de l'email et, selon l'implémentation, certaines **interactions**. C'est un traceur soumis à consentement.

Conditionner ce pixel à la **finalité Sirdata 7** garantit qu'il n'est déclenché **que si l'utilisateur a consenti** à ce suivi.

{% hint style="info" %}
La finalité 7 concerne le **suivi d'ouverture/interaction** (mesure comportementale). À ne pas confondre avec la finalité Sirdata **1** (« Communications électroniques personnalisées »), qui porte sur la **personnalisation du contenu** envoyé, pas sur le tracking du pixel. Selon votre cas d'usage, l'une, l'autre ou les deux peuvent s'appliquer.
{% endhint %}

***

### 3. Le mécanisme de conditionnement (volet technique)

Le conditionnement se déclare via des attributs `data-cmp-*` posés directement sur la balise du tag. La CMP intercepte le tag, contrôle le consentement, puis charge (ou non) la ressource pointée par `data-cmp-src`.

#### Attributs principaux

| Attribut                                     | Rôle                                                                                                                                              |
| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `data-cmp-src` **(requis)**                  | URL du script/pixel à conditionner, ou nom d'une fonction JS à exécuter.                                                                          |
| `data-cmp-extra-vendor`                      | ID du **partenaire Sirdata** à vérifier. Doit être accompagné d'une liste de finalités.                                                           |
| `data-cmp-extra-purposes`                    | Finalités **Sirdata** exigeant le **consentement** (ex. `7`). Nécessite `data-cmp-extra-vendor`.                                                  |
| `data-cmp-extra-purposes-li`                 | Finalités **Sirdata** reposant sur l'**intérêt légitime**. Nécessite `data-cmp-extra-vendor`.                                                     |
| `data-cmp-vendor`                            | ID du **partenaire IAB (TCF)** à vérifier.                                                                                                        |
| `data-cmp-purposes`                          | Finalités **TCF** exigeant le consentement. Nécessite `data-cmp-vendor`.                                                                          |
| `data-cmp-purposes-li`                       | Finalités **TCF** reposant sur l'intérêt légitime. Nécessite `data-cmp-vendor`.                                                                   |
| `data-cmp-special-features`                  | Fonctionnalités spéciales TCF (ex. `1`). Nécessite `data-cmp-vendor`.                                                                             |
| `data-cmp-publisher-purposes` / `-li`        | Finalités pour lesquelles **vous (l'éditeur)** demandez le consentement / invoquez l'intérêt légitime.                                            |
| `data-cmp-publisher-custom-purposes` / `-li` | Vos finalités **personnalisées**.                                                                                                                 |
| `data-cmp-require-choice`                    | `true`/`false` : attendre que l'utilisateur **valide** ses choix avant de vérifier.                                                               |
| `data-cmp-disable-check`                     | `true`/`false` : désactive le contrôle par défaut sur la finalité 1 (seulement si aucune autre condition n'est définie).                          |
| `data-cmp-parent`                            | ID de l'élément HTML parent où injecter le script (balises `<script>` uniquement).                                                                |
| `data-cmp-fallback-src`                      | Script/pixel **alternatif** chargé si les conditions ne sont pas remplies. Se conditionne avec les mêmes attributs préfixés `data-cmp-fallback-`. |

#### Macros disponibles

| Macro                   | Usage                                                |
| ----------------------- | ---------------------------------------------------- |
| `${SDDAN_GDPR_APPLIES}` | Injecte le paramètre GDPR du TCF dans l'URL appelée. |
| `${SDDAN_GDPR_CONSENT}` | Injecte la TC String du TCF dans l'URL appelée.      |

{% hint style="danger" %}
Dès qu'un partenaire **et** des finalités sont renseignés, le **contrôle par défaut sur la finalité 1 est supprimé**. Si vous souhaitez le conserver, incluez explicitement la finalité `1` dans `data-cmp-purposes`.
{% endhint %}

***

### 4. Exemple détaillé — conditionner un pixel email (finalité 7)

Un pixel de suivi d'ouverture, déposé par un partenaire Sirdata, doit être conditionné au **consentement** pour la **finalité Sirdata 7**.

{% tabs %}
{% tab title="Avant conditionnement" %}

```markup
<img src="https://tracking.exemple.com/open.gif?id=ABC123"
     width="1" height="1" alt="" />
```

{% endtab %}

{% tab title="Après conditionnement" %}

```markup
<img data-cmp-src="https://tracking.exemple.com/open.gif?id=ABC123"
     data-cmp-extra-vendor="XXX"
     data-cmp-extra-purposes="7"
     width="1" height="1" alt="" />
```

{% endtab %}
{% endtabs %}

* `data-cmp-src` remplace `src` : la CMP ne renseignera l'URL réelle qu'après contrôle.
* `data-cmp-extra-vendor` : l'ID du **partenaire Sirdata** responsable du pixel (à récupérer dans votre extra-vendorlist).
* `data-cmp-extra-purposes="7"` : le chargement est subordonné au **consentement** à la finalité Sirdata 7.

Résultat : le pixel ne se déclenche **que si** l'utilisateur a accepté le suivi des emails ; sinon, il n'est jamais appelé.

***

### 5. Autres exemples de conditionnement

#### Pixel TCF (partenaire 29, consentement finalités 1 et 9)

```markup
<img data-cmp-src="https://www.exemple.com/pixel.png"
     data-cmp-vendor="29"
     data-cmp-purposes="1,9"
     width="1" height="1" />
```

#### Script TCF avec intérêt légitime (partenaire 81)

Consentement pour la finalité 1, intérêt légitime établi pour la finalité 6 :

```markup
<script data-cmp-src="https://www.exemple.com/script.js"
        data-cmp-vendor="81"
        data-cmp-purposes="1"
        data-cmp-purposes-li="6">
</script>
```

#### Script avec repli en cas de non-consentement

```markup
<script data-cmp-src="https://www.exemple.com/script.js"
        data-cmp-fallback-src="https://www.exemple.com/script_noconsent.js">
</script>
```

***

### 6. Annexe — Finalités TCF (rappel)

À ne pas confondre avec les finalités Sirdata. Référencées via `data-cmp-purposes` / `data-cmp-purposes-li`.

| ID | Finalité TCF                                                               |
| -- | -------------------------------------------------------------------------- |
| 1  | Stocker et/ou accéder à des informations sur un appareil                   |
| 2  | Utiliser des données limitées pour sélectionner la publicité               |
| 3  | Créer des profils pour la publicité personnalisée                          |
| 4  | Utiliser des profils pour sélectionner des publicités personnalisées       |
| 5  | Créer des profils de contenus personnalisés                                |
| 6  | Utiliser des profils pour sélectionner des contenus personnalisés          |
| 7  | Mesurer la performance des publicités                                      |
| 8  | Mesurer la performance des contenus                                        |
| 9  | Comprendre les publics via des statistiques ou des combinaisons de données |
| 10 | Développer et améliorer les services                                       |
| 11 | Utiliser des données limitées pour sélectionner le contenu                 |

***

### 7. Bonnes pratiques

* **Toujours associer** un `extra-vendor` à une liste d'`extra-purposes` (et un `vendor` à des `purposes`). Une finalité seule, sans partenaire, n'est pas un conditionnement valide.
* **Choisir la bonne base légale** : `…-purposes` pour le consentement, `…-purposes-li` pour l'intérêt légitime — décision à valider juridiquement.
* **Conserver le contrôle sur la finalité 1** en l'ajoutant explicitement si nécessaire (voir l'avertissement section 3).
* **Tester** le comportement consentement accepté / refusé avant mise en production.
* **Documenter** chaque conditionnement (tag, partenaire, finalités, base légale) pour la traçabilité.

***

### Sources

* [Configuration avancée — Sirdata CMP](https://cmp.docs.sirdata.net/gestion-des-scripts/configuration-avancee)
* [Exemples — Sirdata CMP](https://cmp.docs.sirdata.net/gestion-des-scripts/exemples)
* [Fonctionnement (CMP API) — Sirdata CMP](/cmp-api/fonctionnement)


# Lier le consentement au contact dans HubSpot

## Lier le consentement au contact dans HubSpot

Conditionner le pixel email à la **finalité Sirdata 7** garantit qu'il ne se déclenche que si l'utilisateur a consenti (voir la page Conditionnement par finalités Sirdata). Mais ce conditionnement vit côté navigateur / email : il ne laisse **aucune trace dans votre CRM**.

Cette page explique comment **propager** l'état du consentement à la **finalité 7** vers une **propriété personnalisée** de la fiche contact HubSpot. Objectif : pour chaque contact, savoir s'il a accepté le suivi d'ouverture des emails, **quand** et **sur quelle base**, directement dans HubSpot.

{% hint style="info" %}
**Pourquoi le faire ?** Le RGPD exige de pouvoir **démontrer** le consentement (article 7.1). Stocker l'état du consentement au niveau du contact donne une preuve horodatée, exploitable dans vos workflows email (n'envoyer le pixel qu'aux contacts consentants, par exemple).
{% endhint %}

***

#### 1. Vue d'ensemble du flux

1. L'utilisateur fait son choix dans la CMP Sirdata ; il **accepte** (ou non) la finalité Sirdata **7 — pixels de suivi d'ouverture et d'interaction des emails**.
2. Un **script conditionné** à cette finalité (via `data-cmp-extra-purposes="7"`) ne s'exécute que si le consentement est accordé.
3. Ce script transmet la valeur à HubSpot, qui l'écrit dans une **propriété personnalisée** du contact.
4. La fiche contact HubSpot reflète l'état du consentement, avec date et source.

{% hint style="warning" %}
Pour rattacher un consentement à **un contact**, il faut pouvoir **identifier** l'utilisateur (le plus souvent par son **email**). Tant que l'email n'est pas connu (visiteur anonyme), conservez l'information côté navigateur et synchronisez-la dès que le contact est identifié (soumission d'un formulaire, connexion…).
{% endhint %}

***

#### 2. Créer la propriété personnalisée dans HubSpot

Dans HubSpot : **Paramètres → Gestion des données → Propriétés → Créer une propriété**.

Renseignez :

* **Type d'objet** : `Contact`
* **Groupe** : un groupe dédié, p. ex. `Informations de conformité`
* **Libellé** : `Consentement pixel email (finalité Sirdata 7)`
* **Nom interne** : `consentement_pixel_email` *(c'est ce nom que vous utiliserez dans l'API)*
* **Type de champ** : `Choix unique (radio)` avec deux options, **valeurs internes `Oui` et `Non`**

{% hint style="danger" %}
**La valeur envoyée doit correspondre exactement au type de champ.**

* Champ **Choix unique / Liste déroulante** avec options `Oui`/`Non` → envoyez `"Oui"` (ou `"Non"`).
* Champ **Case à cocher unique** (booléen) → envoyez `"true"` (ou `"false"`).

Si vous envoyez `true` à un champ dont les options internes sont `Oui`/`Non`, **la valeur est rejetée** et la fiche n'est pas mise à jour. Les exemples de cette page utilisent un champ radio `Oui`/`Non`.
{% endhint %}

Pour une traçabilité complète, créez aussi quelques propriétés d'appui :

| Nom interne                       | Type de champ          | Rôle                                                        |
| --------------------------------- | ---------------------- | ----------------------------------------------------------- |
| `consentement_pixel_email`        | Choix unique (Oui/Non) | État du consentement.                                       |
| `consentement_pixel_email_date`   | Sélecteur de date      | Horodatage du recueil.                                      |
| `consentement_pixel_email_base`   | Liste déroulante       | Base légale (`Consentement` / `Intérêt légitime`).          |
| `consentement_pixel_email_source` | Texte sur une ligne    | Origine (`CMP Sirdata`, identifiant ou TC String tronquée). |

{% hint style="info" %}
Le **nom interne** est figé après création et insensible à la casse. Notez-le : c'est la clé attendue dans le `properties` / `fields` des appels API.
{% endhint %}

***

#### 3. Lire le consentement à la finalité 7 côté CMP

Le pixel lui-même reste conditionné par les attributs `data-cmp-*` (voir la page dédiée). Pour **déclencher l'écriture vers HubSpot uniquement lorsque la finalité 7 est consentie**, utilisez le conditionnement Sirdata avec `data-cmp-src` pointant vers une **fonction JavaScript** (et non une URL).

```markup
<script
  data-cmp-src="pushConsentToHubSpot"
  data-cmp-extra-vendor="6"
  data-cmp-extra-purposes="7">
</script>
```

* `data-cmp-extra-vendor` : l'ID du **partenaire Sirdata** responsable du pixel (votre extra-vendorlist).
* `data-cmp-extra-purposes="7"` : la fonction n'est appelée **que si** l'utilisateur a consenti à la finalité Sirdata 7.
* `data-cmp-src="pushConsentToHubSpot"` : nom de la fonction JS exécutée une fois la condition remplie.

***

#### 4. Écrire la valeur dans HubSpot

{% hint style="danger" %}
**N'utilisez pas `_hsq.push(["identify", …])` pour écrire cette propriété.** La méthode `identify` du code de suivi ne fixe de façon fiable que l'**email** : elle **ignore les propriétés custom** (comportement confirmé, la requête part bien, mais HubSpot n'écrit pas la propriété). Utilisez l'une des deux méthodes ci-dessous.
{% endhint %}

{% hint style="info" %}
**Quelle méthode choisir ?** L'**API CRM serveur** est la plus robuste : elle n'est pas soumise au filtre anti-spam des formulaires et fonctionne depuis n'importe quel domaine (y compris un domaine de test). La **Forms API** est pratique sans back-end, mais elle exige que le domaine émetteur soit **déclaré dans HubSpot** — ce qui est impossible pour un domaine mutualisé (voir section 5).
{% endhint %}

{% tabs %}
{% tab title="Forms API (navigateur) — sans back-end" %}
On soumet à un **formulaire HubSpot** contenant le champ `consentement_pixel_email` via l'**API de soumission de formulaire**. Elle est publique (pas de jeton exposé), écrit les propriétés custom et rattache le cookie de suivi au contact.

Prérequis : créer un formulaire HubSpot avec les champs `email` et `consentement_pixel_email`, puis récupérer son **portalId** et son **formGuid**.

```javascript
async function pushConsentToHubSpot() {
  var email = getCurrentUserEmail();       // l'email connu du contact
  if (!email) return;                      // pas d'identité : on diffère

  var portalId = "VOTRE_PORTAL_ID";
  var formGuid = "VOTRE_FORM_GUID";
  var hutk = (document.cookie.match(/hubspotutk=([^;]+)/) || [])[1];

  await fetch(
    "https://api.hsforms.com/submissions/v3/integration/submit/" + portalId + "/" + formGuid,
    {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({
        fields: [
          { name: "email", value: email },
          { name: "consentement_pixel_email", value: "Oui" }
        ],
        context: {
          pageUri: location.href,
          pageName: document.title,
          ...(hutk ? { hutk } : {})   // rattache la soumission au contact suivi
        }
      })
    }
  );
}
```

{% hint style="warning" %}
**Le domaine émetteur doit être déclaré dans HubSpot** (voir section 5), sinon les soumissions sont bloquées comme spam et la fiche n'est pas mise à jour.
{% endhint %}
{% endtab %}

{% tab title="API CRM v3 (serveur) — recommandé" %}
La fonction côté navigateur transmet l'email et l'état du consentement à **votre back-end**, qui appelle l'API HubSpot avec un **jeton d'application privée** (jamais exposé au client). Cette voie n'est **pas** soumise au filtre anti-spam des formulaires.

```javascript
// Navigateur : on relaie vers notre propre endpoint
function pushConsentToHubSpot() {
  var email = getCurrentUserEmail();
  if (!email) return;
  fetch("/api/consent/email-pixel", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ email: email, consent: true })
  });
}
```

```bash
# Serveur : upsert du contact par email (PATCH idempotent)
curl --request PATCH \
  --url 'https://api.hubapi.com/crm/v3/objects/contacts/camille.martin@exemple.com?idProperty=email' \
  --header 'Authorization: Bearer VOTRE_JETON_PRIVE' \
  --header 'Content-Type: application/json' \
  --data '{
    "properties": {
      "consentement_pixel_email": "Oui",
      "consentement_pixel_email_date": "2026-07-01",
      "consentement_pixel_email_base": "Consentement",
      "consentement_pixel_email_source": "CMP Sirdata"
    }
  }'
```

{% hint style="info" %}
`idProperty=email` identifie le contact par son email plutôt que par son Record ID. Le contact doit déjà exister ; sinon utilisez `POST /crm/v3/objects/contacts/batch/upsert`. Le scope requis du jeton est `crm.objects.contacts.write`.
{% endhint %}
{% endtab %}
{% endtabs %}

***

#### 5. Déclarer le domaine émetteur (méthode Forms API uniquement)

Par défaut, HubSpot **bloque comme spam** les soumissions Forms API provenant d'un domaine qu'il ne reconnaît pas — motif *« Domaine de site non enregistré »*. La fiche contact n'est alors **pas** mise à jour.

Pour l'éviter, déclarez votre domaine dans **Paramètres → Suivi et analyse → Suivi avancé → Domaines de sites supplémentaires → Ajouter un domaine**.

{% hint style="danger" %}
**Un domaine mutualisé ne peut pas être déclaré.** Les hôtes en *suffixe public* (par ex. `mon-site.netlify.app`, `*.github.io`, `*.vercel.app`) sont **refusés silencieusement** par HubSpot : ils semblent ajoutés puis disparaissent après rechargement. Vous ne pouvez déclarer qu'un **domaine que vous possédez** (ex. `www.tonsite.com`). Sur un domaine de test mutualisé, la Forms API restera donc en spam → utilisez plutôt l'**API CRM serveur**.
{% endhint %}

{% hint style="info" %}
Les soumissions déjà bloquées se retrouvent dans **Formulaires → (votre formulaire) → Soumissions de spam** ; pour un test ponctuel vous pouvez les valider manuellement via **Retrait du filtre antispam** — elles créent alors les fiches et déclenchent les automatisations.
{% endhint %}

Cette étape ne concerne **pas** la méthode API CRM serveur, qui n'est pas filtrée et reste la voie recommandée en production comme en test.

***

#### 6. Vérifier le résultat sur la fiche contact

Après synchronisation, la propriété apparaît dans le groupe **Informations clés / de conformité** de la fiche contact.

Vous pouvez ensuite exploiter cette propriété pour :

* **Segmenter** une liste active des contacts ayant consenti au suivi email ;
* **Conditionner un workflow** d'envoi (n'inclure le pixel que pour `consentement_pixel_email = Oui`) ;
* **Produire une preuve** de consentement lors d'un contrôle ou d'une demande d'accès.

***

#### 7. Bonnes pratiques

* **Une seule source de vérité.** La CMP Sirdata reste l'autorité du recueil ; HubSpot en est le **reflet**, pas l'inverse. Ne modifiez pas la valeur manuellement.
* **Aligner valeur et type de champ.** Radio/Liste `Oui`/`Non` → `"Oui"` ; case à cocher → `"true"`. Une valeur non conforme est silencieusement rejetée.
* **Horodater systématiquement.** Une preuve de consentement sans date a peu de valeur juridique : remplissez toujours `consentement_pixel_email_date`.
* **Gérer le retrait.** Si l'utilisateur retire son consentement, repassez la propriété à `Non` (même mécanisme, valeur inversée).
* **Ne jamais exposer un jeton API côté client.** Pour la voie serveur, gardez le jeton privé côté back-end.
* **Différer si l'identité est inconnue.** Pas d'email = pas d'écriture contact. Stockez l'état localement et synchronisez à l'identification.
* **Valider juridiquement.** Le choix de la base légale (consentement vs intérêt légitime) et la durée de conservation relèvent de votre DPO.

{% hint style="warning" %}
Les libellés et chemins d'écran HubSpot peuvent varier selon votre édition et la langue de l'interface. Reportez-vous à votre instance pour les intitulés exacts
{% endhint %}


# Sous traiter les conditionnements

Pouvez-vous conditionner les tags à notre place ?

Nous proposons des prestations de conditionnement, retrouvez le détail de notre offre sur ce [lien](https://cmp.docs.sirdata.net/gestion-des-scripts/prestations-conditionnement-tags).

{% embed url="<https://sirdata.com/fr/Contact>" %}


# Identification des cookies

Comment identifier les cookies sur mon site ?

Nous recommandons d'utiliser [Cookieviz](https://linc.cnil.fr/cookieviz-23-une-nouvelle-version-plus-securisee-plus-stable-et-une-mise-en-avant-du-role-des), l'outil développé et utilisé par la CNIL. Il vous indiquera les cookies potentiellement problématiques.

Il faudra ensuite pour chaque balise :

* Étudier l’éventuelle présence de traceurs non exemptés (cookies, indexdb, local storage…) (Directive ePrivacy)
* Évaluer les traitements de données personnelles et le cas échéant les finalités poursuivies par vos partenaires et leurs bases légales respectives (RGPD)
* Déterminer si le tag/balise est automatiquement pris en charge par vos partenaires via les API de la CMP (exemple : le « Consent Mode » de Google et de Microsoft Bing)

Autrement, vous pouvez faire appel à Sirdata pour opérer un [audit ](/prestations-cmp/audit-de-conformite)de conformité et ainsi un [inventaire ](/prestations-cmp/inventaire-partenaires)des cookies déposés ([nous contacter](https://sirdata.com/fr/Contact)).


# Cookies exemptés

Comment savoir si un cookie est exempté de consentement ?

Consulter les informations disponibles sur le site de la CNIL : <https://www.cnil.fr/fr/cookies-et-autres-traceurs/regles/cookies-solutions-pour-les-outils-de-mesure-daudience>

{% embed url="<https://sirdata.com/fr/Contact>" %}


# Pourquoi la CMP ne supprime-t-elle pas les cookies existants après un refus ?

Il arrive qu'un utilisateur accepte les cookies, puis change d'avis et retire son consentement via la bannière de gestion des préférences. En inspectant son navigateur, il constate alors que les cookies déposés précédemment sont toujours présents.

C'est un comportement normal, partagé par l'ensemble des CMP du marché (Consent Management Platforms). Cet article explique pourquoi ces cookies ne sont pas supprimés, et pourquoi cela reste conforme au RGPD et aux exigences de la CNIL.

### Ce que dit la réglementation

Contrairement à une idée répandue, **aucun texte n'impose la suppression physique des cookies déjà déposés** lors du retrait du consentement, ni le RGPD, ni la directive ePrivacy, ni l'article 82 de la loi Informatique et Libertés.

L'obligation légale porte sur autre chose : **faire cesser toute opération de lecture et d'écriture** de ces cookies dès que l'utilisateur retire son consentement.

Deux textes structurent cette analyse :

* **Article 7(3) du RGPD** : « le retrait du consentement ne compromet pas la licéité du traitement fondé sur le consentement effectué avant ce retrait ». Le dépôt initial des cookies, effectué avec le consentement de l'utilisateur, était licite. Ce qui compte juridiquement, c'est ce qui se passe *après* le retrait.
* **FAQ cookies de la CNIL (question 29)** : la CNIL indique que l'éditeur « *peut* faire cesser les opérations de lecture ou d'écriture en supprimant les cookies déposés sur le navigateur ». La suppression est présentée comme *un moyen possible* d'atteindre l'objectif, pas comme une obligation. Pour les cookies tiers, la CNIL demande « la désactivation de toute requête vers les domaines tiers », pas leur effacement.

Les décisions récentes de la CNIL (Orange, novembre 2024 ; Condé Nast, SAN-2025-010) confirment cette lecture : les sanctions ont porté sur la **poursuite de la lecture des cookies après le retrait**, jamais sur l'absence de suppression. L'exigence retenue est la mise en place de solutions techniques **empêchant la lecture**, y compris pour les cookies liés au domaine de l'éditeur.

### La raison technique : une CMP ne peut pas tout supprimer

Au-delà du droit, il existe une limite technique incontournable liée au fonctionnement des navigateurs.

La politique de sécurité des navigateurs (*same-origin policy*) fait qu'un script JavaScript exécuté sur votre site, ce qu'est la CMP, ne peut accéder qu'aux cookies rattachés à votre propre domaine :

| Type de cookie                                                                              | Suppression possible par la CMP ?                                      |
| ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| Cookies *first-party* (votre domaine)                                                       | ✅ Techniquement possible                                               |
| Cookies *third-party* (domaines partenaires : régies publicitaires, outils de mesure, etc.) | ❌ Impossible, seul le domaine qui a déposé le cookie peut le supprimer |

Une CMP qui prétendrait « supprimer tous les cookies » au moment du refus ne pourrait donc tenir cette promesse que partiellement. Plutôt que d'offrir une garantie trompeuse, l'approche standard consiste à agir là où se situe la véritable obligation : **le blocage**.

### Ce qui se passe réellement lors du retrait du consentement

Lorsque l'utilisateur retire son consentement :

1. La CMP enregistre le nouveau statut de consentement et le transmet aux partenaires (par exemple via le TCF de l'IAB).
2. Les scripts et tags soumis à consentement ne sont plus chargés.
3. Les requêtes vers les domaines tiers concernés ne sont plus émises.

Conséquence : les cookies encore visibles dans le navigateur ne sont **plus jamais lus, écrits, ni transmis**. Ils deviennent des fichiers inertes (« *dead files* »), sans aucune fonction. Aucun traitement de données personnelles n'a lieu, c'est précisément ce que la réglementation exige.

Ces cookies inertes finissent par disparaître d'eux-mêmes : à leur date d'expiration, ou lorsque l'utilisateur nettoie les données de son navigateur.

### Comment vérifier que le blocage est effectif

La présence d'un cookie dans le navigateur n'est pas un indicateur de traçage. Le bon indicateur, c'est le trafic réseau. Pour le vérifier :

1. Ouvrez les outils de développement du navigateur (F12), onglet **Réseau** (*Network*).
2. Acceptez les cookies, puis retirez votre consentement via la bannière.
3. Rechargez la page et observez les requêtes : aucune requête ne doit être émise vers les domaines des partenaires soumis à consentement, et les cookies concernés ne doivent apparaître dans les en-têtes d'aucune requête.

C'est ce critère d'**effectivité du retrait** que la CNIL contrôle lors de ses vérifications.

### En résumé

* La réglementation n'exige pas la suppression des cookies déjà déposés, mais l'**arrêt effectif de toute lecture et écriture** après le retrait du consentement.
* Techniquement, une CMP ne peut de toute façon pas supprimer les cookies tiers (*same-origin policy*).
* Après un refus, la CMP bloque les scripts et les requêtes concernés : les cookies restants sont inertes et aucun traitement n'a lieu.
* La conformité se vérifie dans le trafic réseau, pas dans la simple présence de cookies sur le terminal.

### Pour aller plus loin

* [CNIL — Questions-réponses sur les lignes directrices et la recommandation « cookies et autres traceurs »](https://cnil.fr/fr/cookies-et-autres-traceurs/regles/cookies/FAQ)
* [CNIL — Cookies et traceurs : que dit la loi ?](https://www.cnil.fr/fr/cookies-et-autres-traceurs/que-dit-la-loi)
* [RGPD, article 7(3) — Conditions applicables au consentement](https://eur-lex.europa.eu/legal-content/FR/TXT/?uri=CELEX%3A32016R0679)


# Consentement pour Captcha

Ai-je besoin d'un consentement pour déployer un Captcha ?

Le plus souvent : **oui**.

Lorsque la solution a pour seule et unique finalité la sécurisation d’un formulaire au bénéfice de l’utilisateur par exemple, son consentement n’est pas obligatoire.

En revanche, si les données sont ou peuvent être exploitées également par le fournisseur de la solution ou par l’éditeur du formulaire pour toute autre finalité, le consentement est nécessaire.


# Fonctionnement


# Navigation privée

Pourquoi le consentement est-il valable sur mon site en navigation privée mais pas sur plusieurs sites en navigation classique  ?

Lorsque le navigateur ne prend pas en charge les cookies tiers ou que l'utilisateur les a désactivés, il n'est pas possible d'appliquer ses choix sur plusieurs sites. Dans ce cas, les choix de l'utilisateur sont uniquement appliqués sur le site visité.

Désormais, sur le navigateur Chrome en navigation privée, les cookies tiers sont désactivés par défaut, c'est pourquoi les choix sont appliqués sur ce que l'on appelle un scope local. Il est possible de réactiver les cookies tiers en modifiant les paramètres Chrome.




---

[Next Page](/llms-full.txt/1)

