A drop-in plugin that integrates Google's `trackEvent` directly into Backbone's `navigate` function.
JavaScript HTML
Latest commit b344c7a Oct 19, 2015 Kendall Buchanan updated readme
Failed to load latest commit information.
tests fixing analytics.js support Apr 14, 2014
.npmignore Create .npmignore Apr 7, 2014
LICENSE Adding license May 3, 2013
README.md updated readme Oct 19, 2015
backbone.analytics.js Typo fix Oct 19, 2015
package.json Bump version in package.json Oct 18, 2015



A drop-in plugin that integrates Google's trackEvent directly into Backbone's navigate function. Works best with pushState set to true. If pushState is turned off, it's possible Google will register visits twice on page load. You can mitigate that by removing the trackEvent from the Google code in your site.


Traditional Install

Add the asynchronous Google Analytics code to your site.

Add these dependencies to your site's <head>, in order:

<script src="underscore.js"></script>
<script src="backbone.js"></script>
<script src="backbone.analytics.js"></script>

NPM Install

Install NPM module:

npm install backbone.analytics --save


Anywhere you call your router's navigate method with the trigger option set to true Backbone.Analytics will call _gaq.push(['_trackPageview', '/some-page']) after completing the Backbone route. This pushes the route to the Google Analytics tracking queue. Once this queue is processed by the Google Analytics script your urls will be tracked to the Google Analytics server.

var TestRouter = Backbone.Router.extend({
  routes: {
    'some-page': 'somePage'

  somePage: function() {
    // Perform your route based logic, e.g. Replace the current view with a different one.
    return false;

var router = new TestRouter();

Somewhere else in your application, change the view by doing:

router.navigate('some-page', { trigger: true });

Anywhere in your application where you want to update the URL but do not trigger the associated route, you will still need to manually track the action.