Privacy

 

Avant-propos

Le plugin Privacy (à activer depuis l’interface Tag Composer) permet à un éditeur de contrôler les données collectées au sein de la solution de mesure d’audience, en fonction des différentes législations auxquelles il se réfère. Il vous offre ainsi la possibilité d’adapter votre marquage grâce à une gestion précise des différents paramètres de mesure (propriétés envoyées, traceurs utilisés, …), dans le respect de la réglementation en vigueur.

 

Notion d’autorité

Pour son fonctionnement, le plugin s’appuie par défaut sur une configuration définissant un ensemble de règles de traitement à appliquer selon l’autorité choisie.

Au sens strict, une autorité représente une entité de contrôle chargée de surveiller l‘application d’un règlement relatif à la protection des données personnelles. Cela se traduit dans le code par la présence d’objets de configuration de type authority comprenant différents visitorMode : une autorité cnil pour l’application d’un mode spécifique d’exemption de consentement (mesure hybride CNIL) et une autorité default pour tous les autres cas définis par AT Internet.

Une autorité contient donc différents modes liés au consentement qu’il est possible d’activer par l’intermédiaire du marquage.

Il est aussi possible de créer des autorités personnalisées, qui contiendront des modes visiteurs propres à vos besoins.

Chaque « mode visiteur » contient une liste d’inclusion de paramètres du Tracker qui agira au niveau du storage (cookies) ou du buffer (paramètres de hits). Il est donc possible d’interagir à différents niveaux et de conserver la maîtrise complète des données à transmettre.

L’autorité default permet ainsi d’activer les modes standards suivants :

  • optin : pour une mesure exhaustive après consentement.
  • optout : pour une mesure restreinte et anonymisée avec idclient valant « OPT-OUT ».
  • no-consent : pour une mesure restreinte, sans dépôt de cookie, anonymisée grâce à l’option « exclusion de trafic non cookisé » et avec idclient valant « Consent-No ».
  • random : pour une mesure restreinte avec idclient dynamique changeant à chaque chargement, avant consentement.

Les « mode visiteur » optin, optout et random étant des modes génériques nécessitant une intelligence supplémentaire liée à la complexité du métier, ces derniers disposent de « helpers » dédiés pour leur activation. Vous ne devez pas les utiliser avec la méthode setVisitorMode

L’autorité cnil permet d’activer le mode standard suivant :

  • exempt : pour une Mesure Hybride avec exclusion des données jugées non strictement nécessaires.

Le détail de la mise en place de notre Mesure Hybride est présent au sein de notre Privacy Center. Si vous voulez plus d’informations sur la gestion des sources de marketing, veuillez consulter cet article.

Lorsqu’un « mode visiteur » est activé, un cookie intitulé atauthority comprenant le nom de l’autorité et du mode visiteur est enregistré pour une durée de 397 jours configurable, si les règles appliquées permettent effectivement cet enregistrement.

 

Activer un mode visiteur standard

Le plugin Privacy fournit une série de fonctions (helpers) permettant de mettre en place les modes standards, défini par AT Internet.

Lorsqu’un mode a été activé, le cookie atauthority est automatiquement créé pour conserver l’information (si aucune règle n’empêche l’écriture en cookie).

Au chargement d’une page, le plugin procède à une vérification du cookie. Si ce dernier existe alors le plugin reprend automatiquement la dernière configuration. Un test sur l’autorité getAuthority() et le mode getVisitorMode() permet à tout moment de choisir le comportement à adopter en termes de marquage.

 

Activation du mode « opt-in »

 

Méthode de marquage

setVisitorOptin()

Activer le mode « optin ».

Exemple

tag.privacy.setVisitorOptin();
 

Comportement

L’activation du mode optin entraîne une mesure exhaustive par le Tracker. Tous les paramètres sont alors conservés et envoyés.

Exemple

var tag = new ATInternet.Tracker.Tag();
tag.privacy.setVisitorOptin();
tag.page.set({
    name: 'pageName',
    chapter1: 'chap1',
    chapter2: 'chap2',
    chapter3: 'chap3',
    level2: '123',
});
tag.dispatch();
 

Activation du mode « Opt-Out »

 

Méthode de marquage

setVisitorOptout()

Activer le mode « optout ».

Exemple

tag.privacy.setVisitorOptout();
 

Comportement

L’activation du mode optout entraîne une mesure restreinte par le Tracker. La liste des paramètres autorisés (par défaut) est la suivante :

{
  "include": {
    "storage": [
      "atuserid",
      "atauthority"
    ],
    "buffer": [
      "s",
      "idclient",
      "ts",
      "vc",
      "vm",
      "click",
      "type"
    ]
  }
}

