Gestion des départements dans Google Analytics

Dans Google Analytics, les rapports de géographie / géolocalisation ne permettent que de descendre au niveau de détail de la région et pas du département. C’est principalement dû au fait qu’à l’origine, Urchin et Google Analytics ont été conçus pour le marché américain qui dispose en plus des états du système DMA qui permet de descendre au niveau d’une agglomération prédéfinie.

Comment donc obtenir un rapport sur les départements dans Google Analytics? Je vous livre ici une méthode qui n’est pas parfaite (elle sous-entend que vous acceptez la géolocalisation sur votre site) mais qui devrait vous satisfaire.
ATTENTION: Si vous n’êtes pas familier avec la technique, vous pouvez dès à présent demander de l’aide à un développeur.
Prêt(e)? Accrochez-vous, ca décoiffe! 

Rappel sur le mécanisme de géolocalisation

Tout d’abord, il faut savoir que les informations de géolocalisation sont collectées une fois par visite en examinant l’adresse IP du visiteur. Cette adresse IP est utilisée dans une opération de correspondance (lookup) qui fait un lien entre cette IP et (dans l’ordre):

  • Le fournisseur d’accès à Internet (et le nom du réseau d’entreprise le cas échéant)
  • une latitude et une longitude
  • Un état/province et (USA et Canada uniquement) une agglomération
  • Une région
  • Un nom de commune

Cette association a lieu dans la phase de traitement avant que les filtres associés à chaque vue soient traités. Pour autant, les filtres ne permettent pas de gérer efficacement nos départements. Nous allons en revanche capturer un code postal et en faire plein de choses rigolotes. Si vous n’avez pas tenu compte de l’avertissement en début de billet, je ne réponds plus de votre santé mentale à partir de ce point.

Récupérer un code postal avec une API de géolocalisation

Par défaut, on l’a vu, Google Analytics ne récupère pas de code postal. Nous allons donc devoir passer par l’API de géolocalisation HTML5 présente dans tous les navigateurs modernes (hors IE8 et antérieurs donc).

Cette API vous permet de récupérer des coordonnées en tant que longitude et latitude. C’est tout mais ca permet de transformer cette information vers une autre API qui va transformer ces coordonnées en code postal.

Commencez par créer un compte sur une API de géolocalisation comme Geonames.

Pour ne pas ré-inventer l’eau tiède, je vais m’inspirer du code de mon confrère Sayf de Lunametrics.

Je vais donc placer le code Javascript suivant sur mes pages (ou l’appeler via GTM par exemple):

