Measurement protocol : suivez Googlebot dans Google Analytics

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) :

[shell]

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

[/shell]

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 :

[shell]

$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 »;

[/shell]

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

[shell]

<?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);

}

?>

[/shell]

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

7 comments

comments user
Matthieu

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

comments user
marseo

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.

comments user
Patrice

TrĂšs fort, merci pour cet excellent tuyau !

comments user
Vincent LAHAYE

TrÚs bon ça ! Pratique si on ne peut pas forcément avoir les logs sous la main !

comments user
rdebrabant

Attention Ă  la petite fonction $httpcode = http_response_code(); qui flanche en fonction de la version du php.

comments user
Sebastien Monnier

Heu, je comprends pas du tout pourquoi tu mentionnes GTM . Le bot n’active pas JS et donc pas de GTM, en tout cas, pas les scripts que tu mentionnes. D’autre part, ton filtre semble filtrer sur l’IP de GoogleBot. Or, le hit se fait depuis ton serveur, donc depuis ton IP. De plus, tu ne prĂ©cises pas qu’il faut crĂ©er une propriĂ©tĂ© spĂ©cifique pour ne pas mĂ©langer hit de bot et hit utilisateurs classiques.

J’utilise cette technique depuis longtemps sur quelques uns de mes sites mais, balancer un CURL Ă  chaque chargement de PHP n’est pas l’idĂ©al pour avoir un serveur qui rĂ©pond bien vite 😉 Analyses ses logs est une solution + acceptable, en fait, je crois.

    comments user
    marseo

    Bonjour SĂ©bastien,

    Merci de l’intĂ©rĂȘt portĂ© Ă  cet article.
    Je suis entiĂšrement d’accord avec toi, Curl n’est pas optimum, mais cet exemple sert principalement Ă  montrer la dĂ©marche pour que la majoritĂ© des lecteurs comprennent le principe.
    GTM sert simplement à implémenter le tag Analytics sur toutes les pages avec les variables personnalisées. Sans quoi mes variables personnalisées ne fonctionnent pas avec le Measurement Protocole.
    Je parle bien de crĂ©er une vue pour Google Bot (on voit le filtre dans le screen), mais le sujet n’est pas lĂ .
    Pour l’IP, je l’envoie bien avec le Measurement Protocol, l’IP de Google arrive bien dans mes stats, et le filtre permet de sĂ©parer les hits provenant de Google. Pour rappel, le Measurement Protocol permet d’envoyer des hits vers Google Analytics en GET, ce que je fais avec du PHP grĂące Ă  Curl.

Laisser un commentaire

You May Have Missed