Le paramètre de hit « idclient » (identifiant visiteur) prendra la valeur « OPT-OUT » et le trafic généré sera anonymisée et restitué uniquement au sein de l’analyse Privacy d’Explorer.

Exemple de marquage

var tag = new ATInternet.Tracker.Tag();
tag.privacy.setVisitorOptout();
tag.page.set({
    name: 'pageName', // will not be sent
    chapter1: 'chap1', // will not be sent
    chapter2: 'chap2', // will not be sent
    chapter3: 'chap3', // will not be sent
    level2: '123', // will not be sent
});
tag.dispatch();

Ici, le niveau 2 « 123 » ne sera pas envoyé dans le hit, le paramètre « s2 » ne faisant pas partie de la liste « buffer » autorisée. Il en va de même pour les informations de page, le paramètre « p » n’étant pas autorisé.

Par défaut, les hits générés lorsque le mode Opt-out est activé sont envoyés. Vous pouvez si vous le souhaitez bloquer ces envois en surchargeant la variable de configuration du Tracker sendHitWhenOptOut, ou depuis la section « Paramètre vie privée » de Tag Composer.

Exemple

var config = {
	sendHitWhenOptOut: false // true by default
};
var tag = new ATInternet.Tracker.Tag(config);
 

Activation du mode « No-consent »

 

Méthode de marquage

setVisitorMode('default', 'no-consent')

Activer le mode « no-consent » de l’autorité par défaut.

Exemple

tag.privacy.setVisitorMode('default', 'no-consent');
 

Comportement

L’activation du mode no-consent entraîne une mesure restreinte par le Tracker. La liste des paramètres autorisés (par défaut) est la suivante :

{
  "include": {
    "storage": [],
    "buffer": [
      "s",
      "idclient",
      "ts",
      "vc",
      "vm",
      "click",
      "type"
    ]
  }
}

Le paramètre de hit « idclient » (identifiant visiteur) prendra la valeur « Consent-NO » et le trafic généré devra être anonymisé grâce à l’option d’ « exclusion de trafic non cookisé« . Les données seront ainsi restituées uniquement au sein de l’analyse Privacy d’Explorer

Exemple

var tag = new ATInternet.Tracker.Tag();
tag.privacy.setVisitorMode('default', 'no-consent');
tag.page.set({
    name: 'pageName', // will not be sent
    chapter1: 'chap1', // will not be sent
    chapter2: 'chap2', // will not be sent
    chapter3: 'chap3', // will not be sent
    level2: '123', // will not be sent
});
tag.dispatch();

Ici, le niveau 2 « 123 » ne sera pas envoyé dans le hit, le paramètre « s2 » ne faisant pas partie de la liste « buffer » autorisée. Il en va de même pour les informations de page, le paramètre « p » n’étant pas autorisé.

 

Activation du mode « Exemption CNIL »

 

Méthode de marquage

setVisitorMode('cnil', 'exempt')

Activer le mode « exempt » de l’autorité « cnil ».

Exemple

tag.privacy.setVisitorMode('cnil', 'exempt');
 

Comportement

L’activation du mode hybride exempt de l’autorité cnil permet une mesure restreinte par le Tracker. Seuls les paramètres jugés « strictement nécessaires » sont collectés. La liste des paramètres autorisés (par défaut) est la suivante :

{
  "include": {
    "storage": [
      "atuserid",
      "atauthority"
    ],
    "buffer": [
      "s",
      "idclient",
      "p",
      "vtag",
      "ptag",
      "ts",
      "vc",
      "vm",
      "click",
      "type",
      "olt",
      "cn",
      "mh",
      "ref",
      "pclick", // since 5.28.2
      "s2click" // since 5.28.2
    ]
  }
}

Comme pour tous les autres modes, la liste d’inclusion des paramètres peut être étendue si nécessaire. Par exemple, il est possible d’ajouter une variable personnalisée à cette liste si l’on considère que les données sont strictement nécessaires, en utilisant la méthode extendIncludeBuffer(). Le détail d’ajouts de paramètres est présent au sein de la section « étendre les paramètres d’un mode (stockage et données collectées) ».

Exemple

var tag = new ATInternet.Tracker.Tag();
tag.privacy.setVisitorMode('cnil', 'exempt');
tag.privacy.extendIncludeBuffer('x1'); // The site indicator "x1" is added to the inclusion list
tag.page.set({
    name: 'pageName',
    chapter1: 'chap1',
    chapter2: 'chap2',
    chapter3: 'chap3',
    level2: '123', // will not be sent
});
tag.customVars.set({
    site: {
        1: '[site1]'
    }
});
tag.dispatch();

