Einleitung

First-Party Tracking wird in der Zukunft immer wichtiger, da sonst die Gefahr besteht, Trackingrelevante Parameter durch Browserregulierungen zu verlieren. Besonders wichtig ist hierbei, dass Daten beim Austausch zwischen zwei Seiten erhalten bleiben, da sonst Sales den Publishern nicht korrekt zugeordnet werden können.

Wie wird First-Party Tracking realisiert? 

Dies geschieht unter anderen über die Einrichtung einer Sub-Domain. Die Sub-Domain wird genutzt, um die Trackingrelevanten Cookies auf First-Party-Ebene zu setzen, damit diese anschließend ITP-Konform wieder ausgelesen werden können.

Die easy MARKETING Suite wird auf einem Server der easy MARKETING installiert, der durch die Sub-Domain der Advertiser-Website erreichbar ist. Werden nun Cookies auf der Hauptseite gesetzt, können diese Informationen in den Cookies von der Sub-Domain ausgelesen werden.

Fallbeispiel:

Ein Publisher wirbt für ein Produkt und stellt einen Klicklink zur Verfügung. Ein User klickt auf diesen Link, wird über die Sub-Domain geleitet und es wird ein Cookie gesetzt. Anschließend wird die Landingpage aufgerufen. Der User hält sich etwas auf der Website auf und schließt nach einiger Zeit seinen Browser ohne etwas zu kaufen. Nach 10 Tagen besucht der User die Website erneut und kauf diesmal ein Produkt. Da der Cookie beim User noch existiert, durch die Sub-Domain ausgelesen und dem Publisher zugeordnet werden kann, erhält dieser hierfür seine Provision.

Im Third Party Kontext wäre der Cookie des Nutzers nicht durch das Affiliate Netzwerk auslesbar gewesen und der Sale hätte dem Publisher nicht zugeordnet werden können, was seine Moral, Werbung für das Produkt zu machen, gesenkt hätte.

In diesem Dokument werden nachfolgend drei Codesnippets aufgeführt:

  • Tracking Tag: Dieser wird dazu genutzt, um die Publisher bezogene Klick-Referenz beim Nutzer zu setzen, damit dieser später wiedererkannt werden kann. Dieser soll, im besten Fall, auf allen Seiten des Onlineshops verbaut werden.

  • Conversion Trackingcode: Dieser wird im Onlineshop auf der Bestellabschlusseite verbaut und dient der Erfassung von Transaktionen (nicht des Baskets).

  • Baskettrackingcode: Dieser wird im Onlineshop auf der Bestellabschlusseite verbaut und dient zur Erfassung des Warenkorbes. Somit könnten für bestimmte Artikel andere Vergütungslogiken angewendet werden.

Es muss vorab festgelegt werden, welche der beiden Trackingvarianten (Conversion- oder Baskettracking) zum Einsatz kommt. Es ist nicht möglich, beide parallel zu nutzen.

Eatms-Container

Einleitung:

Zur Identifizierung und Wiedererkennung des Nutzers und zur Einbindung von weiteren dynamischen Code, kann der eatms-Container verbaut werden. Hierfür muss der entsprechende JavaScript-Code auf jeder Seite verbaut werden. Wenn der eatms-Container verbaut wird, muss der Tracking-Tag Script-Code nicht verbaut werden.

JavaScript-Code

<script src="//SUB-DOMAIN/trck/etms/eatms.js"></script>

Tracking-Tag

Einleitung:

Dieser Code ist für die identifizierung und wiedererkennung des Nutzers zuständig. Hierfür wird ein entsprechendes Cookie gesetzt. Dieser Code sollte im besten Fall auf allen Seiten verbaut werden.


JavaScript-Code

