DADI Track

DADI Track is a real-time data visualisation layer built around the concept of events.

DADI Track is a real-time data visualisation layer built around the concept of events.


Events can be sent to DADI Track from applications within the DADI platform or from any website that includes an appropriate script.

DADI Track is deliberately lightweight. It is not intended to be a long term data storage solution or as a replacement for existing tracking tools such as Google Analytics or the wider DADI platform; rather it is designed to facilitate real-time data dashboarding and piping.

🔗Architectural overview

DADI Track is an event tracking server that records user activity using either a tracking pixel built into a website, via a client-side JavaScript library or via an API interface.

The Track server broadcasts received events to any connected clients using Websockets — it is intended that DADI Visualise is one such connected client, and will utilise a collection of widgets to display user activity broadcast by Track.


There are currently two forms of tracking available — a tracking pixel and a lightweight client-side JavaScript library.

🔗Tracking pixel

The tracking pixel solution allows the embedding of a one pixel image into your webpages, using the domain of the Track server. Specific events may be captured using the querystring on the request to the tracking pixel:

Additional arbitrary data can be sent along with the request, simply by extending the querystring:

🔗Client-side JavaScript

The JavaScript library contains a small script to trigger a Track event. Once the file is embedded in your webpage(s) the track() function can be called:


Called with no arguments, it will send some standard parameters such as the page URL. As with the tracking pixel approach, you can pass arbitrary data with the event:

DADI.track({logged_in: true});

🔗Event handling via Metrics

The Track server loads a collection of “Metrics”, some of which are included in the core, and some which may be custom built and included via a plugin system. Metrics are stored in directories within the Track server and auto-loaded when the server starts.

Each metric contains a handler function that is called every time a new event occurs. Data is stored within the metric and emitted to connected clients at intervals specified by the metric’s own configuration options.

A basic example of a Metric is one for “total page views”. It would look something like this:

// Total views
// Sends total count per interval of time for every request made

const Metric = require('../metric').Metric

module.exports = function () {
  let totalViews = new Metric() = ‘view_totals’
  totalViews.initialData = 0
  totalViews.interval = 500
  totalViews.ignoreOnEmpty = false
  totalViews.increment = function (request) { += 1
  return totalViews


The alpha build of Track contains a simple dashboard to display events as they are broadcast.

To maintain the lightweight approach for Track it is intended that DADI Visualise will handle the display of events, meaning that ultimately the current dashboard will be removed from the Track codebase.

🔗DADI Track — Current state and next steps

DADI Track is at an Alpha release stage and available only for private development and testing. The first public release of DADI Track will be the Beta, scheduled for Q2 2018.

Related articles

More updates articles
Mail icon

Like what you are reading? Want to earn tokens by becoming a DADI Node? Save money on cloud computing services? Build amazing digital product with DADI Web Services? Join our mailing list.

To hear about our news, events and products or services subscribe now. You can also indicate which services you are interested in, which we use for research and to inform the content that we send generally.

* You can unsubscribe at any time by emailing us at or by clicking on the unsubscribe link which can be found in our emails to you. Read our Privacy Policy.