5

Measurement protocol : suivez Googlebot dans Google Analytics

Présentation du Measurement Protocol

Le Measurement Protocol de Google Analytics. Cela permet de pusher des statistiques au sein de Google Analytics via du POST. Grâce aux paramètres vous pouvez pusher toutes les informations que vous souhaitez. C’est particulièrement utile pour injecter dans Google Analytics des datas depuis des supports sur lesquels vous ne pouvez pas insérer de tag Analytics.

Concrètement, si vous copiez collez la ligne suivante dans votre navigateur et que vous faites « entrée », vous verrez dans vos statistiques en temps réel l’écran suivant (en prenant soin de mettre votre bon UA) :


https://www.google-analytics.com/collect?v=1&tid=UA-id-1&cid=58853148&t=pageview&dp=/url-de-test&dt=titre-de-la-page

test-measurement-protocol

Afin de générer vos variables, vous pouvez soit passer par les paramètres listés dans la documentation soit par le Hit Builder de Google.

Application pour intégrer le crawl Google dans Google Analytics

Dans l’exemple ci-dessous, l’objectif va être de capter le passage de Googlebot en PHP (via son IP), de pusher le hit dans Google Analytics, d’ajouter le User-Agent du robot et le code HTTP de la page.

Le User-Agent et le code HTTP seront ajoutés en tant que variables personnalisées. Une vue sans Google Analytics « Googlebot » filtrera le crawl de Google uniquement.

Avec les bases en poche, vous pourrez facilement étendre le principe pour capter d’autres robots comme Bing…

Création de deux variables personnalisées

Rendez-vous sur votre compte Google Analytics, et créez des « dimensions personnalisées » dans le panneau d’administration de votre propriété. Créez alors deux dimensions : Status HTTP et User-Agent. Notez les deux index associés à vos dimensions personnalisées, 1 et 2.

dimensions-personnalisees

Création d’une vue Googlebot

J’ai créé une vue « Googlebot » pour plus de clarté.Pour cette vue, j’ai créé un filtre « IP », qui ne capte que les hits provenant de l’IP commençant par « 66.249 ».

vue-gogolebot-filtre-ip

Tag manager : création des deux variables (ua et rescode)

J’utilise Tag Manager. Je n’ai donc pas ajouté de lignes de code dans mon tag Analytics, mais j’ai rajouté le lien avec mes deux dimensions directement dans mon Tag Analytics sur Tag Manager, en créant deux variables.

On remarque que l’index renseigné ci-dessous doit être identique à celui renseigné dans les dimensions personnalisées sur Google Analytics.

Vue finale de mon Tag Analytics dans Tag Manager :

tag-manager-dimensions-personnalisees

Vue finale de mes variables, j’ai créé deux variables « ua » et « rescode » qui correspondent à « User-Agent » et « Status HTTP » :

variables-tag-manager

Vue détaillée d’une variable de couche de données « Status HTTP » :

variable-couche-donnees-rescode

Paramètres du Measurement Protocol

Le Measurement Protocol requiert des variables obligatoires :

  • v=1 : version du protocole
  • tid=UA-xxxxxxxx-1 : ID de la propriété Google Analytics
  • cid=xxx : un ID « client », je mets une valeur par défaut
  • t=pageview : le type de « hit », pageview dans notre exemple. Il peut avoir les valeurs suivantes : ‘pageview’, ‘screenview’, ‘event’, ‘transaction’, ‘item’, ‘social’, ‘exception’, ‘timing’.

Maintenant, il faut définir ce que l’on veut récupérer comme informations avec Measurement Protocol.

Je souhaite, pour chaque hit de Google capter :

  • cs, cm (source/support) : crawl/googlebot (on pourra par la suite faire du crawl/bing…)
  • cd1 : dimension personnalisée 1 (rescode)
  • cd2 : dimension personnalisée 2 (ua)
  • uip : ip
  • dh : domaine
  • dp : url

Aperçu de l’URL POST finale :


$url = "http://www.google-analytics.com/collect?&v=1&t=pageview&tid=UA-xxxxxxxx-1&cid=666&dh=".$dh."&dp=".$dp."&uip=".$uip."&cd1=".$httpcode."&cd2=".$ua."&cs=crawl&cm=googlebot";

Il ne reste plus qu’à récupérer la valeur des variables, et de faire un curl en PHP pour le POST dans Google Analytics.

Code PHP de détection du crawl et envoi des données dans Google Analytics


<?php

//Récupère l'adresse IP
$ip = $_SERVER['REMOTE_ADDR'];

//Condition sur le User-Agent et l'adresse IP commençant par 66.249
if( $_SERVER['HTTP_USER_AGENT'] &&
stripos($_SERVER['HTTP_USER_AGENT'], 'Googlebot') !== false &&substr($ip, 0, 6) == "66.249"){

//On renseigne alors les variables avec le domaine, l'URL de la page, le User-Agent, le code réponse HTTP
$dh = $_SERVER['HTTP_HOST'];
$dp = $_SERVER['REQUEST_URI'];
$ua = urlencode($_SERVER['HTTP_USER_AGENT']) ;
$httpcode = http_response_code();

//URL complète prête pour le POST
$url = "http://www.google-analytics.com/collect?&v=1&t=pageview&tid=UA-67188949-1&cid=666&dh=".$dh."&dp=".$dp."&uip=".$ip."&cd1=".$httpcode."&cd2=".$ua."&cs=crawl&cm=googlebot";

//On curl alors l'URL avec toutes les variables renseignées
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_COOKIESESSION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER , true);
curl_setopt($ch, CURLOPT_NOBODY , true);
curl_exec($curl);
curl_close($curl);

}

?>

Résultat

La vue dans le rapport Google Analytics (Comportement/Contenu du site/toutes les pages + dimension secondaire Source/Support ou dimension secondaire UA) :

google-analytics-crawl-google

 

google-analytics-crawl-google-user-agent

La vue dans un rapport personnalisé  de Google Analytics, permet d’observer deux dimensions personnalisées d’un coup :

google-analytics-rapport-personnalise-google

marseo

5 Comments

  1. Ca donne vraiment envie d’essayer et de croiser ainsi les données des sources organic avec celles de googlebot. Tu penses que c’est faisable pour un gros site en termes de charge serveur ? Et on pourrait rajouter les requêtes en bytes et se faire un tableau de bord sympa sur datastudio… tu tiens quelque chose ! Merci pour le partage

  2. Merci :)
    Il faudrait faire quelques tests avec / sans en terme de temps de réponse, mais je ne pense pas qu’on perde grand chose.
    Sur du gros volume je conseillerais tout de même les vrais logs serveur, car les pages orphelines n’ayant pas ce tag ne seraient pas visible dans Google Analytics avec cette méthode. C’est vraiment du dépannage.

Laisser un commentaire

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