// Par Julien Coquet
// Inspiré par Sayf Sharif de Lunametrics 
// www.lunametrics.com/blog/2014/07/08/street-level-insight-google-analytics 
// N'utilise pas jQuery! 
function getLocation() {
	if (navigator.geolocation) { 
		/* 
		* Si votre navigateur gère la géolocalisation HTML5,
		* on utilise la fonction showPosition comme callback 
		*/
		navigator.geolocation.getCurrentPosition(showPosition);
	} else { 
		// Géolocalisation non gérée par le navigateur
		console.log("Votre navigateur est moisi, changez-en."); 
	} 
} 
/* 
* Dans cette fonction de callback, on utilise le combo longitude/latitude
* comme paramètre d'API Geonames afin de récupérer le code postal 
*/ 
function showPosition(position) { 
	var latitude = position.coords.latitude;
	var longitude = position.coords.longitude; 
	var utilisateur = "juliencoquet"; // à remplacer par votre identifiant Geonames 
	
	// On compose l'URL d'appel à l'API Geonames
	var URL = "https://secure.geonames.org/findNearbyPostalCodesJSON?lat="; 
	URL += latitude + "&lng=" + longitude + "&username=" + utilisateur; 
	
	// On envoie la requête à l'API Geonames 
	request = new XMLHttpRequest(); 
	request.open('GET', URL, true); 
	request.onload = function() { 
		if (request.status >= 200 && request.status < 400) { 
			/* 
			* Super, on a accédé au flux de géolocalisation pour récupérer le code postal le plus proche. 
			* On va maintenant le passer à la dataLayer GTM comme paramètre d'un événement personnalisé 
			*/ 
			data = JSON.parse(request.responseText); 
			window.dataLayer.push({
				'event': 'geoloc',
				'codePostal': data['postalCodes'][0]['postalCode'] 
			}); 
		} else { 
			// Connexion au flux réussie mais erreur (pas de flux, URL mal formée, etc) 
		} 
	}; 
	request.onerror = function() { // Déclencher une alerte si la connexion à échoué 	
		console.log('Impossible de se connecter à l'API de géolocalisation'); 
		// et un event GTM 
		window.dataLayer.push({
			'event': 'eventGenerique',
			'eventCategory': 'Geographie',
			'eventAction': 'Erreur géoloc',
			'eventLabel': '' 
		}); 
	}; 
	request.send();
} 
		
// On exécute tout le code ci-dessus 
getLocation();


Dans cet exemple, on pousse un événement GTM geoloc et une variable codePostal.

On passe le code postal à Google Analytics via GTM

Il faut donc créer une variable (macro) qui contiendra le code postal pour l’utiliser dans Google Universal Analytics:

google analytics geolocalisation gtm macro

On prévoit le tag Google Analytics qui déclenchera un événement de capture on y utilise la macro, ainsi que la dimension personnalisée 13 qu’on a crée pour stocker le code postal:

google analytics geolocalisation event

On déclenche ce tag sur une page donnée lors du déclenchement de l’événement « geoloc »:

google analytics geolocalisation regle

On publie le tout et hop! Des événements! Avec mon code postal (26200, Montélimar)

google analytics geolocalisation temps reel

Ok, donc on capture le code postal, et maintenant? On va donc prendre ce code postal et le faire correspondre à un nom de département.

Oui je sais je peux faire tout ca directement dans GTM mais à ce stade on a déjà suffisamment fait travailler le navigateur; c’est au tour de Google Analytics de prendre le relais.

Correspondance avec les départements

Pour retrouver nos noms de départements français (Ain, Aisne, Allier, etc.), nous allons devoir commencer par établir une liste des codes postaux et leur nom de département associés. Nous utiliserons ensuite cette liste dans la fonction d’import de données de Google Analytics.

Pour trouver la liste des codes postaux de France ainsi que la liste des départements, rien de mieux que le site de l’INSEE. Un petit coup d’Excel, d’espiéglerie (et de remplacement de caractères spéciaux), c’est la vie de Can.. euh du web analyste. Comme je suis super sympa, je vous ai mâché le boulot.

Le problème de la fonction d’import c’est qu’elle ne peut pas (au 21 octobre 2014) influer sur les données de géolocalisation, sinon un import basé sur le nom des villes aurait réglé le problème depuis longtemps. C’est pourquoi nous avons capturé notre code postal dans une dimension personnalisée.

Enfin, nous avons notre fichier contenant des paires de codes postaux et de noms de département. C’est l’heure de faire travailler un peu Google Universal Analytics.

Dans l’administration de notre propriété Analytics, créons de nouvelles dimensions personnalisées:

Je vais en créer 2: une pour le code postal et une pour le nom du département, toutes deux avec une portée au niveau de la session:

google analytics geolocalisation dimensions persos

Retournons dans l’admin et créons un nouvel import de données:

google analytics geolocalisation admin nouvel import données

On va choisir la vue concernée et sur quelles données l’import va porter:

google analytics geolocalisation import de données

Vous aurez vu que pour intégrer les départements dans Google Analytics, on va utiliser comme provenance la dimension personnalisée 13 (le code postal) et la 14 (le département).

Sauvegardez et vous pourrez obtenir un schéma d’import (modèle pour CSV Excel) pour y stocker vos codes postaux et noms de département. Encore une fois, profitez de mon fichier, il est tout prêt. Vous avez juste à remplacer les en-têtes par:

google analytics geolocalisation entetes

Importez le fichier dans votre zone d’import:

google analytics geolocalisation imports

Personne n’est parfait et vous aurez probablement des erreurs d’encodage ici et là.

Félicitations, vous n’avez plus qu’à créer un rapport personnalisé pour afficher vos données:

google analytics geolocalisation custom report

Cela vous permettra d’explorer de la région vers le département vers le code postal en contournant la limitation actuelle de Google Analytics.

Comment allez vous utiliser/modifier cette technique de tracking des départements dans Google Analytics? Des questions? Des remarques? Faites le moi savoir dans les commentaires!

Et un grand merci à Sandrine de m’avoir fait sauter ma pause déjeuner 😀

Auteur/autrice : Julien Coquet

Expert de la mesure d’audience sur Internet depuis plus de 15 ans, Julien Coquet est consultant senior digital analytics et responsable produit et évangélisation pour Hub’Scan, une solution d’assurance qualité du marquage analytics. > A propos de Julien Coquet

Une réflexion sur « Gestion des départements dans Google Analytics »

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.