Last active
October 8, 2018 16:50
-
-
Save jeremypage/7a8d82d1e383f9637bb1 to your computer and use it in GitHub Desktop.
Enable tracking of many links and downloads that cannot normally be tracked in Google Analytics (from http://www.blastam.com/blog/index.php/2013/03/how-to-track-downloads-in-google-analytics-v2)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Enables us to track many links and downloads that cannot normally be tracked in Google Analytics | |
jQuery(document).ready(function($) { | |
var filetypes = | |
/\.(zip|exe|dmg|pdf|doc.*|xls.*|ppt.*|mp3|txt|rar|wma|mov|avi|wmv|flv|wav)$/i; | |
var baseHref = ''; | |
if (jQuery('base').attr('href') != undefined) baseHref = jQuery( | |
'base').attr('href'); | |
jQuery('a').on('click', function(event) { | |
var el = jQuery(this); | |
var track = true; | |
var href = (typeof(el.attr('href')) != 'undefined') ? | |
el.attr('href') : ""; | |
var isThisDomain = href.match(document.domain.split('.') | |
.reverse()[1] + '.' + document.domain.split('.') | |
.reverse()[0]); | |
if (!href.match(/^javascript:/i)) { | |
var elEv = []; | |
elEv.value = 0, elEv.non_i = false; | |
if (href.match(/^mailto\:/i)) { | |
elEv.category = "email"; | |
elEv.action = "click"; | |
elEv.label = href.replace(/^mailto\:/i, ''); | |
elEv.loc = href; | |
} else if (href.match(filetypes)) { | |
var extension = (/[.]/.exec(href)) ? /[^.]+$/.exec( | |
href) : undefined; | |
elEv.category = "download"; | |
elEv.action = "click-" + extension[0]; | |
elEv.label = href.replace(/ /g, "-"); | |
elEv.loc = baseHref + href; | |
} else if (href.match(/^https?\:/i) && ! | |
isThisDomain) { | |
elEv.category = "external"; | |
elEv.action = "click"; | |
elEv.label = href.replace(/^https?\:\/\//i, ''); | |
elEv.non_i = true; | |
elEv.loc = href; | |
} else if (href.match(/^tel\:/i)) { | |
elEv.category = "telephone"; | |
elEv.action = "click"; | |
elEv.label = href.replace(/^tel\:/i, ''); | |
elEv.loc = href; | |
} else track = false; | |
if (track) { | |
ga('set', 'nonInteraction', true); | |
ga('send', 'event', { | |
eventCategory: elEv.category.toLowerCase(), | |
eventAction: elEv.action.toLowerCase(), | |
eventLabel: elEv.label.toLowerCase(), | |
eventValue: elEv.value | |
}); | |
if (el.attr('target') == undefined || el.attr( | |
'target').toLowerCase() != '_blank') { | |
setTimeout(function() { | |
location.href = elEv.loc; | |
}, 400); | |
return false; | |
} | |
} | |
} | |
}); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Code updated to use newer analytics.js API