Thursday, May 3, 2018

PeopleTools - Using Google Analytics (gtag.js)

In the past I have written about implementing Google Analytics in PeopleSoft.

Using analytics.js
Using ga.js

If we look at the latest script provided by Google Analytics, it uses the new JavaScript tagging framework gtag.js. This framework allows us to send event data to different products (Analytics, AdWords, DoubleClick, etc.) without managing them separately.

More on gtag.js:
Global Tracking Code Snippet:

If we want to implement Google Analytics in PeopleTools using this latest framework, we cannot simply take the sample code provided by Google and include it in a HTML object in PeopleTools. If you notice, even in my previous Google Analytics posts, I modified the sample code to make it PeopleTools friendly. This is because the script tags within the sample code (which involves loading an external script) will cause issues with PeopleTools when created as a JavaScript (HTML) object.

So, we need a way to first load the gtag.js (external) script and then execute the subsequent code provided in the sample. Here is a good example of how we can load an external script using javascript.

Using this approach, I re-wrote the Google Analytics javascript sample as follows. The loadScript function is very similar to the cskLoadJS function in my JavaScript Injection Framework - CSK_FL_BOOTSTRAP_JS.

Script for reference

Note: You will need to find and replace UA-XXXXXXXX-Y with your GA_TRACKING_ID.


Next we need to find a way to inject this javascript within all PeopleSoft pages. A simple approach would be to add a line of code at the end of a global delivered javascript such as PT_COMMON or PT_UTIL. For example:

Alternatively, we could use a JavaScript Injection Framework as described here:

Regardless of whether we use analytics.js or gtag.js, when we setup the Google site configuration, we should only include the hostname in the default URL.

E.g.: If this is our login URL

The Default URL should be configured as follows:


  1. sorry if this results in a double post but I cannot tell if my previous post worked or not.

    If I inject my JavaScript in both PT_COMMON and PT_UTIL will there be any analytic duplication? It seems that PT_COMMON is used by classic and PT_UTIL is used more for fluid but I'm not sure if there is overlap. I bring it up because our site is mainly fluid and I was not seeing as many counts when I used PT_COMMON and since changing to PT_UTIL, my counts have increased from 2-15 to 100+



    1. PT_UTIL is included in PT_COMMON as well as PT_COMMON_FMODE.

      If you want to move your code back to PT_COMMON that is fine. But as you figured, that may only execute in Classic pages. So, you will also need to include it in PT_COMMON_FMODE.

      Also, a good way to troubleshoot is to add console.log messages in your script. Then you can see if the script is executing multiple times, etc.