Tracker Callbacks
Documentation for latest release
The documentation listed here is for Version 2 of the JavaScript Tracker. Version 3 is now available and upgrading is recommended.
If you call snowplow with a function as the argument, the function will be executed when sp.js loads:
snowplow(function () {
  console.log("sp.js has loaded");
});
Or equivalently:
snowplow(function (x) {
  console.log(x);
}, "sp.js has loaded");
The callback you provide is executed as a method on the internal trackerDictionary object. This means that you can access the trackerDictionary using this.
// Configure a tracker instance named "cf"
snowplow('newTracker', 'sp', '{{COLLECTOR_URL}}', {
 appId: 'snowplowExampleApp'
});
// Access the tracker instance inside a callback
snowplow(function () {
 var sp = this.sp;
 var domainUserId = sp.getDomainUserId();
 console.log(domainUserId);
})
The callback function should not be a method:
// TypeError: Illegal invocation
snowplow(console.log, "sp.js has loaded");
will not work, because the value of this in the console.log function will be trackerDictionary rather than console.
You can get around this problem using Function.prototoype.bind as follows:
snowplow(console.log.bind(console), "sp.js has loaded");
For more on execution context in JavaScript, see the MDN page.
Methods which can be used from within a callback
getDomainUserId
The getDomainUserId method returns the user ID stored in the first-party cookie:
// Access the tracker instance inside a callback
snowplow(function () {
 var sp = this.sp;
 var domainUserId = sp.getDomainUserId();
 console.log(domainUserId);
})
getDomainUserInfo
The getDomainUserInfo method returns all the information stored in first-party cookie in an array:
// Access the tracker instance inside a callback
snowplow(function () {
 var sp = this.sp;
 var domainUserInfo = sp.getDomainUserInfo();
 console.log(domainUserInfo);
})
The domainUserInfo variable will contain an array with 7 elements:
- A string set to 
'1'if this is the user's first session and'0'otherwise - The domain user ID
 - The timestamp at which the cookie was created
 - The number of times the user has visited the site
 - The timestamp for the current visit
 - The timestamp of the last visit
 - The session id
 
getUserId
The getUserId method returns the user ID which you configured using setUserId():
// Access the tracker instance inside a callback
snowplow(function () {
 var sp = this.sp;
 var userId = sp.getUserId();
 console.log(userId);
})
getCookieName
The getCookieName method returns the complete cookie name for the domain or session cookie:
// Access the tracker instance inside a callback
snowplow(function () {
 var sp = this.sp;
 var cookieName = sp.getCookieName('id');
 console.log(cookieName);
})
The argument corresponds to the basename of the cookie: 'id' for the domain cookie, 'ses' for the session cookie.
getPageViewId
The getPageViewId method returns the page view id:
// Access the tracker instance inside a callback
snowplow(function () {
 var sp = this.sp;
 var pageViewId = sp.getPageViewId();
 console.log(pageViewId);
})