Mit Piwik Klicks auf Element tracken – _paq undefined

Langsam verfalle ich auch der Datensammelwut. Eine Person hat sich auf einer meiner Webseiten einen Bannerplatz gemietet und mich interessiert,es wie viele Personen auf das Banner klicken. Piwik bietet einem mit den „benutzerdefinierten Variablen“ die Möglichkeit bestimmte Events zu tracken. Leider funktionieren die Beispielcodes aus der Dokumentation nicht wirklich. Daher hier ein kleiner Workaround dafür.

Da die gefundenen Tutorials bzw. die offizielle Dokumentation nicht wie erwartet funktioniert hat, beschreibe ich nun meinen kleinen Workaround.

Wir stellen uns also die folgende Webseite bzw. den folgenden Codeausschnitt vor:

<img src="http://" id="top_banner" />

Das ist also unser Bild. Wenn ein Besucher darauf klickt, so wollen das mitzählen.

In den oben genannten Quellen findet sich dazu der folgende Quelltext bzw. die folgende Umsetzung:

<img src="http://" id="top_banner" onclick="javascript:_paq.push(['setCustomVariable',1,'top_banner','page']);"/>

Wenn man in Piwik asynchrones Tracking aktiviert hat, so wird in dem generierten Quelltext das Array „_paq“ erzeugt. In dieses Array kann man Ereignisse pushen, welche dann vom Tracker abgearbeitet werden.  Die Initialisierung packt man normalerweise in einen eigenen Script-Block am unteren Ende des Bodys einer Webseite.

Das Problem bestand dann darin, dass in den on*-Enventhandlern das „_paq“-Array nicht mehr bekannt, also „undefined“, war. Demnach wurde auch nichts getrackt.

Die Lösung war dann einfach das folgende Stückchen Javascript:

document.getElementById("top_banner").addEventlistener('click',function() {
   _paq.push(['setCustomVariable',1,'top_banner','page'])
},false);

Diesen Einzeiler packt man einfach mit zum Piwik Trackingcode. Da der Code dann im gleichen Kontext behandelt wird, ist das „_paq“ Array auch bekannt und alles funktioniert wie erwartet.