Ici, le niveau 2 « 123 » ne sera pas envoyé dans le hit, le paramètre « s2 » ne faisant pas partie de la liste « buffer » autorisée.

 

Activation du mode « Random »

 

Méthode de marquage

setVisitorRandomID()

Activer le mode « random ».

Exemple

tag.privacy.setVisitorRandomID();
 

Comportement

L’activation du mode random entraîne une mesure restreinte par le Tracker. La liste des paramètres autorisés (par défaut) est la suivante :

{
  "include": {
    "storage": [],
    "buffer": [
      "s",
      "idclient",
      "p",
      "vtag",
      "ptag",
      "ts",
      "vc",
      "vm",
      "ref",
      "xto",
      "click",
      "type"
    ]
  }
}

Le paramètre de hit « idclient » (identifiant visiteur) prendra une valeur définie sous la forme d 'un GUID, mais ce dernier ne sera pas conservé pour éviter toute réconciliation. Chaque chargement de page entraînera donc un changement de valeur de l 'identifiant visiteur.

Exemple

var tag = new ATInternet.Tracker.Tag();
tag.privacy.setVisitorRandomID();
tag.page.set({
    name: 'pageName',
    chapter1: 'chap1',
    chapter2: 'chap2',
    chapter3: 'chap3',
    level2: '123', // will not be sent
});
tag.dispatch();

Ici, le niveau 2 « 123 » ne sera pas envoyé dans le hit, le paramètre « s2 » ne faisant pas partie de la liste « buffer » autorisée.

 

Étendre les paramètres d’un mode (stockage et données collectées)

 

Étendre le stockage (cookies)

extendIncludeStorage(storageParam)

Ajouter des paramètres de stockage à la liste d’inclusion de tous les modes.

ParamTypeDescription
storageParamObject|string|arrayParamètres de stockage

Il est important d’étendre le storage avant d’activer un mode si vous souhaitez que la liste ajoutée soit prise en compte.

Exemples

tag.privacy.extendIncludeStorage('atidvisitor'); // entire atidvisitor storage
tag.privacy.extendIncludeStorage({'atidvisitor': ['an', 'ac']}); // only 'an' and 'ac' from atidvisitor
tag.privacy.extendIncludeStorage([{'atidvisitor': ['an', 'ac']}, {'atredir'}]); // 'an' and 'ac' from atidvisitor and entire atredir
tag.privacy.extendIncludeStorage([{'atidvisitor': ['an', 'ac'], 'atredir': ['an', 'ac']}]); // 'an' and 'ac' from atidvisitor and atredir
 

Étendre le buffer (paramètres de hit)

extendIncludeBuffer(bufferParam)

Ajouter des paramètres de buffer à la liste d’inclusion de tous les modes.

ParamTypeDescription
bufferParamObject|string|arrayParamètres de buffer

Il est important d’étendre le buffer après l’activation d’un mode si vous souhaitez que la liste ajoutée soit prise en compte.

 

Syntaxe d’ajout de paramètres

Différents formats sont autorisés pour ajouter vos paramètres, en fonction de la version de votre librairie.

 
SmartTag < version 5.28.0
  • an: ajoute le paramètre de la querystring an à la liste d’inclusion de tous les modes
  • ["ref", "s2", "x1"]: ajoute les trois paramètres de la querystring à la liste d’inclusion de tous les modes
  • {"stc":["device", "medium"]}: ajoute les clés device et medium de l’objet stc à la liste d’inclusion de tous les modes
  • {"events":["name","data_medium"]}: ajoute le nom de l’event (name) et les propriétés qui débutent par medium à la liste d’inclusion de tous les modes. _ est utilisé pour définir un sous-objet

La version 5.28.0 du SmartTag corrige certains comportements liés à l’usage du plugin Privacy, et simplifie la nomenclature permettant d’étendre les paramètres d’un mode.

Nous vous recommandons de mettre à jour vos marqueurs.

Exemple

tag.privacy.extendIncludeBuffer('an'); // buffer parameter 'an'
tag.privacy.extendIncludeBuffer(['an', 'ac']); // buffer parameters 'an' and 'ac'
tag.privacy.extendIncludeBuffer({"stc":["custom1","custom2"]}); // buffer parameter 'stc', keys 'custom1' and 'custom2'
 
SmartTag >= version 5.28.0

À partir de la v5.28.0 et sur Tag Composer, les formats suivants sont acceptés :

  • an: ajoute le paramètre de la querystring an à la liste d’inclusion de tous les modes (dans le cas d’une propriété typé, il sera nécessaire d’y intégrer le préfixe)
  • stc/custom_key: ajoute la clé custom_key de l’objet stc à la liste d’inclusion de tous les modes. / est utilisé pour définir un sous-objet (format valable uniquement pour le paramètre stc)
  • events_name: ajoute le nom de l’event (name) à la liste d’inclusion de tous les modes. _ est utilisé pour définir un sous-objet (format valable uniquement pour les paramètres events et context – nécessaire pour autoriser des events)
  • events_data_medium: ajoute la propriété de l’event medium à la liste d’inclusion de tous les modes. _ est utilisé pour définir un sous-objet (format valable uniquement pour les paramètres events et context)

exempt#an : vous pouvez étendre la liste d’inclusion d’un mode particulier en préfixant l’élément par [mode]# pour limiter à ce mode uniquement.

Exemple

tag.privacy.extendIncludeBuffer('an'); // buffer parameter 'an'
tag.privacy.extendIncludeBuffer(['an', 'ac', 'b:is_premium']); // buffer parameters 'an', 'ac' and 'b:is_premium'
tag.privacy.extendIncludeBuffer('exempt#stc/my_key'); // buffer parameter 'stc', key 'my_key' for exempt mode
tag.privacy.extendIncludeBuffer(['exempt#stc/my_key', 'an']); // buffer parameter 'stc', key 'my_key' for exempt mode + buffer parameter an for all modes
tag.privacy.extendIncludeBuffer(['events_name', 'events_data_prop1', 'events_data_prop2']); // allow properties "prop1" and "prop2" for events. In this case, "events_name" is required

Afin de vous accompagner dans le choix de la bonne syntaxe à mettre en place, un article est mis à votre disposition dans notre Privacy Center.

Au sein de ce même article, vous verrez comment ajouter des paramètres depuis Tag Composer directement, à la place des marqueurs. Attention, une surcharge des marqueurs a la priorité par rapport à la configuration réalisée depuis Tag Composer.

 

updateStorageDuration

updateStorageDuration(storageDuration)

Mettre à jour la durée de stockage du cookie « atauthority ».

ParamTypeDescription
storageDurationnumberDurée de conservation en jours (397 par défaut)

Exemple

tag.privacy.updateStorageDuration(90);
 

Création et activation d’un mode personnalisé

 

Déclaration d’une autorité personnalisée

Vous pouvez, en cas de besoin, ajouter une autorité personnalisée si les règles déjà présentes ne répondent pas à votre besoin. Pour cela, vous devez connaître la structure d’un objet authority (changez les valeurs entre [ ]) :

// Declaration of authority
var authority = {
    "name": "[authorityName]",  // Mandatory
    "[visitorModeName]": {
        "name": "[visitorModeName]",  // Mandatory
        "storageDuration": 397,  // Mandatory
        "trackerSettings": {
            "disableStorage": false,
            "disableCookie": false
        },
        "add": { // Parameters to add
            "buffer": {
                "visitorConsent": { // Mandatory
                    "param": "vc",
                    "value": false // true|false
                },
                "visitorMode": { // Mandatory
                    "param": "vm",
                    "value": "[visitorModeName]"
                }
            }
        },
        "include": { // Parameters to include
            "storage": [],
            "buffer": []
        }
    }
};

tag.privacy.addAuthority(authority); // Adding custom authority
tag.privacy.setVisitorMode('[authorityName]', '[visitorModeName]'); // Activation of the custom visitor mode 

Exemple de marquage d’une autorité personnalisée

// Declaration of custom authority
var customAuthority = {
    "name": "customAuthority",
    "customMode": {
        "name": "customMode",
        "storageDuration": 397,
        "add": {
            "buffer": {
                "visitorConsent": {
                    "param": "vc",
                    "value": false
                },
                "visitorMode": {
                    "param": "vm",
                    "value": "customMode"
                }
            }
        },
        "include": {
            "storage": [
                {
                    "atidvisitor": ["an"] // "an" parameter will be allowed in storage (identified visitor)
                },
                {
                    "atredir": ["an"] // "an" parameter will be allowed for redirections (identified visitor)
                }
            ],
            "buffer": [
                "an", // "an" parameter will be allowed in buffer (identified visitor)
                "x1", // "x1" parameter will be allowed in buffer"
                {
                    "events": [
                        "name", // The event property "name" will be allowed in buffer
                        "data_av_author" // The event property "data_av_author" will be allowed in buffer
                    ],
                    "stc": "author" // The "stc" property "author" will be allowed in buffer
                }
            ]
        }
    }
};
var tag = new ATInternet.Tracker.Tag();
tag.privacy.addAuthority(customAuthority); // Adding custom authority
tag.privacy.setVisitorMode('customAuthority', 'customMode'); // Activation of the custom visitor mode "customMode" of the custom authority "customAuthority"
tag.page.set({
    name: 'pageName',
    chapter1: 'chap1',
    chapter2: 'chap2',
    chapter3: 'chap3',
    level2: '123',
});
tag.dispatch();
 

