Collecting data with Trackers and Webhooks

  1. Home
  2. Docs
  3. Collecting data with Trackers and Webhooks
  4. Trackers – collecting data from your own applications
  5. JavaScript Trackers (Web and Node.js)
  6. JavaScript Tracker
  7. JavaScript Tracker v3 Reference
  8. Advanced Usage
  9. Tracker Callbacks

Tracker Callbacks

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"); });
Code language: JavaScript (javascript)

Or equivalently:

snowplow(function (x) { console.log(x); }, "sp.js has loaded");
Code language: JavaScript (javascript)

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 "sp" 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); })
Code language: JavaScript (javascript)

The callback function should not be a method:

// TypeError: Illegal invocation snowplow(console.log, "sp.js has loaded");
Code language: JavaScript (javascript)

This will not work because the value of this in the console.log function will be the 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");
Code language: JavaScript (javascript)

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); })
Code language: JavaScript (javascript)

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); })
Code language: JavaScript (javascript)

The domainUserInfo variable will contain an array with 7 elements:

  1. A string set to '1' if this is the user’s first session and '0' otherwise
  2. The domain user ID
  3. The timestamp at which the cookie was created
  4. The number of times the user has visited the site
  5. The timestamp for the current visit
  6. The timestamp of the last visit
  7. 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); })
Code language: JavaScript (javascript)

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); })
Code language: JavaScript (javascript)

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); })
Code language: JavaScript (javascript)

If you’d like to learn more about Snowplow Insights you can book a demo with our team, or if you’d prefer, you can try Snowplow technology for yourself quickly and easily.