Tracker les liens externes avec Google Analytics

Récemment, j’ai mis en place Google Analytics sur un blog Blogger afin d’avoir une idée plus précise du trafic et surtout de la provenance des visiteurs.

Seulement, il faut dire qu’il manque quelque chose à Google Analytics : la possibilité de tracer les clics sur les liens externes.

J’ai eu beau chercher, je n’ai pas trouvé de solution toute faite, mise à part celle consistant à modifier tous les liens afin de leur rajouter un petit bout de Javascript. Solution bien entendu impensable pour un blog déjà existant qui comporte plusieurs dizaines ou centaines d’articles, et qui me semble très inconfortable, même en l’utilisant dés la création du blog.

Je me suis donc creusé un peu la tête pour trouver une solution qui permette d’intercepter tous les clics sur les balises <A>, et d’appeler les API Javascript fournies par Google.

Le code Google Analytics fourni par Google est le suivant :

<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXX-X']);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

Ceci permet de charger le code JS nécessaire au fonctionnement de Google Analytics et de tracer toutes les visites sur votre site.

Dans le même bloc <script>…</script>, j’ai rajouté les lignes suivantes :

<script type="text/javascript">
document.onclick = trackClick;

function getDomainName(url) {
return url.match(/:\/\/(.[^/]+)/)[1].replace('www.', '');
};

function trackClick(e) {

if (e) {

if (e.srcElement) {

if(e.srcElement['href']) {

var url = e.srcElement['href'];
var domainName = getDomainName(url);

if (domainName != 'myblog.blogspot.com') {

var path = url.substring(url.indexOf(domainName) + domainName.length);
trackOutClick(url, 'Outbound Links', domainName, path);
return false;
}
}
}
}
};

function trackOutClick(url, category, action) {

try {
_gaq.push(['_trackEvent', category, action]);
setTimeout('document.location = "' + url + '"', 100)
}catch(err){}
};
</script>

Explications :

– on branche la fonction trackClick() sur l’évènement onClick au niveau du document. Chaque clic sur la page sera ainsi intercepté. La fonction trackClick() va filtrer uniquement les click sur les balise <A HREF=&quote;…&quote;> et uniquement sur des adresses externes en utilisant la fonction getDomainName() afin de comparer uniquement les noms de domaine.

– la fonction trackOutClick va appeler la fonction _trackEvent de l’API Google Analytics en passant en paramètre le nom de domaine extrait du lien, et le chemin complet (vous pouvez passer d’autres choses). Ensuite, l’utilisateur est redirigé vers le lien d’origine avec un court délai afin de laisser l’appel à l’API se terminer correctement.

Ainsi, n’importe quel lien est intercepté et vous pouvez savoir quels liens sont cliqués par vos visiteurs en allant dans la partie Contenus et Suivi des évènements de votre rapport Google Analytics.

A propos Pierre Lavignotte

Consultant Indépendant Architecture, Conception, Développement
Cet article, publié dans Web, est tagué , , , , , , . Ajoutez ce permalien à vos favoris.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s