Shoora
10/8/2018 - 4:48 PM

Track Downloads & Outbound Links in Google Analytics

Track Downloads & Outbound Links in Google Analytics

/* Track Downloads & Outbound Links in Google Analytics
 ******************************************************* */
 if (typeof jQuery != 'undefined') {
    jQuery(document).ready(function($) {
        var filetypes = /\.(zip|pdf|doc|docx|xls|xlsx|ppt|pptx|mp3|mp4|txt|rar|wma|mov|avi|wmv|flv|wav|cfg|dwg|igs|par|rfa|sat|stp)$/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('send', {'hitType': 'event','eventCategory': elEv.category.toLowerCase(),'eventAction': elEv.action.toLowerCase(),'eventLabel': elEv.label.toLowerCase(),'eventValue': elEv.value,'nonInteraction': elEv.non_i});

                    if (el.attr('target') === undefined || el.attr('target').toLowerCase() != '_blank') {
                        setTimeout(function() {
                            location.href = elEv.loc;
                        }, 400);
                        return false;
                    }
                }
            }
        });
    });
}