Tracking User Engagement in a Single Page Web App

On April 18th 2012 we pushed a preview release of our collaborative decision making platform Review19 to the general public. Needless to say releasing the platform to the public was an extremely rewarding and fun experience.

What made the process even better were the many experiments we tried. As fun as some of the experiments were, including figuring out a freakishly awesome zero-downtime Node.js continuous deployment process, the most fun has to be tracking user behaviour and engagement within our application.

Review19 is not a typical web app with routes, controllers and models. We’re a next generation, single page JavaScript application in the true sense. Apart from a handful of tasks (less than half a dozen) most of the client application resides in a single HTML5+CSS+JavaScript combine. On the server side RESTful APIs are minimal and much of the client-server communication takes place over web sockets (or fallbacks if user’s browser is oldish).

Custom Events

Okay, if you’ve checked out Review19 you know that you and your team can use it to manage / track decisions and projects. Typical workflows include collaborators taking a lot of ‘actions’. For example creating a SWOT analysis in a decision process, updating a ticket status in project management or adding a new team member.

For us, tracking behavior meant relinquishing the old concepts of pageviews, hits, unique hits etc. Our user loads a web page once and then proceeds to perform a bunch of custom actions.

Weapon of choice: Google Analytics

After evaluating KissMetrics, we opted for the much more powerful Google Analytics. As explained above, a key requirement for a single-page app is to track events. While both KissMetrics and Google Analytics support custom events, KissMetrics felt restrictive.

When it comes to analytics, I like to be closer to the numbers and raw data. I don’t mind the learning curve with Google Analytics. Analysing data correctly is worth it. I may be wrong about KissMetrics but it was easier for me to analyze my data on Google Analytics. It certainly feels the most capable of the two.

Registrations and Logins

Here are some raw numbers for the last thirty days i.e. 20th April 2012 to 20th May 2012:

* Unique visitors: 1301
* Registrations: 130
* Logins: 274

The first time I took notice, these numbers surprised me. Specifically, the conversion rates. The conversion rate for registrations is 9.9923% while the conversion rate for logins is 21.06%. Much better than what I had anticipated. Did I have really low expectations or is my surprise valid?

Also a conclusion worth drawing, on an average almost everyone who signed up logs in at least twice.

Of course this isn’t actually the case and some very regular users help bring up the average while others unimpressed with the app don’t come back.

But the average ratio of registrations-to-logins being 1:2 is encouraging for us.

Decisions or Projects?

Review19 is broadly divided into a collaborative decision making / tracking module and a Kanban / Scrum project tracking module. The project tracking module emerged out of the original proof-of-concept while the collaborative decision making module is the product offering we hope really picks up.

Now the project tracking module was available to the public since November 2011 while the collaborative decision making module was released in the middle of April 2012. Naturally we were expecting the project tracking module to dominate the numbers.

While the project tracking module’s numbers are ahead, its only very marginal. Here’s the data:

* New decision processes initiated: 94
* New projects created: 98

The Time Factor

The time factor is one of the most important metric for a single page web app.

Single page apps will never have a lot of pageviews and hits (because they don’t require a user to hop from page to page in a particular session) so you better make sure people are spending enough time on your app.

Again, very exciting numbers for Review19.

* Total time spent: 170 hours, 22 minutes and 22 seconds
* On average: 20 minutes and 42 seconds per user


I must admit these are the first month stats and I really don’t know how good or bad they are, however to my (ignorant?) eyes they look like a good start and I certainly feel encouraged.

Thankfully even the minutest of custom events and user actions are being tracked on Review19, and I look forward to coming months and more incisive analytics.

Till then, keep hacking.

PS: I didn’t find it necessary to explain how to setup tracking of custom events using Google Analytics. Its really simple and it boils down to making function calls in JavaScript. The documentation does a good job.

Hacker News Discussion