Comment installer Piwik Pro avec Google Tag Manager (GTM) ?

Piwik Pro fait son petit bonhomme de chemin dans le monde de la web analyse. Il a en plus la particularité d'avoir son propre tag et consent manager. Mais qu'on se le dise, rien ne remplace vraiment une bonne configuration sur Google Tag Manager.

Icone de visionneur
Guillaume BIELLI
Comment installer Piwik Pro avec Google Tag Manager (GTM) ?

Prenez un petit café, posez-vous confortablement et laissez-moi vous expliquer comment configurer Piwik Pro avec Google Tag Manager. On va aborder le script de suivi Piwik Pro, les dimensions et les évènements personnalisés, les objectifs et la mise en place d’un user_id.

Prérequis

  • Créer un compte Piwik Pro (c’est gratuit jusqu’à 500 000 hits mensuels)
  • Savoir configurer des balises, déclencheurs et variables dans Google Tag Manager

Intégration du code de suivi Piwik Pro sur GTM

Il existe deux façons pour intégrer Piwik Pro :

  • La méthode classique qui consiste à initier le conteneur Tag manager de Piwik Pro, c’est ce code que propose Piwik par défaut pour l’intégration par GTM.
  • La méthode personnalisée qui intègre uniquement la partie analytics

Intégration classique

Pour trouver le code de suivi classique de votre instance Piwik Pro :

Accédez à l’onglet “Administration” > Onglet “Installation” > Copiez le code de suivi Piwik Pro

Copiez le code de suivi Piwik Pro

Une fois le code copié, depuis Google Tag Manager, créez un nouveau Tag “HTML personnalisé” puis collez le code de suivi Piwik Pro.

Au niveau du déclencheur, la documentation de Piwik Pro conseille d’utiliser le “All pages”.

Déclencheur

All pages
Page vue

Cette configuration suffit pour envoyer de la donnée à Piwik Pro puisqu’elle pousse nativement les pages vues. Sachez aussi que si votre site web est une SPA (Single Page Application), vous pouvez cocher la case dédiée dans les paramètres de votre instance Piwik Pro pour que l’outil puisse automatiquement détecter les changements de page.

N.B : Si vous souhaitez modifier la configuration du script pour envoyer une page vue manuellement, vous pouvez le faire dans la configuration de la balise “Piwik PRO” dans le Tag Manager.

Configuration de la balise Piwik Pro

La configuration classique vous permet d’utiliser le consent manager de Piwik ou d’envoyer le statut de consentement par le biais de son API, ce qui est un vrai plus dans le cas où vous souhaitez mettre en place une mesure hybride (gestion des hits consentis et non consentis) par le biais de votre CMP (Consent Management Platform).

Intégration avec Analytics seulement

Toutefois, si vous ne comptez pas utiliser le consent manager de Piwik Pro (ou son API), ni le tag manager, il est possible d’intégrer plus simplement le code de suivi. Cela vous permettra notamment d’éviter d’être pollué par les évènements Piwik Pro natifs depuis Google Tag Manager.

Exemple de code suivi, où il faudra renseigner :

  • votre nom de conteneur (nom-conteneur.piwik.pro)
  • votre id de site (disponible dans “Administration” > “Sites et applications”)
 <script type="text/javascript">
    var _paq = _paq || [];
    _paq.push(["trackPageView"]);
    _paq.push(["enableLinkTracking"]);
    (function() {
        var u = "https://votre-nom-de-conteneur.piwik.pro/"; // votre nom de conteneur
        _paq.push(["setTrackerUrl", u + "ppms.php"]);
        _paq.push(["setSiteId", "votre-id-de-site"]); // votre id de site
        var d = document,
            g = d.createElement("script"),
            s = d.getElementsByTagName("script")[0];
        g.type = "text/javascript";
        g.async = true;
        g.defer = true;
        g.src = u + "ppms.js";
        s.parentNode.insertBefore(g, s);
    })();
</script>

Envoyer des dimensions personnalisées à Piwik Pro

