Skip to main content

First-Party-Tracking Konzept

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

Zur Identifizierung und Wiedererkennung des Nutzers und 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 “

” - Elements und nicht Innerhalb des “” 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 -> “&pagetype=”

  • Kategorie → “&category=”

  • Nachladen von Tags verhindern -> “&disable_tags=true”

JavasScript-Code

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

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

Beispiel Ein verbauter eatm-Container mit Zusatzinformationen:

<script src="//SUB-DOMAIN/trck/etms/eatms.js?campaign_id=1&product=product123&pagetype=landingpage&disable_tags=true"></script>

Der eatms-Container kann auf verschiedene Weisen den Consent erhalten, um sicherzustellen, dass keine Cookies oder Tags durch den Container gealden werden, ohne dass der Benutzer seine Zustimmung gegeben hat. Es gibt grundsätzlich zwei verschiedene Möglichkeiten, dies umzusetzen.

GDPR und GDPR_CONSENT Parameter

Der eatms-Container kann die Standards “GDPR” und “GDPR_CONSENT” interpretieren, die als Signale für den Consent dienen. Hierfür muss die entsprechende Vendor_id in den Systemeinstellungen des Programms hinterlegt werden. Falls keine spezifische Vendor_id hinterlegt wurde, greift der Container auf die Vendor_id der easy Marketing GmbH zurück. Auf diese Weise reagiert der Container entsprechend auf das vorliegende Consent-Signal und handelt entsprechend der hinterlegten Einstellungen.

Beispiel:

Es ist möglich, den eatms-Container erst dann aufzurufen, wenn der Benutzer seine Einwilligung dazu gegeben hat. In diesem Fall wird der Container nur geladen, wenn der Benutzer beispielsweise seine Zustimmung zum Marketing gegeben hat.

Wie kann ich verhindern, dass Tags des Tag-Managers nachgeladen werden, wenn beispielsweise kein Consent dafür vorliegt?

DISABLE_TAGS PARAMETER

Der eatms-Container kann die Variable "disable_tags=true" verarbeiten. Wenn diese Variable übergeben wird, werden keine Tags ausgeführt. Falls entsprechender Consent vorliegt, kann die Variable entweder mit "disable_tags=false" übergeben oder komplett entfernt werden, um das Ausführen von Tags zu ermöglichen.

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

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

(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 };

})();

Wichtiger Hinweis zur emid:

Der Kunde ist dafür verantwortlich, die emid zu speichern (z.B. über LocalStorage oder einen anderen Mechanismus). Die emid wird als GET-Parameter (z.B. ?emid=12345) an die Landingpage übermittelt. Der Tracking-Code greift auf diese gespeicherte emid zu und verwendet sie auf der Bestellabschlussseite. Falls die emid nicht gespeichert wurde, kann sie nicht im Tracking verwendet werden und die Transaktion wird nicht korrekt erfasst.

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

-Tag der Bestellabschlussseite des Shops eingebaut werden. Die Variablen der Funktion “eamTrackAddBasketItem()” müssen mit den entsprechenden Werten befüllt werden.

Implementierung

<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

<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', '000657001803', '1’, 25.13, 5eeb0e0dabf7ad282b28c4a2, 'TV-WANDHALTER’, `Wohnzimmer`, {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.

VARIABLE BESCHREIBUNG
Deklaration {'key' : 'VALUE'}
Beispiel {'Farbe' : 'blau', 'Brand' : 'Samsung'}

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.

Rabattgutscheine:

Für Rabattgutscheine wird ein zusätzliches Basketitem mit der Funktion eamTrckAddBasketItem(); hinzugefügt. Der abzuziehende Betrag wird als negativer turnover hinterlegt.

Beispiel:


<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',{“vc”: “VOUCHERCODE”});

    eamTrckSubmitBasket();

</script>