Activation d’un mode personnalisé

setVisitorMode(authority, visitorMode)

Activer un mode spécifique d’une autorité.

ParamTypeDescription
authoritystringNom de l’autorité
visitorModestringNom du mode visiteur

Exemple

tag.privacy.setVisitorMode('customAuthority', 'customMode');

Comme indiqué dans la section « Notion d’autorité », les « mode visiteur » optin, optout et random étant des modes génériques nécessitant une intelligence supplémentaire liée à la complexité du métier, ces derniers disposent de « helpers » dédiés pour leur activation. Vous ne devez pas les utiliser avec la méthode setVisitorMode

 

Récupération de l’autorité et du mode

 

getAuthority

getAuthority() ⇒ Object

Récupérer l’autorité courante.

Exemple

var authority = tag.privacy.getAuthority();

Exemple d’objet retourné pour une autorité personnalisée :

var authority = {
    "name": "custom", // Name of the authority
    "exempt": { // Visitor mode
        "name": "exempt", // Name of the visitor mode
        "storageDuration": 397, // Cookie retention time in days
        "trackerSettings": { // Tracker settings to apply
            "disableStorage": false,
            "disableCookie": false
        },
        "add": { // Parameters to add
            "buffer": {
                "visitorConsent": {
                    "param": "vc",
                    "value": false
                }, // Addition of the parameter "vc"
                "visitorMode": {
                    "param": "vm",
                    "value": "exempt"
                } // Addition of the parameter "vm"
            }
        },
        "include": { // Parameters to include
            "storage": [
                "atidvisitor", // "atidvisitor" parameter will be allowed in storage (identified visitor)
                {
                    "atredir": [
                        "at",
                        "an"
                    ] // "at" and "an" parameters will be allowed for redirections (identified visitor)
                }
            ],
            "buffer": [
                "an",
                "at",
                "ac",
                "anc",
                "vrn"
            ] // "an", "at", "ac", "anc" and "vrn" parameters will be allowed in buffer (identified visitor)
        }
    }
};
 

getVisitorMode

getVisitorMode() ⇒ Object

Récupérer le mode visiteur courant.

Exemple

var visitorMode = tag.privacy.getVisitorMode();

Exemple d’objet retourné pour le mode « exempt » d’une autorité personnalisée :

var visitorMode = {
    "name": "exempt", // Name of the visitor mode
    "storageDuration": 397, // Cookie retention time in days
    "trackerSettings": { // Tracker settings to apply
        "disableStorage": false,
        "disableCookie": false
    },
    "add": { // Parameters to add
        "buffer": {
            "visitorConsent": {
                "param": "vc",
                "value": false
            }, // Addition of the parameter "vc"
            "visitorMode": {
                "param": "vm",
                "value": "exempt"
            } // Addition of the parameter "vm"
        }
    },
    "include": { // Parameters to include
        "storage": [
            "atidvisitor", // "atidvisitor" parameter will be allowed in storage (identified visitor)
            {
                "atredir": [
                    "at",
                    "an"
                ] // "at" and "an" parameters will be allowed for redirections (identified visitor)
            }
        ],
        "buffer": [
            "an",
            "at",
            "ac",
            "anc",
            "vrn"
        ] // "an", "at", "ac", "anc" and "vrn" parameters will be allowed in buffer (identified visitor)
    }
};
 

Marquage avancé

 

Certification ACPM (OJD)

Si votre site/app est certifié par l’ACPM (OJD), vous devez autoriser le paramètre stc/device ou s2 dans votre buffer :

tag.privacy.extendIncludeBuffer("stc/device");
tag.privacy.extendIncludeBuffer("s2");
 

Gestion des priorités

Il est important de conditionner un appel selon votre besoin de marquage et de ne pas l’exécuter de façon systématique. Un test sur l’autorité getAuthority() et le mode getVisitorMode() vous permettra à tout moment de choisir le meilleur comportement à adopter en terme de marquage.

Dernière mise à jour : 23/08/2021