(function() {

    var getKey = 'emid';

    var storageKey = 'emid';

    var emidCookieExpirationDays = 60;

    var emidCookieKey = 'emid';

    var emidCookieDomain = 'SUB-DOMAIN';


    var getValue = getParameterByName(getKey);

    if(getValue) {

        window.localStorage.setItem(storageKey, getValue);

        setEmidCookie(emidCookieKey, getValue, emidCookieExpirationDays,  emidCookieDomain);

    }

    function setEmidCookie(cname, cvalue, exdays, cdomain) {

      var d = new Date();

      d.setTime(d.getTime() + (exdays * 24*60*60*1000));

      var expires = "Expires="+ d.toUTCString();

      document.cookie = cname + "=" + cvalue + ";" + expires + ";Path=/;SameSite=none;Domain=" + cdomain + ";Secure";

    }

    function getParameterByName(e,n){n||(n=window.location.href),e=e.replace(/[[]]/g,"\$&");var r=new RegExp("[?&]"+e+"(=([^&#]*)|&|#|$)").exec(n);return r?r[2]?decodeURIComponent(r[2].replace(/\+/g," ")):"":null}

})();


Die Variable “emidCookieDomain” wird entsprechend der Sub-Domain initialisiert, muss aber für das entsprechende Partnerprogramm angepasst werden.

Nach der Definition der Funktion werden die Variablen initialisiert. Die Variable “getKey” und “storageKey” werden beide mit dem Wert “emid” initialisiert. Um die Variable “getValue” zu befüllen, wird die Funktion “getParameterByName” aufgerufen. Diese liest die URL des Browsers, sowie den Wert eines übergebenen Parameters aus. 

Dies bedeutet, dass in diesem Fall im Click der Parameter “?emid=” mit dem Wert “[24-Stellige action_id]” übergeben und dieser in die Variable “getValue” geschrieben wird. In der nächsten Zeile wird geprüft, ob die Variable “getValue” befüllt ist. Wenn dies der Fall ist, wird an die “emid” im localStorage des Browsers der Wert geschrieben.

Zusätzlich zum LocalStorage-Tracking wird ein Cookie auf die Domain, welche in der Variable “emidCookieDomain” definiert wurde, gesetzt. In dem Cookie wird der Wert des Parameters “?emid=” geschrieben. Der Cookie wird, wie in “emidCookieExpirationDays” definiert, standardmäßig auf 60-Tage gesetzt. Dies beeinflusst nicht die Provisionierung der Partner.

Conversion-Trackingcode

Einleitung:

Dieser Trackingcode ist für die Erfassung der Conversion / Bestellung zuständig und ist auf der Bestellabschlussseite auszugeben. 

JavaScript-Code

(function() { 

    var campaign_id = 'CAMPAIGN_ID';

    var trigger_id = 'TRIGGER_ID';

    var token = 'ORDERTOKEN'; 

    var turnover = 'TURNOVER';

    var descr = 'DESCRIPTION';

    var currency = 'EUR';

    var storageKey = 'emid';

    var trackingDomain = 'SUB-DOMAIN';

    var emid= '';


   var trackingUrl = 'https://'+trackingDomain+'/trck/etrack/?campaign_id='+campaign_id+'&trigger_id='+trigger_id+'&token='+token+'&descr='+descr+'&currency='+currency+'&turnover='+turnover+'&t=js';


emid = emid || window.localStorage[storageKey];

if(emid) {

  trackingUrl += '&emid='+emid;

}


var req = new XMLHttpRequest;req.withCredentials = true;req.open("GET",

trackingUrl),req.send(),req.onreadystatechange = function () { (req.readyState === 4) ?

eval(req.response) : null };

})();

Variablenbeschreibung:

Zu Beginn des Codes werden die Variablen initialisiert. Die rot hinterlegten Werte müssen durch die entsprechenden Werte ausgetauscht werden. Die Variablen werden entsprechend der Tabelle befüllt:


VARIABLE

BESCHREIBUNG

CAMPAIGN_ID

Hier wird die Kampagnen ID hinterlegt.

TRIGGER_ID

Hier wird die Trigger ID hinterlegt.


TOKEN

Hier wird die Bestellnummer / Order ID hinterlegt.

TURNOVER

