# Google Tag Manager (GTM)

TrustCommander fournit un plug-in d'intégration avec Google Tag Manager. La mise configuration se fait en plusieurs étapes techniques.

## Mise en place

Vous trouverez ci-dessous les étapes requises pour une mise en place de TrustCommander standard.

1. Choisissez la configuration par défaut du compte (voir la rubrique [Options](/trustcommander/fr/user-guides/options.md#account-default-configuration)).
2. Configurez vos catégories TrustCommander (voir la rubrique [Gestion des catégories](/trustcommander/fr/user-guides/categories-and-tags/manage-categories.md)).
3. Créez une ou plusieurs bannières (voir la rubrique [Gestion des bannières](/trustcommander/fr/user-guides/privacy-banners/manage-banner.md))
4. Déployez vos bannières TrustCommander sur le CDN Commanders Act ou sur vos propres serveurs (voir la rubrique [Déploiement des bannières](/trustcommander/fr/user-guides/privacy-banners/deploy-banner.md)).
5. Installez le tag TrustCommander (voir ci-dessous).
6. Gérez les tags GTM avec TrustCommander (voir ci-dessous).

## Installer le tag TrustCommander

Pour installer TrustCommander avec Google Tag Manager, vous devez ajouter le tag JavaScript suivant sur votre site web. Ce bout de code peut être ajouté dans le `<head>` du site web ou via un tag HTML personnalisé dans Google Tag Manager.

```markup
<script type="text/javascript">
    var tCPrivacyTagManager = "gtm";
</script>
<script type="text/javascript" src="{{ privacy_tag_url }}"></script>
```

`tCPrivacyTagManager` doit prendre la valeur `"gtm"`.  Cette variable permet à TrustCommander d'envoyer les paramètres de privacy à GTM. Elle poussera un événement`tcConsentChanged` au data layer GTM en incluant les paramètres de confidentialité d'un visiteur dans la variable `tcCategoriesConsent`. L'événement est envoyé dès que TrustCommander se charge sur une page et dans le cas où un visiteur met à jour ses paramètres de confidentialité.

`{{ privacy_tag_url }}` doit être remplacé par l'URL de votre fichier JavaScript de privacy. Vous trouverez cette URL à l'étape `GENERATE & DEPLOY` des bannières de Privacy.

![](/files/-Lqph26Emdpydy-KNx4f)

## Gérer les tags GTM tags avec TrustCommander

### **Ajouter les déclencheurs de tags dans Google Tag Manager**

| Champ                        | Valeur                                                                                    |
| ---------------------------- | ----------------------------------------------------------------------------------------- |
| **Variable name**            | Nom de la variable de consentement dans l'interface GTM (recommandé: tcCategoriesConsent) |
| **Variable Type**            | Data Layer variable                                                                       |
| **Data Layer Variable Name** | tcCategoriesConsent                                                                       |
| **Data Layer** **version**   | Sélectionnez la dernière version du data layer disponible                                 |

### **Mettre en place le déclencheur "Consent Changed"**

Créez un nouveau `Trigger` (déclencheur) pour chaque catégorie ou sous-catégorie TrustCommander. Ces déclencheurs peuvent ensuite être utilisés pour lancer vos tags uniquement quand le visiteur a accepté une catégorie ou sous-catégorie TrustCommander spécifique. \
Créez chaque déclencheur avec les paramètres suivants :&#x20;

| Champ                                                                           | Valeur                                                                                                                                          |
| ------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| **Trigger name**                                                                | Nom du déclencheur dans l'interface GTM (nous vous recommandons d'utiliser le nom de la catégorie TrustCommander, ex: "Catégorie Retargeting"). |
| **Trigger Type**                                                                | Custom Event                                                                                                                                    |
| **Event name**                                                                  | tcConsentChanged                                                                                                                                |
| **This trigger fires on**                                                       | Some Custom Events                                                                                                                              |
| **Fire this trigger when an Event occurs and all of these conditions are true** | tcCategoriesConsent `contient`l'ID de la catégorie TrustCommander associée.                                                                     |

### **Appeler la bannière de privacy**&#x20;

{% hint style="warning" %}
Les visiteurs pourront activer ou désactiver uniquement les sous-catégories et pas la catégorie principale dans la bannière. Dans le cas où une catégorie a des sous-catégories vous devrez donc utiliser l'ID de la sous-catégorie au lieu de l'ID de la catégorie pour déclencher vos tags.&#x20;
{% endhint %}

![](/files/-Lqph26LKz7hhdt1Zmb4)

Il y a 4 étapes pour déclencher les tags dans Google Tag Manager (GTM).

### **Créer une variable de consentement**

Dans l’interface GTM, onglet "Variables", créez une variable custom pour calculer le statut du consentement donné par l’utilisateur : pas de consentement, optout, optin ou partiellement optin. Créez une variable de type "User Defined".

![](/files/-M3S8JRvI6-TgIDfQA75)

* **Nom de la variable**: tcCategoriesConsent (c’est le nom qui apparaîtra sur votre interface, vous pouvez donc choisir un autre nommage)
* **Variable Type**: "Data Layer Variable"
* **Data Layer Variable Name**: tcCategoriesConsent (la variable utilisée par TrustCommander quand vous ajoutez tCPrivacyTagManager = "gtm" dans le code source du site)
* **Data Layer** **version**: Sélectionnez la dernière version du data layer disponible

```javascript
function(){
    if (typeof tC.privacy == "undefined") {

        var cookieName = "TC_PRIVACY=";
        var cookieSeparator = "@"

        var privacyCookie = "";
        var cookieCategoryName = cookieName+"_CENTER=";
        var cookieData = null;
        var categories = null;
        var decodedCookie = decodeURIComponent(document.cookie);
        var ca = decodedCookie.split(';');

        for (var i = 0; i <ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') {
                c = c.substring(1);
            }
            if (c.indexOf(cookieName) == 0) {
                privacyCookie = c.substring(cookieName.length, c.length);
            } else if (c.indexOf(cookieCategoryName) == 0) {
                categories = c.substring(cookieCategoryName.length, c.length);
            }
        }

        if (privacyCookie === "") {
            return "no_consent";
        } else if (privacyCookie) {
            cookieData = privacyCookie.split(cookieSeparator);
        } else {
            cookieData = [];
        }

        var optType = parseInt(cookieData[0] || 0);

        if (categories == "ALL") {
            if (optType === 1) {
                return "optout";
            } else {
                return "all_consent";
            }
        }

        return optType === 0 && categories != -1 ? categories : "optout";
    }

    if (tC.getCookie(tC.privacy.getCN()) === "")  {
        return "no_consent";
    } else if (tC.privacy.getOptinCategories().join(",") === ""){
        return "optout";
    } else {
        return tC.privacy.getOptinCategories().join(",");
    }
}
```

{% hint style="warning" %}
Important : pour faciliter l'implémentation des règles de Privacy sur vos tags qui ont peut-être d'autres déclencheurs associés, nous vous recommandons de travailler avec la logique d'"exception" et de suivre le fonctionnement expliqué ci-dessous. Il s'agit de créer des règles qui ne déclencheront pas le tag si la catégorie est refusée plutôt que des règles qui déclencheront le tag si la catégorie est acceptée.
{% endhint %}

![](/files/-M3SDzVomX8H_y7krRbU)

![](/files/-M3SE74MAWz95hkwgTXA)

Configurez le déclencheur de la façon suivante :

* **Trigger name**: Catégorie retargeting category (le nommage dépendra ici du nom des catégories que vous avez créées et du nommage que vous souhaitez voir apparaître sur votre interface)
* **Trigger Type**: "Custom Event"
* **Event name**: tcConsentChanged (la variable utilisée par TrustCommander quand vous ajoutez tCPrivacyTagManager = "gtm" dans le code source du site)
* **This trigger fires on**: "Some Custom Events"
* **Fire this trigger when an Event occurs and all of these conditions are true**: choisissez la variable tcCategoriesConsent créée à l'étape précédente, l'opérateur “égal” (ou “contient”), et le nom de la catégorie que vous avez déclarée dans l'interface TrustCommander.

![](/files/-M3SF8xeGLfeteoz1g7n)

{% hint style="warning" %}
Soyez vigilants quand vous créez des sous-catégories associées à des catégories : vous devez entrer l'ID de la sous-catégorie et non l'ID de la catégorie dans`Trust commander values`, puisque l'utilisateur pourra activer ou désactiver uniquement la sous-catégorie et pas la catégorie principale dans la bannière.
{% endhint %}

### Affecter le déclencheur "Consent Changed" aux tags

* **Nom du déclencheur** : "trust\_commander".&#x20;
* **Trigger Type** : "Custom Event"&#x20;
* **Event name** : "trust\_commander"&#x20;
* **This trigger fires on** : "All Custom Events"

Dans la section "Triggers", commencez par créer le déclencheur suivant qui permet de ne pas activer les tags si l’utilisateur n’a pas encore donné son consentement.

Si vous votre site est en mode "optout par défaut" (qui consiste à bloquer les tags quand le visiteur arrive sur le site, en accord avec les recommandations du Règlement Général sur la Protection des données, le RGPD), vous devez également faire la configuration suivante :

![Exemple: si vous voulez ajouter un déclencheur au tag Criteo selon si l'utilisateur a accepté ou pas la catégorie ‘Retargeting’, vous lui affecterez le déclencheur ‘Retargeting category’ créé précédemment.](/files/-Lqph26MijdfGIxS-XYd)

![](/files/-M3SGc5d_gFPL0lO65fc)

Créez ensuite un tag personnalisé que vous déclencherez sur toutes les pages (il s'agit de l'écouteur d'événements TrustCommander) dans la section "Tags" :

* Nom du tag: "Trust commander event listener"
* Trigger Type: "Custom HTML"&#x20;
* HTML: copiez-collez le code suivant :&#x20;

```javascript
<script>
//No choice expressed by the user yet
if({{Trust commander values}} === "no_consent"){
window.tc_closePrivacyButton = window.tc_closePrivacyButton || function (){
window.dataLayer.push({"event":"trust_commander"});  
}
window.tc_closePrivacyCenter = window.tc_closePrivacyCenter || function (close_type){
if(close_type !== "cross"){  
window.dataLayer.push({"event":"trust_commander"});  
}  
}
} 
//Choice already expressed
else{

}
</script>  

```

* Triggering : "All pages"

![](/files/-M3SHSnyDVGtw5Sjcw5D)

### Déclencher les tags en fonction du consentement utilisateur&#x20;

Dans l'interface GTM, onglet `Tags`, affectez le déclencheur précédemment créé à vos tags pour les déclencher selon les catégories TrustCommander. Ces déclencheurs remplaceront votre trigger "pageview".

![](/files/-M3SHdl2oQaR1mKoP0v-)

![](/files/-M3SHpeiq2lGJ0H8cFN9)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://community.commandersact.com/trustcommander/fr/setup-guides/tag-manager/google-tag-manager.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