Maintenant que l’on sait comment intégrer le suivi de base Piwik Pro, allons maintenant un peu plus loin. Imaginons que vous poussez dans le dataLayer certaines informations avant chaque page vue. Par exemple, si vous avez un blog, vous aimeriez connaître la catégorie de la page, ou encore le statut de l’utilisateur (premium, free, etc.).

Voici un exemple de code pour pousser ces informations dans le dataLayer, l’événement doit être envoyé très tôt et avant la page vue sur Google Tag Manager :

<script>
dataLayer.push({
  event: "preload_data", page_category: "blog", user_status: "premium"
});
</script>

Commençons par créer les dimensions personnalisées sur Piwik Pro. Rendez-vous dans Paramètres > Dimensions personnalisées.

Vous aurez alors deux possibilités :

  • Créer une dimension personnalisée au scope session
  • Créer une dimension personnalisée au scope évènement

Dans notre exemple, page_category est relatif à une page vue (scope évènement) et user_status est relatif à l’utilisateur (scope session).

création des dimensions personnalisées

Dans Google Tag Manager, nous allons créer une balise “HTML personnalisé” pour configurer les dimensions personnalisées. Nous utiliserons la méthode setCustomDimensionValue de Piwik Pro. En amont je m’assure de créer deux variables de couche de données sur GTM pour pouvoir alimenter les deux dimensions (page_category et user_status).

Je déclenche la balise sur l’évènement “preload_data” que nous venons de pousser dans le dataLayer.

<script>
  var _paq = _paq || [];
  _paq.push(["setCustomDimensionValue", 1, "{{dlv - page_category}}"]);
  _paq.push(["setCustomDimensionValue", 2, "{{dlv - user_status}}"]);
</script>

Déclencheur

Custom - preload_data
Événement personnalisé

Les deux dimensions se propageront maintenant à toutes les pages vues Piwik Pro.

On peut déclencher la balise sur la page vue GTM, mais dans ce cas il faut s’assurer que la page vue se déclenche toujours après le preload_data, pour que les dimensions personnalisées puissent être alimentées.

Envoyer des évènements personnalisés à Piwik Pro

Maintenant que nous savons mettre en place une configuration de base et créer des dimensions personnalisées sur Piwik Pro, intéressons-nous aux évènements personnalisés.

D’abord, il faut comprendre la structure d’un évènement personnalisé Piwik Pro, qui est composé de 4 éléments : Category, Action, Name et Value.

CategoryActionNameValue
FormSubmit NewsletterLes secrets du web20

Nous allons donc ajouter une nouvelle balise HTML personnalisé que nous nommerons “Piwik Pro - trackEvent - Submit_Newsletter” pour envoyer un évènement personnalisé à Piwik Pro. Voici un exemple de code :

// Évènement sans dimension personnalisée
<script>
  var _paq = _paq || [];
  _paq.push(["trackEvent", "Form", "Submit Newsletter", "Les secrets du web", 20]);
</script>

Il est aussi possible d’ajouter des dimensions personnalisées à l’évènement.

Il faudra s’assurer que l’ensemble des dimensions soient préalablement définies avec setCustomDimensionValue. Pour envoyer les dimensions personnalisées, il faut respecter le format suivant :

  • “dimensionX” où X est l’index de la dimension.
// Évènement avec dimensions personnalisées
<script>
  var _paq = _paq || [];
  _paq.push([ "trackEvent", "Form", "Subscribe Newsletter", "Les secrets du web", 20,
    {
    dimension2: "Premium", // user_status défini plus haut par setCustomDimensionValue (index 2)
    dimension3: "Newsletter" // non défini et donc non reçu par Piwik Pro
    },
  ]);
</script>

Partons du principe que nous recevons déjà un évènement submit_newsletter dans le dataLayer, nous déclencherons donc cette nouvelle balise sur ce déclencheur.

Déclencheur

CUST - Submit_Newsletter
Événement personnalisé

Attention, si vous souhaitez ajouter des dimensions personnalisées sans ajouter de valeur pour l’évènement, vous devez quand même garder l’argument de la méthode vide , ,.

Envoyer des objectifs à Piwik Pro

