Comment utiliser GTM avec Angular?
J'essaie de déclencher un événement de consultation de page (virtuel) lorsque je charge un nouveau partiel à l'aide de ce code:
dataLayer.Push({
'event' : 'pageview',
'pageview' : $location.path(),
'virtualUrl' : $location.path()
});
Mais je ne vois pas l'événement se déclencher (j'utilise l'extension de débogage Google Analytics Chrome pour afficher les événements déclenchés).
Je trouve l’extension Chrome peu fiable . Il suffit d’exécuter la variable globale dataLayer
dans la console pour imprimer le tableau des événements. L'un des objets doit être votre événement de page view.
Voici un exemple d'utilisation de ce logiciel:
Remarque: nous n'utilisons pas simplement $location.path()
, mais tout ce qui se trouve dans l'URL après le domaine. Ce qui inclut les .search()
& .hash()
.
$ emplacement dans les documents Angular
(function(window, angular) {
'use strict';
angular.module('Analytic.module', ['Analytic.services']).
run(function($rootScope, $window, $location, GoogleTagManager) {
$rootScope.$on('$viewContentLoaded', function() {
var path= $location.path(),
absUrl = $location.absUrl(),
virtualUrl = absUrl.substring(absUrl.indexOf(path));
GoogleTagManager.Push({ event: 'virtualPageView', virtualUrl: virtualUrl });
});
});
})(window, window.angular);
(function() {
angular.module('Analytic.services', []).
service('GoogleTagManager', function($window) {
this.Push = function(data) {
try {
$window.dataLayer.Push(data);
} catch (e) {}
};
});
})();
Vous aurez besoin de macros {{virtualUrl}}
et {{event}}
qui écoutent les variables dataLayer du même nom.
Vous aurez besoin d'une balise de suivi des événements Google Analytics avec une règle d'activation qui se déclenche lorsque {{event}}
est égal à 'virtualPageView'. Assurez-vous de supprimer la règle par défaut 'Toutes les pages', qui permet de l'exécuter à chaque chargement de page. Au lieu de cela, vous souhaitez qu'il s'exécute lorsque vous dataLayer.Push()
l'événement, ce qui peut se produire plusieurs fois par actualisation de la page.
La balise doit être configurée avec:
Je vous recommande fortement d'utiliser la bibliothèque angulartics . Je l'ai utilisé sur plusieurs sites. Cela vous permet de courir assez vite.
Il inclut un support pour les vues de page virtuelles et les événements prêts à l'emploi. Il ne prend pas en charge le commerce électronique GA mais prend en charge l’extensibilité.
Aussi - j'ai utilisé à la fois avec GTM et Piwik.
Semblable à la réponse acceptée, nous avons créé une solution plus simple et plus explicite utilisant une variable pagename
dans un code JavaScript de notre contrôleur pour notre application à page unique,
// Note, this may not be how your app works, YMMV
var pagename = $location.path().substr(1,$location.path().length);
et les pousser dans le dataLayer comme ceci:
window.dataLayer.Push({'event':pagename+'-page'})
Ensuite, dans GTM, nous avons ajouté des déclencheurs dans GTM comme suit:
Trigger: Custom Event
Event Name: home-page
... à propos de page, faq-page, etc.
Pour les applications angulaires plus complexes, il existe quelques extensions disponibles pour utiliser Google Analytics et Google Tag Manager avec Angular.
Voir Angulartics (qui prend également en charge des solutions d’analyse Web autres que Google Analytics via son architecture de plug-in) et le package NPM associé à GTM .
Pas besoin d'ajouter du code.
Configurez un déclencheur "changement d’historique", déclenché par des changements d’itinéraire angulaires, ajoutez-le comme déclencheur à votre balise "pages vues".