Skip to main content


Assuming you have completed the Node.js Tracker Setup for your project, you are now ready to initialize the Tracker.

Require the Node.js Tracker module into your code like so:

var snowplow = require('snowplow-tracker');
var emitter = snowplow.emitter;
var tracker = snowplow.tracker;

First, initialize an emitter instance. This object will be responsible for how and when events are sent to Snowplow.

var e = emitter(
'', // Collector endpoint
'http', // Optionally specify a method - http is the default
8080, // Optionally specify a port
'POST', // Method - defaults to GET
5, // Only send events once n are buffered. Defaults to 1 for GET requests and 10 for POST requests.
function (error, body, response) { // Callback called for each request
if (error) {
console.log("Request to Scala Stream Collector failed!");
{ maxSockets: 6 } // Node.js agentOptions object to tune performance

Note that last emitter's argument agentOptions is default configuration object for Node.js HTTP module. It required to constrain maxSockets for bulk loads, which otherwise can lead to event loss.

Initialise a tracker instance like this:

var t = tracker([e], 'myTracker', 'myApp', false);

The tracker function takes four parameters:

  • An array of emitters to which the tracker will hand Snowplow events
  • An optional tracker namespace which will be attached to all events which the tracker fires, allowing you to identify their origin
  • The appId, or application ID
  • encodeBase64, which determines whether unstructured events and custom contexts will be base 64 encoded (by default they are).
Was this page helpful?