statistique

Google Analytics – Callback on JS TrackEvent

Posted on 16/01/2013 · Posted in Javascript

En utilisant le système Tracking Event de Google Analytics.
Parfois, vous avez besoin de vous assurer qu’un évenement est correctement enregistré par Google avant de réaliser une action.
L’exemple le plus concret, c’est le changement de page juste après avoir enregistré un clic sur un lien.

L’ensemble des tracking de l’API Google Analytics sont asynchrones, comment s’assurer que l’évenement a bien été enregistré ?

Voici deux manières de faire, l’une étant plus officielle que l’autre.

La premiere méthode utilise la possibilité de mettre des “Callback” au sein de la Queue (GAQ : Google Analytics Queue).
La documentation Google Analytics est assez explicite : “The functions can contain any arbitrary JavaScript and like command arrays, they are executed in the order in which they are pushed onto _gaq“.

1
2
3
4
_gaq.push(['_trackEvent', 'Test', 'Clicked']);
_gaq.push(function() {
    console.log("event tracked");
});

Pour la deuxième méthode – récupérée sur Stack Overflow – je n’ai pas trouvé de validation au sein de la documentation. Mais après quelques tests, elle semble fonctionner.
On part du principe que la méthode “push” de l’objet “_gaq” prends en 2° paramètres une fonction “callback” exécutée lorsque la commande a été traité.

1
2
3
_gaq.push(['_trackEvent', 'Test', 'Clicked'], function() {
    console.log("event tracked");
});

Bien sûr,
La deuxième méthode n’étant pas officielle, bien que plus élégante elle n’est pas recommandée.