Implémenter une propriété Google Analytics de roll-up via Javascript

Qu'est-ce qu'une propriété analytics de roll-up ?

Imaginez que vous devez-suivre les performances des sites web d'une marque présentes dans plusieurs pays. Chaque site dispose de son propre nom de domaine et de sa propre propriété analytics.

Il est bien-sûr intéressant de suivre les performances dans chacun des pays, mais il est également pertinent d'étudier la progression globale dans le monde, et de comparer facilement les performances entre chaque pays.

C'est précisément à cela que sert une propriété de roll-up. Une propriété de roll-up sur Google Analytics est une propriété qui permet de regrouper les données de plusieurs propriétés sources.

roll-up
Pour un site décliné pour plusieurs pays d'Europe, il peut-être intéressant de créer une propriété analytics de roll-up aggrégeant les données de plusieurs pays européens

 

La propriété de roll-up permettra d'avoir une vision globale de l'audience et des performances dans l'ensemble des pays. Les données sont en quelques sortes "dupliquées".

Bien sûr, les roll-up ne sont pas propres à Google Analytics. Elles existent également sur d'autres solutions telles qu'Adobe Analytics par exemple.

La mise en place d'une propriété de roll-up est expliquée en détail dans la documentation officielle de Google Analytics.

Pourquoi mettre en place une roll-up en Javascript ?

Sur Google Analytics, il n'est normalement possible de mettre en place une roll-up que sur un compte Google Analytics 360. Les utilisateurs de la version gratuite ne peuvent donc pas mettre en place ce type de propriété.

Aussi, les propriétés de roll-up ne peuvent agréger que les données issues des propriétés issues du même compte.

Comment mettre en place une roll-up en Javascript ?

Il suffit de déclarer une fonction qui se chargera de transmettre tous les appels à Google Analytics aux différents marqueurs. C'est le cas de la fonction "gaRollUp" ci-dessous :

window.gaRollUp = function() { 
    var b = arguments[0]  , e = arguments, c = arguments; 
    e[0] = "Local." + b; 
    window.ga.apply(window, e); 
    c[0] = "International." + b; 
    window.ga.apply(window, c);
};

Pour utiliser cette fonction, il sera nécessaire de créer au préalables les deux marqueurs. Dans la fonction exemple, les marqueurs ont été nommées "Local" (elle sera associé à la propriété propre à un pays précis), et une propriété "International" (la propriété de roll-up qui intégrera les données de tous les sites pays).

ga('create', 'UA-XXXXX-Y', 'auto', {name='Local'});
ga('create', 'UA-XXXXX-Y', 'auto', {name='International'});

Au lieu de déclarer le code de manière classique, via la fonction ga, il faudra maintenant utiliser la fonction gaRollUp.

Ainsi les lignes suivantes :

gaRollUp('set', 'dimension1', 'homepage');
gaRollUp('send', 'event', 'lorem', 'ipsum', {eventValue:2});
gaRollUp('send', 'pageview');

enverront des informations à la fois dans la propriété "Local" et dans la propriété "International".

Attention, à ce titre, les deux propriétés devront être paramétrées de manière rigoureusement identiques (en particulier, les regroupements de contenu, les dimensions personnalisées, et les métriques personnalisées).

Une autre méthode est également possible : l'utilisation d'un plugin.  Cette méthode est décrite sur l'excellent blog de Simo Ahava.

Et si vous utilisez Google Tag Manager ?

Méthodes classiques

C'est très facile a mettre en place si vous utilisez des balises HTML personnalisées.

En revanche, les balises officielles Universal Analytics ne permettent pas ce genre de manipulation facilement (surtout si vous ne prenez pas le risque de nommez vos marqueurs).

Il n'est en effet pas possible de demander dans un tag le chargement d'un plugin non officiel.

Une solution parfois utilisée est de dupliquer chacun des tags Analytics. Cette solution a le désavantage de complexifier la maintenance, puisque chacun des tags (événements, social, pages vues....) devront être copiés. Je ne la recommande donc pas.

Utilisation de l'API task de Google Analytics

Google a sorti il y a peu l'API API task de Google Analyticsqui permet de redéfinir le comportement de Google Analytics de façon très avancée.

Cette API est notamment disponible depuis Google Tag Manager. Il est possible notamment de redéfinir comment les hits doivent être envoyés. Via cette API, nous pouvons donc redéfinir précisément comment analytics.js doit utiliser le protocole de mesure pour envoyer les hits analytics.

Pour cela, il faut déclarer une variable de type "Custom Javascript". Je l'ai nommée "GA sendHitTask Rollup".

function() {
  return function(model) {
    var originalSendTask = model.get('sendHitTask');
    model.set('sendHitTask', function(sendModel) {
      originalSendTask(sendModel);
      sendModel.set('hitPayload', sendModel.get('hitPayload').replace({{gaProperty}}, {{gaRollupProperty}}), true);
      originalSendTask(sendModel);
    });
  }
}

Les variables "gaProperty" et "gaRollupProperty" contiennent respectivement les codes UA de la propriété locale et de la propriété de roll-up.

La fonction va dans un premier temps envoyer la requête dans la propriété locale, puis va reexecuter exactement le même appel sur l'UA de roll-up.

En toute transparence, ce code a été copié d'un un billet de Simo Ahava sur l'API custom Task.

Une fois la variable "GA sendHitTask Rollup" crée, il faut modifier la variable de configuration d'Universal Analytics, de sorte que "customTask" soit associé à la fonction précédemment définie dans la variable.

Paramètrage de GTM pour mettre en place la roll-up

 

Une fois cette petite manipulation effectuée, les données seront systématiquement envoyées dans deux propriétés différentes : la propriété habituelle et la propriété de roll-up.

Publié le Étiquettes

A propos de Antoine Tissier

Diplômé ingénieur en informatique par l'Ecole Centrale de Lille, Antoine a travaillé plus de 10 ans au sein l'agence web altima° ou il a occupé différentes fonctions : ingénieur d'étude, chef de projet technique, ingénieur d'exploitation et Consultant Analytics pendant plus de 6 ans. Il a eu l'occasion de travailler pour de nombreux clients : Petit Bateau, le groupe SEB, le groupe L'Oréal, 3 suisses International, Axa, Cofidis Belglique, ING Direct... sur des missions d'implémentation, d'analyses, d'audit, et de dashboarding / reporting.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *