J'essaie d'envoyer l'événement go google analytics après que l'utilisateur est enregistré et avant qu'il soit redirigé. J'utilise Google Tag Manager et univerasl js.
Tout d'abord, j'essayais d'utiliser l'objet dataLayer , comme décrit ici: developers.google
Voilà à quoi ressemblait ma fonction:
//Registering new user via ajax
$.ajax('/register/', {
success: function() {
//Pushing event to dataLayer
dataLayer.Push({
'Category': 'Registration Process',
'event': 'Registration Submit Btn'
});
//Logging in new user and redirecting the page with a timeout
setTimeout(function(){
loginAction();
}, 500)
}
})
Le problème est que je recevais environ 25% de tous les événements, tous les autres sont perdus . Je ne sais pas si et quand l'événement est réellement envoyé à Google après avoir ajouté un objet à dataLayer et je pense que 75% des événements n'ont pas été envoyés du tout.
J'essaie maintenant de mettre en œuvre une autre approche:
//Registering new user via ajax
$.ajax('/register/', {
success: function() {
//Sending event through ga('send')
parent.ga('send', 'event', 'Registration Process', 'Registration Submit Btn');
//Logging in new user and redirecting the page with a timeout
setTimeout(function(){
loginAction();
}, 500)
}
})
Mais ga ('envoyer') n'a plus de fonction de rappel!
Comment puis-je m'assurer que l'événement a bien été envoyé à Google, en utilisant dataLayer ou ga ('envoyer')?
Je l'ai finalement eu. C'est assez compliqué et non décrit dans la documentation. Dans mon cas, j'utilise Google Tag Manager, il y a donc quelques solutions que j'ai dû faire pour réussir à déclencher un événement et à obtenir un rappel.
Tout d'abord, nous devons obtenir ClientId , ce qui est requis pour tout événement envoyé aux serveurs Google. En fait, il est conservé dans les cookies, mais Google ne recommande pas de le prendre directement à partir de là.
Voici comment Google recommande de l'obtenir, mais cela ne fonctionnera pas si vous utilisez Google Tag Manager.
ga(function(tracker) {
var clientId = tracker.get('clientId');
});
Au lieu de cela, vous devez obtenir ClientId à partir de la méthode getAll.
var clientId = ga.getAll()[0].get('clientId');
Après, vous devez créer un nouveau tracker
ga('create', 'UA-XXX-YYY', {
'clientId': clientId
});
Et après cela, nous pouvons envoyer un événement:
ga('send', 'event', {
'eventCategory': 'YOUR Category Name', //required
'eventAction': 'YOUR Action name', //required
'eventLabel': 'YOUR Label',
'eventValue': 1,
'hitCallback': function() {
console.log('Sent!!');
//callback function
},
'hitCallbackFail' : function () {
console.log("Unable to send Google Analytics data");
//callback function
}
});
Depuis le document Google Analytic https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#hitCallbackNews
// Alerts the user when a hit is sent.
ga('send', 'pageview', {
'hitCallback': function() {
alert('hit sent');
}
});
Vous pouvez modifier la fonction hitCallback
pour la vôtre.
OR
// Use a timeout to ensure the execution of critical application code.
ga('send', 'pageview', {'hitCallback': criticalCode});
setTimeout(criticalCode, 2000);
// Only run the critical code once.
var alreadyCalled = false;
function criticalCode() {
if (alreadyCalled) return;
alreadyCalled = true;
// Run critical code here...
}
Ici, vous pouvez définir votre fonction (criticalCode
) dans l'exemple ci-dessus qui peut garantir les données envoyées à Google Analytic, puis travailler avec votre code.
Pour une meilleure compréhension de l'api analytique, fyr: https://developers.google.com/analytics/devguides/collection/analyticsjs/command-queue-reference
À partir des documents: https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#hitCallback
ga('send', 'pageview', {
'page': '/my-new-page',
'hitCallback': function() {
alert('analytics.js done sending data');
}
});
Dans cet exemple, l'objet nom de champ configure à la fois le paramètre de page, ainsi que la définition de hitCallback. Une fois que le tracker a terminé l'envoi des données, une boîte d'alerte s'affiche pour l'utilisateur.
Vous pouvez utiliser hitCallback pour les événements, les pages vues, etc.