Startseite » Blog » Digital Analytics
22.09.2011
Ausgehende Links und Downloads in Analytics messen
Eine nicht ungewöhnliche Frage bei der Individualisierung von Trackingcodes und Anpassung der Implementierung von Google Analytics an die Wünsche des Betreibers ist das Tracking von Links auf externe Seiten (Seiten auf einer anderen Domain) sowie die Erfassung von Downloads aller möglichen Dateien, die ansonsten nicht in der Statistik von Google Analytics zu finden sind.
Viel manueller Aufwand?
Für beides stehen sowohl Ereignisse (Events) als auch virtuelle Seitenaufrufe in Analytics zur Verfügung, die bei wenigen externen Links und / oder Downloads durch entsprechende manuelle Ergänzung der Links um ein wenig JavaScript den Wunsch erfüllen können. Bei den meisten Sites würde dies aber in eine ganze Menge Arbeit ausarten und so wird dann entweder ganz darauf verzichtet bzw. nur ein Teil der Links manuell modifiziert... oder es wird ein Script in alle Seiten eingebunden, welches die externen Links und Verweise zu Downloads identifiziert und automatisch für ein passendes Tracking in Google Analytics sorgt.
Kostenloses Script als Lösung
Wer ein solches Script sucht, wird wurde z. B. bei Marco Hassler fündig, der in seinem Blog freundlicherweise ein solches Script zur automatisierten Anpassung der Links (nebst einer kleinen Anleitung zur Konfiguration) zur Verfügung stellt(e). Wer sich also nicht mit weiteren benötigten Bibliotheken oder gar kommerziellen Lösungen zur allumfassenden Konfiguration von Analytics herumschlagen will, um diesen eher harmlosen Wunsch zu erfüllen, ist damit prima bedient.
Neuer oder alter Trackingcode?
Für alle, die aus reiner Faulheit am alten Trackingcode festhalten, sollte der Einbau dieses Scripts dann spätestens Grund genug sein, seine Implementierung auf den neuen asynchronen Code umzustellen, zumal das eine Menge weiterer Vorteile und Möglichkeiten eröffnet. Sollte jemand aber einen guten Grund haben, weiterhin mit dem guten alten pageTracker zu arbeiten (wir haben einen ;)), sind folgende Anpassungen erforderlich, um das Script einzusetzen:
<script>
var downloadExtension = new Array(
'doc','docx','pdf','xls','ppt','zip','gz','bz2','rar','txt','vsd','vxd',
'js','css','exe','wma','mov','avi','wmv','mp3','mp4');
var trackDownloadsAsEvent = false;
var trackExtlinksAsEvent = true;
var downloadCat = 'Downloads';
var extLinksCat = 'Externe Links';
var intDomain = window.location.hostname;
if(window.addEventListener){document.addEventListener('click', clickHandler,
false);}
else {document.attachEvent('onclick', clickHandler);}
function clickHandler(e){
if (window.event) e = window.event;
var srcEl = e.srcElement? e.srcElement : e.target;
var targetUrl = srcEl.getAttribute('href');
if (targetUrl && targetUrl.length > 0) {
var re = new RegExp('^(?:f|ht)tp(?:s)?\://([^/]+)', 'im');
var tarDomain = (targetUrl.match(re)? targetUrl.match(re)[1].toString() :
(targetUrl.indexOf(':') < 0 ? intDomain : null));
if (tarDomain != null) {
var a = document.createElement('a');
a.href = targetUrl;
var filePath = a.pathname;
var fileName = filePath.split('/').pop();
var fileExt = fileName.substring(fileName.indexOf('.')+1);
if (intDomain == tarDomain) {
for (i=0; i<downloadExtension.length; i++) {
if (fileExt == downloadExtension[i]) {
if (trackDownloadsAsEvent) _gaq.push(['_trackEvent',
downloadCat, filePath]); pageTracker._trackEvent(downloadCat, filePath);
else _gaq.push(['_trackPageview', filePath]); pageTracker._trackPageview(filePath);
}
}
}
else {
if (trackExtlinksAsEvent) _gaq.push(['_trackEvent', extLinksCat,
tarDomain]); pageTracker._trackEvent(extLinksCat,
tarDomain);
else _gaq.push(['_trackPageview', '/' + extLinksCat + '/' +
tarDomain]); pageTracker._trackPageview('/' + extLinksCat + '/' +
tarDomain);
}
}
}
}
</script>