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 ;-)

Prinzipiell ist das Script ziemlich einfach aufgebaut, benötigt aber dennoch mindestens PHP5, eine laufende Piwik-Installation sowie die Unterstützung von einer .htaccess. Letztere insbesondere für die Zählpixel in der Email. Theoretisch könnte man das Script auch direkt in die Mail einbinden, doch dynamische Bilder werden oft als Spam erkannt. Um dies zu umgehen wird in die Email nur ein normales Bild vom Typ GIF eingebunden. Beim Abruf wird durch die .htaccess das eigentliche Script gestartet, das zum einen den Request für Piwik aufbereitet und zum anderen an das eigentliche Trackingscript weiterleitet.

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.
Piwik Kampagne für Email Newsletter

Ähnliche Beiträge:

Schreibe einen Kommentar

Die Email-Adresse wird niemals öffentlich genannt. Mit * markierte Felder sind erforderlich.

Bitte nebenstehenden Code eingeben