It’s been 5 months since our last blog post. Normally we are known for our constant updates and posts, so when people started asking us recently if we were still alive, that was understandable.

I am here to assure you, we are in fact still here and things are just fine! We did try to enjoy life a little this summer so things were definitely a bit slower, but we still pushed out plenty of updates. Not many of them warranted their own post, but we figured with people wondering our status, we’d let you know what’s been happening since our last post in May.

More real time!

Clicky processes data in batches, which makes things much more efficient than processing every single action as it streams in. Since the beginning (2006!) the batches have been done once a minute (excluding Spy, which is a separate system and does in fact show data live as it streams in). After nearly 8 years, we decided it was time to up the game. We started with halving the interval down to 30 seconds, and then 20. It’s still at 20 right now, but the hope is we can get it down to once every 10 seconds. More testing is needed though.

We’ve also been testing a version of Spy that uses web sockets so data is pushed to your browser, making it truly “live” data, instead of the current “pull once every few seconds” method. Testing and debugging has taken a lot longer than expected, but we’re getting there and hope to have this in production fairly soon.

First/third party cookie synchronization

We use a combination of first and third party cookies to track unique visitors to your site. Third party cookies always took precedence though, which is particularly useful for those of you tracking multiple domains (including sub-domains) under the same site ID. The problem was that if you wanted to query our API live based on their unique (cookie) ID, the cookie that your site would see for that visitor would not necessarily match the cookie we were using on our end, since your site would only see the first party cookie. We’ve updated the tracking so when a hit comes in, we always update the first party cookie to be the same value as the third party cookie if they don’t match. This change allows you to reliably use the first party cookie (“_jsuid”) value now to query our API.

PushState navigation

4-5 years ago, hashbang navigation was all the rage for making your site feel like an “app”. There was simply no alternative. Then browser vendors added support for the new History API, which offers the same benefits as hashbangs, and none of the drawbacks. One day I had had enough and decided to update Clicky to this new method. It only took about a day and we couldn’t be happier with the change.

Not to mention the pleasant side effect of fixing a serious bug that was nearly 4 years old that I had never been able to figure out until I was rewriting all of this code. The bug was rare but it was a really nasty one, and the moment I figured out the root of the issue was cause for celebration.

Weekly/monthly data accuracy

Clicky stores weekly and monthly data in their own tables to make querying a lot faster over large date ranges. The problem was that these tables were only updated once a day at around 4am PST (GMT -8). So data for the current week and month would always be off because they would never include “today”. We updated the code to take this into account so these values should always be accurate now.

Multiple values for single custom data keys

Clicky has always logged every piece of custom visitor data you’ve thrown at it, but for any given key, we’ve always only shown the last value logged for any specific visitor. We will now show all of the values logged, both in the web UI and in API exports.

Code generator

Not everyone’s a programmer. So we added a new code generator page to help you set up some of the custom tracking options, video/audio analytics, and dynamic campaigns (utm_campaign etc).

Google tag manager

Google tag manager has really taken off, and we get requests for how to use it with Clicky all the time. So we added these detailed instructions to our apps and plugins page.

More exporting options

Any line graph you see can now be exported to a variety of image formats with the new “Download” menu you will see in the top right corner of every graph in every report.

You can now also export data in “The Basics” module from our UI. This has been a sore spot for the longest time, almost every report can be exported to a variety of formats by clicking the disk icon in the top right corner, but when you’re on the dashboard the only option was PDF. Now we’ve added a new option in the export menu, “The Basics…”, when you’re on the dashboard. Click that to be taken to a new page that gives you options for exporting all of that data.

Pagination and totals

At the bottom of every report we now give you options to jump to any and every page, as well as show you the total sum for the current page and all pages.

Auto-play looping HTML5 video/audio files no longer auto-tracked

Our code tries to detect all HTML5 video and audio tags and track interactions automatically, but when we added this feature we didn’t take into account that sometimes those videos might auto-play and loop (big problem with background videos for those fancy sites you see sometimes). This could lead to an explosion of tens or even hundreds of thousands of actions logged for a single visitor session. Ouch.

Heatmaps on sites with multiple tracking codes

Many customers use multiple tracking codes on a single site. The problem is that when the heatmap viewing process is initiated, the code always just used the first site ID in your HTML to grab the data. That’s fine if initiating from the on-site analytics widget, but if you were initiating it by clicking a heatmap link from the content report on Clicky, that wouldn’t always be the same site ID, which could really break things if for example trying to view a session heatmap. Now when you click on these links, the site ID is included in the URL so it should always work.

There’s been another issue with heatmaps when used with Firefox 29+, that issue being heatmaps don’t work at all. We’re not sure what they changed that broke this, but the good news is the developer of the heatmap javascript library we use has fixed the issue with the most recent release of his library. But it’s a major-version upgrade, so compatibility issues may exist. It’s near the top of our list to investigate so hopefully we’ll get this upgraded soon and heatmaps will start working again in Firefox.

Graphs in PDF exports

A change we made to javascript caused a fatal error with WKHTMLtoPDF, causing the graphs to be completely broken for a few months in PDF exports. We send thousands of these things every day in automated email reports but surprisingly no one emailed us about this issue until it had already existed for about 2 months. But it’s fixed now.

Coming soon

We’re currently working on a major overhaul to site/user prefs, one of those things being to make the trend and graphing preferences be user preferences rather than dashboard preferences. The dashboard options will still be there but a user will be able to specify whether or not they want they want their own settings to override them.

While we’re at it, we’re adding two new preferences. One will be a site preference to allow bots to be logged to your stats. Most people don’t want to see bot traffic so we (try to) filter it all out by default, but we do get requests to let them get logged. So that will be an option soon, disabled by default though of course. The other will be a preference to hide the current hour in hourly graphs, to avoid the “cliff” effect you see when it’s near the beginning of the hour.

In addition to some other new features we’d like to add, we’ve also been contemplating a major UI overhaul to make our reporting prettier and more dynamic, not to mention letting Clicky take full advantage of the high-resolution screens that just about everyone has these days.