How do I use GTM with Angular?
I'm trying to fire a (virtual) pageview event when I load a new partial using this code:
dataLayer.push({
'event' : 'pageview',
'pageview' : $location.path(),
'virtualUrl' : $location.path()
});
But I don't see the event firing (I'm using the Google Analytics Chrome debug extension to view fired events).
The possible way to do this is using
$window
service.Look at this answer to try, if it works: Tracking Google Analytics Page Views with Angular.js
Hope it works.
Similar to the accepted answer, we created a simpler, more explicit solution using a
pagename
variable in a Javascript in our controller for our single-page app,and push them to the dataLayer like this:
Then in GTM we added triggers in GTM like so:
... about-page, faq-page, etc.
For more complex angular apps, there are some available extensions for using Google Analytics and Google Tag Manager with Angular.
See Angulartics (which also supports web analytics solutions other than Google Analytics via its plugin architecture) and the related NPM package for GTM.
I find the Chrome extension unreliable. Simply run the global variable
dataLayer
in the console to print the array of events. One of the objects should be your pageview event.Here is an example of how we are using it:
Note: we're not simply using
$location.path()
, instead everything in the url after the domain. Which includes the.search()
&.hash()
.$location in the Angular docs
modules/analytic.js
services/analytic.js
In GTM
You'll need
{{virtualUrl}}
and{{event}}
Macros which listen for the dataLayer variables of the same name.You'll need a Google Analytics Event Tracking Tag with a Firing Rule which triggers when
{{event}}
equals 'virtualPageView'. Make sure you remove the default 'All Pages' Rule which makes it run on every page load. Instead, you want it to run when youdataLayer.push()
the event, which may happen multiple times per page refresh.The Tag should be configured with:
I would highly recommend you to use the angulartics library. I have used it on multiple sites. It gets you running pretty quickly.
It includes support for Virtual Page Views and events out of the box. It does not support GA eCommerce but has support for extensibility.
Also - I have used with both GTM and Piwik.
No need to add code.
Configure a "history change" trigger, this is triggered by angular route changes, add it as a trigger to your "page views" tag.