Skip to main content

Get cookie values to use in web tracking

You can retrieve cookie values to use elsewhere in your application, e.g. to send them to other systems, or to include them in server-side requests.

If you have access to the tracker instance, use the built-in getter methods. If you need to read cookie values from code that runs independently of the tracker, you can parse the cookie directly.

It's possible to retrieve cookie properties for use in your code using a tracker callback.

The getDomainUserInfo method returns all the information stored in _sp_id first-party cookie in an array:

javascript
// 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 11 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
  8. ID of the previous session (since version 3.5)
  9. ID of the first event in the current session (since version 3.5)
  10. Device created timestamp of the first event in the current session (since version 3.5)
  11. Index of the last event in the session (used to inspect order of events) (since version 3.5)

The getCookieName method returns the complete cookie name for the domain or session cookie:

javascript
// 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.

Domain user ID

The getDomainUserId method returns the user ID stored in the first-party cookie:

javascript
// Access the tracker instance inside a callback
snowplow(function () {
var sp = this.sp;
var domainUserId = sp.getDomainUserId();
console.log(domainUserId);
})

Domain session index

The getDomainSessionIndex method returns the session index stored in the first-party cookie:

javascript
// Access the tracker instance inside a callback
snowplow(function () {
var sp = this.sp;
var domainSessionIndex = sp.getDomainSessionIndex();
console.log(domainSessionIndex);
})

You can use the following function to extract the Domain User Information from the ID cookie:

javascript
/*
* Function to extract the Snowplow Domain User Information from the first-party cookie set by the Snowplow JavaScript Tracker
*
* @param string cookieName (optional) The value used for "cookieName" in the tracker constructor argmap
* (leave blank if you did not set a custom cookie name)
*
* @return string or bool The ID string if the cookie exists or false if the cookie has not been set yet
*/
function getSnowplowDuid(cookieName) {
var cookieName = cookieName || '_sp_';
var matcher = new RegExp(cookieName + 'id\\.[a-f0-9]+=([^;]+);?');
var match = document.cookie.match(matcher);
var split = match[1].split('.');
if (match && match[1]) {
return {
'domain_userid': split[0],
'domain_sessionidx': split[2],
'domain_sessionid': split[5]
}
} else {
return false;
}
}

If you set a custom cookieName field in the argmap, pass that name into the function; otherwise call the function without arguments. Note that if the function is called before the cookie exists (i.e. when the user is visiting the page for the first time and sp.js has not yet loaded) if will return false.