Hier wird der Netto- Bestellwert hinterlegt. Hieraus resultiert ggf. die Provision für den Publisher.

DESC

Hier kann eine Beschreibung hinterlegt werden.

CURRENCY

Hier wird die aktuelle Währung hinterlegt. 


Dies findet bspw. dann Anwendung, wenn ein Shop in der Schweiz betrieben wird, aber seine Waren in € verkauft. Wird das Feld leer gelassen wird die Währungseinstellung des Partnerprogramms übernommen.

STORAGEKEY

Hier wird der Localstorage Key hinterlegt in dem sich die EMID befindet.

TRACKINGDOMAIN

Hier wird die Domain der Partnerplattform hinterlegt.

EMID

Wird mit dem Wert des Parameters emid befüllt, welcher von easy.affiliate über den Clicklink an die Landingpage übergeben wird 

Ebasket Trackingcode

Einleitung

Dieser Trackingcode dient der Erfassung des Warenkorbes und muss  im <body>-Tag der Bestellabschlussseite des Shops eingebaut werden. Die Variablen der Funktion “eamTrackAddBasketItem()” müssen mit den entsprechenden Werten befüllt werden. 


JavaScript-Code

<script src="https://SUB-DOMAIN/trck/ebasket/ebasket.js"></script>

<script language="javascript">

    /* muss für jeden Artikel im Warenkorb erstellt werden */

        eamTrckAddBasketItem(KAMPAGNEN-ID, TOKEN, TRIGGER_ID, article_number, amount, price, action_id, productname, category, { 'variable' : 'VARIABLENINHALT', 'variable_2' : 'VARIABLENINHALT_2' })

    /* Ende: muss für jeden Artikel im Warenkorb erstellt werden */

    eamTrckSubmitBasket();

</script>

Beispiel

JavaScript-Code

<script src="https://pvn.beispiel.de/trck/ebasket/ebasket.js"></script>

<script language="javascript">

    eamTrckAddBasketItem('1', ‘12345’, ‘1', ‘002973000902’, '1’, '335.29', '', 'Samsung Fernseher', 'Unterhaltungselektronik', { 'vc' : 'Gutscheincode12345',  'Farbe' : 'Hellgrau'});

    eamTrckAddBasketItem('1', ‘12345', '1', '000657001803', '1’, '25.13', '', 'TV-WANDHALTER', 'Wohnzimmer', { 'vc' : 'Gutscheincode12345', 'Farbe' : 'Schwarz', 'Unterkategorie' : 'Tv Halterung'});

    eamTrckSubmitBasket();

</script>


Variablenbeschreibung

Die Funktion wird mit Parametern, entsprechend der Tabelle befüllt:

VARIABLE

BESCHREIBUNG

CAMPAIGN_ID

Hier wird die Kampagnen ID hinterlegt.

TOKEN

Hier wird die Bestellnummer / Order ID hinterlegt.

TRIGGER_ID

Hier wird der Trigger ID hinterlegt.

ARTICLE_NUMBER

Wird mit der  jeweilige Produkt-ID befüllt

AMOUNT

Wird mit der Anzahl ersetzt, wie oft das entsprechende Produkt gekauft wurde

PRICE

Wird mit dem NETTO Preis des einzelnen Produkts befüllt 

ACTION_ID

Wird mit dem Wert des Parameters emid befüllt, welcher von easy.affiliate über den Clicklink an die Landingpage übergeben wird

PRODUCTNAME

Wird mit dem Produktnamen befüllt

CATEGORY

Hier wird die Produktkategorie hinterlegt.

Für die Aufnahme weiterer Parameter, müssen diese im Code, in die geschwungenen Klammern, kommasepariert aufgenommen werden. Der frei wählbare Name der Variable wird mit Apostrophe eingeleitet. Es folgt ein Doppelpunkt und anschließend der Wert der Variable als String, ebenfalls in Apostrophe.

Deklaration

{'variable' : 'VARIABLENINHALT'}

Beispiel

{'vc' : 'Gutschein12345', 'Brand' : 'Samsung'}