Einleitung

First-Party Tracking wird zunehmend 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? 

Hierfür werden zwei entscheidende Dinge benötigt. Einerseits die “EMID” welche über das Partnerprogramm an die Landingpage übergeben wird. Zusätzlich eine Sub-Domain, welche dazu genutzt wird, um die Trackingrelevanten Cookies auf First-Party-Ebene zu setzen und anschließend wieder auszulesen.

Technisch:

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. Die EMID wird über das Partnerprogramm an die Domain des Advertisers übergeben und dort über eine Script-Variante in ein Cookie gespeichert. Welche Script-Varianten es gibt, wird weiter unten im Detail erläutert.

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. Als Zielparamter wird an die Lanmigpage der Wert “?emid=” angehangen und über ein Script in ein Cookie des Nutzers gespeichert. Der User hält sich nun 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, ohne diesmal über ein Klicklinks genutzt zu haben, 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

Zum 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.

Das eatms.js Script sollte um eine Reibungslose Funktionalität der Website zu gewährleisten an das Ende des “<body>” - Elements und nicht Innerhalb des “<head>” Elements geschrieben werden.

Wenn der eatm-Container zusätzlich dazu genutzt werden soll, um Tags auszuspielen, ist es wichtig diesen mit den nötigen Zusatzinformationen anzureichen. Beispiele hierfür wären die Kampagnen-ID, das Produkt, die Landingpage oder auch die Bestätigung des Consent beim User.

Kampagne -> “&campaign_id=”

Produkt -> “&product=”

Seite -> “&page=”

Kategorie → “&category=”

Consent -> “&disable_tags=false”

Consent nicht gegeben -> “&disable_tags=true”

JavaScript-Code

JavaScript-Code

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

*der Platzhalter “SUB-DOMAIN” muss durch die korrekte Domain des Partnerprogramms ersetzt werden.

Beispiel eatm-Container mit Zusatzinformationen

JavaScript-Code

<script src="//SUB-DOMAIN/trck/etms/eatms.js?campaign_id=1&product=&page=landingpage&disable_tags=true"></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. Wird der eatms Container verbaut, muss dieser Tag nicht verbaut werden.

JavaScript-Code

JavaScript-Code

(function() {

    var getKey = 'emid';

    var storageKey = 'emid';

    var emidCookieExpirationDays = 60;

    var emidCookieKey = 'emid';

    var emidCookieDomain = 'Subdomain';

    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}

})();

Beschreibung

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

    /* please insert the EMID here which was previously transfered to you via GET-Parameter to the landingpage */

    /* if you are not able to store and insert the EMID here, please leave this line as it is */

    var emid = null;

    var attribution = '1';


   var trackingUrl = ‘https://'+trackingDomain+'/trck/etrack/?campaign_id='+campaign_id+'&trigger_id='+trigger_id+'&token='+token+'&descr='+descr+'&currency='+currency+'&turnover='+turnover+'&attribution='+attribution+'&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.

ATTRIBUTION

Hier wird die Attribution der Order hinterlegt. Der Wert wird im Dezimalformat und einem Punkt als Trennzeichen übergeben. (50% = 0.50)

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. 

Implementierung

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, EMID, 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', '5eeb0e0dabf7ad282b28c4a2', 'Samsung Fernseher', 'Unterhaltungselektronik', { 'vc' : 'Gutscheincode12345',  'Farbe' : 'Hellgrau'});

    eamTrckAddBasketItem('1', ‘12345', '1', '000657001803', '1’, 25.13, 5eeb0e0dabf7ad282b28c4a2, '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 

EMID

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.

Additional Parameter:

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'}

ATTRIBUTION

Wenn eine gesonderte Attribution benötigt wird, kann diese als Additional Parameter übergeben werden. Der Wert der Attribution wird im Dezimalformat und einem Punkt als Trennzeichen übergeben. (50% = 0.50)

 

Gutscheinimplementierung

Bei vielen Shops werden den Usern Gutscheine angeboten um Rabatte zu gewähren. Oftmals werden diese Gutscheine mit in die Berechnung von Vergütungen eingerechnet. Hierbei gilt es zwischen herkömmlichen Rabattgutscheinen und prozentualen Rabattgutscheinen zu unterscheiden. Zudem werden Gutscheine häufig an einen Mindestbestellwert geknüpft.

Damit ein sauberer Abzug des Gutscheins gesichert ist und auch bei der Stornierung oder Teilstornierung von Artikeln noch korrekte Werte abgezogen werden, wird folgende Implementierung nach Gutscheintyp empfohlen. Die Gutscheinwerte werden dann anschließend automatisch durch die Trackingroutinen angepasst.

Rabattgutscheine:

Für Rabattgutscheine wird ein zusätzliches Basketitem mit der Funktion eamTrckAddBasketItem(); hinzugefügt, in dem der abzuziehende Wert hinterlegt wird. Zusätzlich werden folgende additional Parameter benötigt:

discount_absolute: → Der tatsächlich abgezogene Wert in Euro.

minimum_turnover: → Der Mindestbestellwert, damit der Gutschein Gültigkeit behält. Dieser bezieht sich auf die Summe des gesamten Warenkorbs.

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', '5eeb0e0dabf7ad282b28c4a2', 'Samsung Fernseher', 'Unterhaltungselektronik', {'Farbe' : 'Hellgrau'});

    eamTrckAddBasketItem('1', ‘12345’, ‘1', 'Vouchercode', '1’, '-10.00', '5eeb0e0dabf7ad282b28c4a2', 'Voucher', 'Winteraktion',{ 'discount_absolute' : 10, 'minimum_turnover' : 15});

    eamTrckSubmitBasket();

</script>

Prozentuale Rabattgutscheine:

Für prozentuale Rabattgutscheine muss kein zusätzliches Item den Warenkorb hinzugefügt werden. Stattdessen wird an jedem Basketitem folgende Parameter hinterlegt:

discount_absolute: → Der tatsächlich abgezogene Wert in Euro.

discount_percentage: → Der abzuziehende Prozentwert.

minimum_turnover:→ Der Mindestbestellwert, damit der Gutschein Gültigkeit behält. Dieser bezieht sich auf die Summe des gesamten Warenkorbs.

Es ist hierbei entscheidend, dass alle Parameter pro Basketitem befüllt werden, da einerseits somit eine Kontrollinstanz vorhanden ist, andererseits können so automatische Anpassungen am Basketitem vorgenommen werden, wenn bspw. eine Stornierung oder Teilstornierung durchgeführt wird und der Gutschein seine Gültigkeit aufgrund des Mindestbestellwerts verliert. Diese Tatsache ist besonders bei Loyalty- und Cashbackportalen sehr wichtig zu beachten.

Beispiel:

JavaScript-Code

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

<script language="javascript">

    eamTrckAddBasketItem('1', ‘12345’, ‘1', ‘002973000902’, '1’, '1000.00', '5eeb0e0dabf7ad282b28c4a2', 'Samsung Fernseher', 'Unterhaltungselektronik', { 'discount_absolute' : 100,  'discount_percentage' : 10, 'minimum_turnover' : 15});

    eamTrckAddBasketItem('1', ‘12345’, ‘1', '000657001803', '1’, '29.99', '5eeb0e0dabf7ad282b28c4a2', 'TV-WANDHALTER', 'Wohnzimmer',{ 'discount_absolute' : 2.999,  'discount_percentage' : 10, 'minimum_turnover' : 15});

    eamTrckSubmitBasket();

</script>