Il est aussi possible d’envoyer des objectifs à Piwik Pro. Vous avez deux possibilités pour définir des objectifs dans Piwik Pro :

  • Configuration automatique : vous pouvez définir un objectif sur la base d’une URL ou d’un évènement personnalisé par exemple
  • Configuration manuelle : Envoyer directement l’objectif avec la méthode trackGoal

Voici un exemple de code pour envoyer l’objectif avec la méthode trackGoal depuis Google Tag Manager :

<script>
  var _paq = _paq || [];
  _paq.push(["trackGoal", "ID-OBJECTIF", conversionValue]);
</script>

Pour récupérer un ID d’objectif, vous devez d’abord créer un objectif sur Piwik Pro. Rendez-vous dans la partie “Objectifs” puis “Ajouter un objectif”. Saisissez un nom à votre objectif et sélectionnez “Suivre l’évènement manuellement”.

Création d'un objectif

L’avantage principal de passer par cette méthode, c’est qu’elle vous permet de variabiliser la valeur de conversion de l’évènement envoyée à Piwik Pro.

Configurer le user ID pour Piwik Pro

À partir du moment où votre utilisateur est connecté, vous pouvez pousser le user_id à Piwik Pro. Dans notre exemple, notre équipe de développeur (toujours très réactive) complète notre preload_data avec les paramètres suivants :

  • user_id
  • is_logged

Voici le résultat lorsqu’un utilisateur est connecté :

<script>
dataLayer.push({
  event: "preload_data", page_category: "blog", user_status: "premium", user_id: "123456", is_logged: true
});
</script>

Maintenant, après avoir ajouté les variables de couche de données user_id et is_logged, nous pouvons créer une balise “HTML personnalisé” avec le code suivant :

<script>
  var _paq = _paq || [];
  _paq.push(["setUserId", {{dlv - user_id}}]);
  _paq.push(['ping']); // permet d'envoyer le user ID au tracker
</script>

Au niveau du déclencheur, je déclenche la balise sur la page vue uniquement si is_logged est vrai.

Déclenchement du script sur chaque page vue

Si l’utilisateur décide de se déconnecter, Piwik Pro conseille d’utiliser la méthode resetUserId pour clear le user_id.

<script>
  var _paq = _paq || [];
  _paq.push(['resetUserId']);
</script>

L’utilisation de la méthode ‘resetUserId’ est uniquement nécessaire s’il n’y pas de rechargement de page au moment de logout. Dans tous les cas, ça reste une bonne pratique de le faire.

Recetter les évènements et les dimensions personnalisées sur Piwik Pro

Pour s’assurer que tous les évènements et dimensions personnalisées sont correctement envoyés, il est possible de déboguer les données envoyées à Piwik Pro de deux façons :

  • Depuis l’onglet network de votre navigateur
  • Depuis le débogueur de Piwik Pro

Depuis le network de votre navigateur

Clique droit, puis “Inspecter”. Dans l’onglet “Network”, recherchez les appels en filtrant avec ppms. Vous devriez voir tous les hits partir vers Piwik Pro et les status. Cliquez sur chacun des hits et regarder dans le sous-onglet “payload” pour voir les données envoyées.

Recetter les évènements et les dimensions personnalisées sur Piwik Pro

Voici un petit tableau des paramètres qui nous intéresse:

ParamètreDescription
e_cCatégorie de l’évènement
e_aAction de l’évènement
e_nNom de l’évènement
e_vValeur de l’évènement
dimensionXValeur de la dimension personnalisée X

Depuis le débogueur de Piwik Pro

Pour cela, rendez-vous dans Paramètres > Débogueur de suivi.

Recetter les évènements et les dimensions personnalisées sur Piwik Pro

Bien que cette fonctionnalité soit extrêmement pratique, elle n’est pas compatible avec les directives de la CNIL. Je vous invite donc à la désactiver une fois que votre recette a été validée.

Conclusion

Et voilà ! Vous êtes maintenant prêt à utiliser Piwik Pro à son plein potentiel avec cette implémentation client side sur Google Tag Manager. Sachez que Piwik Pro vous permet d’être exempté de consentement ou d’utiliser une mesure hybride à condition de respecter les recommandations de la CNIL sur le sujet. Une belle façon de collecter davantage de données.