Tracker doesn't with Google Tag Manager

Including userTrack through Google Tag Manager is not recommended. Google Tag Manager is blocked by ad-blockers, which means that userTrack will fail to load too.

Problem:

Including the userTrack tracking script via Google Tag Manager doesn't work.

Uncaught TypeError: Cannot read property 's' of undefined at ust.min.js?v=3.4.2:2

Cause:

The issue occurs because when you include multiple scripts via GTM, the include order is not guaranteed.

The default way to include userTrack
<script>UST_CT = [];UST = { s: Date.now(), addTag: function(tag) { UST_CT.push(tag) } };</script>
<script src="https://your.usertrack.com/server/ust.min.js?v=x.x.x" async></script>

With Google Tag Manager, the second <script> tag might be loaded before the first one.

Solution:

A quick solution is to use a single script tag and load ust.min.js dynamically like this:

Single-script way to include userTrack
<script>UST_CT = [];UST = { s: Date.now(), addTag: function(tag) { UST_CT.push(tag) } };
var ust_min_js = document.createElement("script");
ust_min_js.src = 'https://your.usertrack.com/server/ust.min.js?v=x.x.x';
document.head.appendChild(ust_min_js);
</script>

Make sure to replace https://your.usertrack.com/server/ust.min.js?v=x.x.x with the actual URL to your tracking file.