tealium-tracker
Install
npm install --save tealium-tracker
How to use
First, you'll need to inject the utag script onto the page.
If using Gatsby, see gatsby-plugin-tealium-utag.
Once utag
is globally available, initialize the Tealium tracker.
import initTealiumTracker from "tealium-tracker";
const { trackPageLoad, trackEvent } = initTealiumTracker();
This gives you access to trackPageLoad
and trackEvent
functions that you can call with the data object (a.k.a. the data layer).
trackPageLoad(myDataLayer);
trackEvent(myDataLayer);
Note
Since the utag
script loads asynchronously, you might encounter the case where trackPageLoad
or trackEvent
are called before the utag script finished loading.
In this case, tealium-tracker
will put the utag
calls in a queue and flush the queue once the utag
script is loaded.
For this to work, you must emit a "utag-loaded"
event when the utag
script is loaded.
<script type="text/javascript">
(function(a,b,c,d){
a='//tags.tiqcdn.com/utag/[ACCOUNT]/[PROFILE]/[ENV]/utag.js';
b=document;c='script';d=b.createElement(c);
d.onload=function() { b.dispatchEvent(new Event("utag-loaded")); };
d.src=a;d.type='text/java'+c;d.async=true;
a=b.getElementsByTagName(c)[0];a.parentNode.insertBefore(d,a)
})();
</script>
If using Gatsby, gatsby-plugin-tealium-utag takes care of emitting this event.
Validation
When schema
is passed, tealium-tracker
will automatically validate the data object against the schema before calling utag.view
or utag.link
.
const { trackPageLoad, trackEvent } = initTealiumTracker({ schema });
We use Ajv to perform the validation, so schema
can be something like:
const schema = {
type: "object",
required: ["site", "page"],
properties: {
site: {
type: "string",
minLength: 1
},
page: {
type: "string",
minLength: 1
},
button: {
type: "string",
minLength: 1
}
}
};
Debug mode
To output useful information to the console, do:
const { trackPageLoad, trackEvent } = initTealiumTracker({ debugMode: true });
Related