Piwik Email Newsletter Kampagnen Tracking mit Zählpixel
Ich nutze nun schon seit mehreren Monaten Piwik als Alternative zu Analytics und bin damit soweit auch sehr zufrieden. Doch eines störte mich doch schon etwas: Es ist nicht möglich, ohne Javascript einen Besucher zu erfassen. Somit funktioniert natürlich auch kein Zählpixel in Email und Newslettern, da dort JavaScript nicht möglich ist. Nach langen überlegen und testen habe ich nun jedoch eine funktionierende Lösung gefunden, mit der man auch Newsletter als Kampanie erfassen kann und damit durchaus zufrieden bin. Diese stelle ich hier für andere User bereit. Mögliche Änderungen und Anpassungen können gerne vorgenommen werden
Das in den Mails enthalte Zählpixel sollte dabei einen eindeutigen Namen haben, der über die .htaccess erkannt werden kann und sonst nicht verwendet wird. Ebenso wird dem Grafiknamen ein Key hinzugefügt, das für die Kampangne als Schlüsselwort verwendet wird.
In meinem Beispiel lautet die Grafik somit: newslogo-20100627.gif
“20100627″ ist dabei das Schlüsselwort (Keyword) der Kamapgne und steht in meinem Fall für den heute versendeten Newsletter.
Die .htaccess dazu:
RewriteRule ^/newslogo-(.+)\.gif$ /piwik-pixel-tracking.php [L]
Die .htaccess erkennt dieses Zählpixel nun anhand des Anfangs “newslogo-” und dem Dateiende “.gif” und ruft dann das eigentlich “Piwik Pixel Tracking Script” auf.
Anpassungen im Script:
Dort sind eigentlich nur wenige Handgriffe nötig. Zum einen muss die URL zur piwik.php angegeben werden, zum anderen die Seiten-ID, für die das Tracking erfolgen soll. Ebenso wird noch ein Kampagnenname (piwik_campaign) benötigt, der per Default auf “Newsletter” gesetzt ist. Dieser kann dort auch geändert werden. Das Keywort (piwik_kwd) wird ja mit dem Namen des Zählpixels übermittelt und muss somit nicht extra angegeben werden.
Schlussendlich kann das Zählpixel in die HTML-Email eingebunden werden:
<img src="http://www.domain.de/newslogo-KEY.gif" width="1" height="1" alt="" />
Das Script piwik-pixel-tracking.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | <?php /* Autor: Ingo Busch URI: http://www.ferien-netzwerk.de Beschreibung: Ermöglicht das Tracken von Emails und Newslettern mit dem Analysetool Piwik Name: piwik-pixel-tracking.php Version: 0.1 Datum: 25.06.2010 */ // Pfad zur piwik.php inkl. http:// $piwik_script = 'http://www.domain.de/piwik/piwik.php'; // Kampagnen-Name $piwik_campaign = 'Newsletter'; // Piwik Seiten-ID (Standard: 1) $piwik_idsite = 1; // Ab hier bitte nur Änderungen vornehmen, wenn Sie wissen was Sie tun. // Requeststring abrufen if($piwik_request_string = piwik_request_string($piwik_campaign, $piwik_idsite)) { // Weiterleitung an Tracking-Script von Piwik header('Location: '.$piwik_script.'?'.$piwik_request_string); } exit; function piwik_request_string($piwik_campaign, $piwik_idsite) { # Abbruch, wenn Aufruf nicht über .gif erfolgt if(strtolower(pathinfo($_SERVER['REQUEST_URI'], PATHINFO_EXTENSION)) != 'gif') return false; $req = array(); # Seiten-ID $req['idsite'] = $piwik_idsite; # URL der aufgerufenen Seite $req['url'] = ($_SERVER['SERVER_PORT'] == 80) ? 'http' : 'https'; $req['url'] .= '://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; # Schlüsselwort herausfinden list($unused, $piwik_kwd) = explode('-', $_SERVER['REQUEST_URI'], 2); # Kampagnen-Name und Schlüsselwort anhängen $req['url'] .= (strpos($_SERVER['HTTP_HOST'], '?') === false) ? '?' : '&'; $req['url'] .= 'piwik_campaign='.$piwik_campaign.'&piwik_kwd='.$piwik_kwd; # Cookie möglich? $req['cookie'] = (isset($_SERVER['HTTP_COOKIE']) AND !empty($_SERVER['HTTP_COOKIE'])) ? 1 : 0; # Referrer $req['urlref'] = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; # h, m, s - Stunde, Minute, Sekunde ohne führende Nullen $req['h'] = ltrim(date('G',$_SERVER['REQUEST_TIME']), 0); $req['m'] = ltrim(date('i',$_SERVER['REQUEST_TIME']), 0); $req['s'] = ltrim(date('s',$_SERVER['REQUEST_TIME']), 0); # Zufallsnummer $req['rand'] = '0.' . mt_rand(0,99999999999999999); # Action_name $req['action_name'] = ''; # Tracking aktivieren $req['rec'] = 1; # Query-String erstellen und zurückgeben return http_build_query($req); } ?> |
So, ich wünsche nun allen die es verwenden wollen, viel Spaß damit. Bei mir funktioniert es jedenfalls und die Newsletter werden als Kampagne registriert und mitgezählt.
