Track File Downloads in Google Analytics Using MooTools

By  on  

A while back I wrote an article detailing how you can use forced downloads via PHP to track downloads. What if you could get that same data into Google Analytics? Using some simple MooTools and advanced Google Analytics tactics, now you can.

The HTML

	
	<a href="/media/video.wmv" class="download">Download This Video!</a>
	<a href="/media/document.pdf" class="download">Download This PDF!</a>
	<a href="/media/document.doc" class="download">Download This Document!</a>
	<a href="/media/archive.zip" class="download">Download This Zip File!</a>
	

Any download I want tracked, I add the "download" CSS class to.

The MooTools 1.2

window.addEvent('load', function() {
	if(pageTracker) {
		$$('.download').addEvent('click',function() {
			pageTracker._trackPageview('/downloads/' + this.get('href').replace('http://',''));
		});
	}
});

Just like tracking AJAX clicks and outbound links, we direct Google Analytics to record the event.

Now you get download counts and it gets lumped in with the rest of your Google Analytics stats.

Recent Features

  • By
    Page Visibility API

    One event that's always been lacking within the document is a signal for when the user is looking at a given tab, or another tab. When does the user switch off our site to look at something else? When do they come back?

  • By
    fetch API

    One of the worst kept secrets about AJAX on the web is that the underlying API for it, XMLHttpRequest, wasn't really made for what we've been using it for.  We've done well to create elegant APIs around XHR but we know we can do better.  Our effort to...

Incredible Demos

  • By
    HTML5&#8217;s placeholder Attribute

    HTML5 has introduced many features to the browser;  some HTML-based, some in the form of JavaScript APIs, but all of them useful.  One of my favorites if the introduction of the placeholder attribute to INPUT elements.  The placeholder attribute shows text in a field until the...

  • By
    Create a 3D Panorama Image with A-Frame

    In the five years I've been at Mozilla I've seen some awesome projects.  Some of them very popular, some of them very niche, but none of them has inspired me the way the MozVR team's work with WebVR and A-Frame project have. A-Frame is a community project...

Discussion

  1. Wow, didn’t know that this was possible, this is a great trick! Thanks!

  2. Thanks man! Even i’m not a big fan of Moo, i will surely use this with jquery :P
    Thanks again ;)

  3. A while back, I wrote a jQuery plugin that automatically adds tracking for external links, downloads, and mailto’s:

    http://devblog.jasonhuck.com/2007/11/19/google-analytics-integration-with-jquery/

    Rather than adding specific classes for each of these items, I based the tracking on the characteristics of the URL.

  4. Thanks man.. I don not know the MooTool can do this.

  5. Thanks David :) everyday i learn different things from you. Thanks lot.

  6. Recently, I extended Google Analytics to add download tracking for Google’s new Asynchronous Google Analytics Model. I call the extension Entourage.js:

    http://techoctave.com/c7/posts/58-entourage-js-automatic-download-tracking-for-asynchronous-google-analytics

    One of my goals was a small footprint, so it’s narrowly scoped to track file downloads only – no mailto or external links. Also, it’s framework agnostic. I wanted developers to have the freedom to use the extension and still use whatever JavaScript framework they want.

    I love jQuery, but I’ve always had much respect for the MooTools and Prototype.js community too.

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!