Google Tag Manager: Cookieweiche für Beginner

Das der Google Tag Manager ein sehr mächtiges Tool ist und weitestgehend unterschätzt wird, wurde mir bei einer besonderen Anforderung klar. Ich sollte mit möglichst einfachen Mitteln eine Cookieweiche realisieren, die dann auch noch ohne IT pflegbar sein sollte. Eine Cookieweiche oder Trackingweiche ist für eCommerce Projekte eigentlich unverzichtbar um die Sales in den verschiedenen Marketingmaßnahmen zu deduplizieren. Die „Wahl der Waffen“ sollte also ein Tag Manager sein. Bei der Recherche bin ich auf einige Tag Manager gestoßen, die ich auch schon aus vergangenen Setups kannte. Zu guter Letzt habe ich mir einmal de Google Tag Manager angeschaut und konnte hier ein absolut einfaches Setup generieren, welches ich hier gerne teile.

Cookie Weiche

Cookie Weiche

Vorab: Ich arbeite mit dem Google Tag Manager V2. Ich habe mir die V1 nie richtig angeschaut, da immer andere Tag Manager (DC Storm Tag Manager, Tag Commander Tag Manager, Exactag Tag Manager, etc…) für ein Setup gewünscht waren. Und wie ich von einigen Kollegen gehört habe, gibt es auch nicht wirklich einen Weg an der V2 vorbei. Also, upgraden auf V2 (https://tagmanager.google.com/)! Aber starten wir mit der Umsetzung:

Realisierung einer Cookieweiche im Google Tag Manager

Ich gehe davon aus, dass der Google Tag Manager bereits im Einsatz ist und überspringe das Setup an dieser Stelle und ich gehe davon aus, dass Begriffe wie „Trigger“ bekannt sind. Anforderung war (wie oben schon erwähnt) eine Cookieweiche zur Sales – Deduplizierung zwischen verschiedenen Marketing Kanälen zu realisieren.

1. Landingpage Tag

Als aller erstes brauchen wir ein JavaScript, welches wir auf allen Seiten des Shops (außer der Conversion Page) einbinden. Dieses JavaScript soll für uns einen URL Parameter auslesen und auf Basis dieses Parameters einen Cookie bei dem User setzen. Hier ist die erste Idee für dieses JavaScript:

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
<script language="javascript" type="text/javascript">
    var query = window.location.search.substring(1); /* URL Parameter auslesen */
    var vars = query.split("&");
    for (var i=0;i<vars.length;i++)
    {
        var pair = vars[i].split("=");
        if(pair[0] == "saleschannelid") /* saleschannelid Parameter identifizieren */
        {
            var d = new Date();
            d.setTime(d.getTime() + (30*24*60*60*1000)); /* 30 Tage Cookielifetime */
            var expires = "expires="+d.toUTCString();
            document.cookie = "saleschannel=" + pair[1] + "; path=/; " + expires; /* saleschannel Cookie setzen, Cookiewert ist der Wert des URL Parameters */
        }
    }
    if(typeof pair[1] == "undefined")
    {
        var ref = document.referrer.split('/')[2]; /* Referrer auslesen */
        if (ref == "www.google.de" || ref == "www.bing.com" || ref == "r.search.yahoo.com") /* Suchmaschinen - Referrer identifizieren - aktuell fehlen noch Mobile Referrer */
        {
            var d = new Date();
            d.setTime(d.getTime() + (30*24*60*60*1000)); /* 30 Tage Cookielifetime */
            var expires = "expires="+d.toUTCString();
            document.cookie = "saleschannel=seo; path=/; " + expires; /* saleschannel Cookie setzen, Cookiewert ist der Wert des URL Parameters */
        }  
    }
</script>

Dieses Cookie hat eine branchen-übliche Laufzeit von 30 Tagen, dies kann aber in dem JavaScript beliebig angepasst werden (siehe Kommentare). Wie schon erwähnt basiert es auf einem URL Parameter (in diesem Fall „saleschannelid“) welcher von allen Sales Kanälen (SEM, Display, Newsletter…) benutzt und entsprechend gefüllt werden sollte.

Bevor wir das Tag anlegen, benötigen wir noch einen Trigger, der das Tag auslöst und zwar wie oben schon erwähnt auf allen Seiten außer der Conversion Page:

Google Tag Manager Trigger Landingpage

Google Tag Manager Trigger Landingpage

Die Ausnahmeregel „Page URL enthält nicht conversion.html“ ist fiktiv gewählt. Hier muss jeder die Order Confirmation Page seines Shopsystems anpassen (notfalls Testorder generieren).

Nun legen wir das Landingpage Tag an. Der oben erwähnte JavaScript Code kann dabei einfach in ein neues Tag kopiert werden:

Google Tag Manager Landingpage Tag

Google Tag Manager Landingpage Tag

Als Trigger wählen wir den vorher angelegten Landingpage Trigger aus.

2. Variable

Als nächstes benötigen wir im Google Tag Manager eine Variable, die das Cookie wieder auslesen kann und durch den Wert im Cookie befüllt wird:

Google Tag Manager Variable First Party Cookie

Google Tag Manager Variable First Party Cookie

3. Conversion Tags

Wir gehen in unserem Beispiel davon aus, dass unser Shop aktuell durch drei Marketingmaßnahmen „befeuert“ wird:

  1. SEA (Adwords)
  2. Affiliate
  3. Email

Für jeden Sales Kanal benötigen wir noch einen Trigger, der das jeweilige Conversion Tag auslöst. Die Conversion Tags sollen a) nur auf der Conversion Seite und b) in Abhängigkeit von dem Wert im Cookie ausgelöst werden. Hierfür bedienen wir uns der vorher definierten Variable. Die drei Trigger sehen wie folgt aus:

Affiliate Conversion Trigger

Google Tag Manager Trigger Conversion Affiliate

Google Tag Manager Trigger Conversion Affiliate

Email Conversion Trigger

Google Tag Manager Trigger Conversion Email

Google Tag Manager Trigger Conversion Email

SEA Conversion Trigger

Google Tag Manager Trigger Conversion SEA

Google Tag Manager Trigger Conversion SEA

Die Ausnahmeregel „Page URL enthält nicht conversion.html“ ist hier wieder fiktiv gewählt und muss ebenfalls wie oben schon erwähnt angepasst werden. Darüberhinaus verwenden die Trigger die Variable aus dem Cookie. Damit die Trigger richtig arbeiten können, muss natürlich vorher der Parameter in den URLs korrekt befüllt werden. In dem oben erwähnten Beispiel müssen die URLs wie folgt aussehen:

  • SEA (Adwords) => http://www.domain.tld/?saleschannelid=adwords
  • Affiliate => http://www.domain.tld/?saleschannelid=affiliate
  • Email => http://www.domain.tld/?saleschannelid=email

Diese Parameterwerte sind natürlich anpassbar, dann muss aber entsprechend auch der Trigger abgeändert werden!

Als nächstes implementieren wir im Google Tag Manager die drei Conversion Tags. Hierbei benötigen wir noch weitere Variablen (wie zum Beispiel OrderID, SalesTotalCost, etc.), die über die DataLayer aus der Shopsoftware an den Tag Manager übergeben werden. Auf das Thema Google Tag Manager DataLayer gehe ich aber in einem späteren Blogposting genauer ein.

Affiliate Conversion Tag

Google Tag Manager Conversionpage Affiliate Tag

Google Tag Manager Conversionpage Affiliate Tag

Email Conversion Tag

Google Tag Manager Conversionpage Email Tag

Google Tag Manager Conversionpage Email Tag

SEA Conversion Tag

Google Tag Manager Conversionpage SEA Tag

Google Tag Manager Conversionpage SEA Tag

Als Trigger wählen wir jeweils die vorher angelegten Conversion Trigger aus.

Als letztes müssen die beiden Conversion Tags noch um einen kleinen Zusatz erweitert werden, denn unser Cookie befindet sich weiterhin auf dem Client des Users. Da aber höchstwahrscheinlich Folgesales einen Aufruf der Conversion Tags nicht auslösen sollen, müssen wir das Cookie löschen:

1
2
3
4
5
6
<script language="javascript" type="text/javascript">
    var d = new Date();
    d.setTime(d.getTime() + (1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = "saleschannel=delete; path=/; " + expires;
</script>

Diesen Code einfach in den Conversion Tags unterhalb der Netzwerk Codes eintragen.

Im Groben war es das auch schon…

Jan Berens ist seit über 12 Jahren im Online Marketing tätig und schreibt auf seinem Blog www.janberens.de über aktuelle Online Marketing Themen und die Technischen Details dahinter. Zu seinen Stationen in den 12 Jahren gehören unter anderem die Fliks GmbH, die ad-cons GmbH und die douglas Holding. Jan Berens ist Speaker auf zahlreichen SEO Stammtischen und Online Marketing Events und hält Vorträge und Workshops zu den Themen "Technical SEO" und "Tracking Methoden".





Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *