easy.Affiliate / Private Network
In dieser Dokumentation erklären wir, wie unser Private Network funktioniert und welche Schritte benötigt werden um das System einzurichten.
- Übersicht
- Technische Implementierung
- Technische Implementierung: Schritt für Schritt
- Attribution & Tracking-Logik
- Trackingeinrichtung einer Kampagne in easy.AFFILIATE mit Basket-Tracking
- Troubleshooting & Tracking-Test
- Kurzdokumentation zur Einrichtung einer Kampagne in easy.AFFILIATE ohne Basket-Tracking - Campaign_ID
Übersicht
Was ist ein Private Network im Affiliate-Marketing
Im Online-Marketing bezeichnet ein Private Network (oft auch Private Affiliate Network oder Inhouse-Programm genannt) eine exklusive Plattform, über die ein Advertiser (Werbetreibender) seine Partnerprogramme direkt verwaltet, anstatt auf öffentliche Netzwerke zurückzugreifen.
Kernmerkmale
- Exklusivität: Nur ausgewählte Publisher erhalten Zugang. Die Hürden für die Aufnahme sind oft höher als bei öffentlichen Netzwerken.
- Direkte Kommunikation: Es gibt keine Zwischeninstanz. Advertiser und Affiliates stehen in direktem Kontakt, was oft zu besseren individuellen Konditionen führt.
- Eigene Technologie: Unternehmen nutzen entweder eine Eigenentwicklung oder eine "SaaS-White-Label-Lösung" (easy.Affiliate), um Tracking und Auszahlungen zu steuern.
Warum nutzen Unternehmen Private Networks?
| Vorteil | Beschreibung |
|---|---|
| Kosteneinsparung | Es fallen keine Netzwerk-Gebühren oder prozentuale Provisionen an den Drittanbieter an. |
| Datenkontrolle | Der Advertiser behält die volle Hoheit über alle Klick- und Conversion-Daten. |
| Branding | Das Interface kann komplett im Corporate Design des Unternehmens gestaltet werden. |
| Betrugsprävention | Da jeder Partner manuell geprüft wird, sinkt das Risiko für Fake-Traffic oder Cookie-Spamming. |
| First-Party-Tracking | Durch das First-Party-Tracking ist eine reibungslose Trackingintegration gewährleistet. |
Vorteile für Affiliates
Vorteile:
- Höhere Provisionen: Da der Advertiser die Netzwerkgebühr spart, wird dieser Vorteil oft an den Publisher weitergegeben.
- Persönliche Betreuung: Oft gibt es dedizierte Affiliate-Manager für eine kleine Gruppe von Partnern.
- Exklusive Deals: Sonderaktionen oder höhere Warenkorbrabatte, die öffentlich nicht verfügbar sind.
Fazit: Private Networks sind das "High-End"-Segment im Affiliate-Marketing. Sie lohnen sich besonders für große Brands mit etablierten Partnerschaften und für Profi-Affiliates, die direkt an der Quelle sitzen wollen.
Warum easy.Affiliate als Private Network Lösung
Die Entscheidung für ein Private Network ist immer auch eine Entscheidung für mehr Unabhängigkeit. Mit easy.Affiliate setzen wir genau dort an, wo herkömmliche öffentliche Netzwerke an ihre Grenzen stoßen.
Unsere Kern-Vorteile auf einen Blick
1. 🇪🇺 100% EU-Fokus & DSGVO-Konformität
Im Gegensatz zu US-amerikanischen Anbietern ist easy.Affiliate tief in der europäischen Rechtslandschaft verwurzelt.
- Datenspeicherung: Alle Daten liegen auf Servern innerhalb der EU.
- Compliance: Unsere Prozesse sind von Grund auf so konzipiert, dass sie die strengen Anforderungen der DSGVO erfüllen. Das gibt dir und deinen Partnern Rechtssicherheit.
2. 🛡️ Volle Datenhoheit (Eigene Kontrolle)
In einem öffentlichen Netzwerk bist du nur ein Teilnehmer unter vielen. Mit easy.Affiliate gehört die Plattform dir.
- Kein Datenteilung: Deine wertvollen Customer-Insights und Affiliate-Listen werden nicht mit Wettbewerbern im gleichen Netzwerk geteilt.
- Direct Ownership: Du behältst die volle Kontrolle darüber, wer Zugriff auf welche Daten hat.
3. 🎯 First-Party-Tracking (Zukunftssicher)
Das klassische Tracking über Third-Party-Cookies stirbt aus (ITP, AdBlocker etc.). easy.Affiliate nutzt modernstes First-Party-Tracking.
- Höhere Genauigkeit: Sales werden dort erfasst, wo sie entstehen – direkt auf deiner Domain.
- Unabhängigkeit: Weniger Signalverlust durch Browser-Einschränkungen bedeutet eine fairere Vergütung für deine Affiliates und exaktere Daten für dein Marketing.
4. 🚀 Immer am Zahn der Zeit
Der Affiliate-Markt verändert sich rasant. Wir verstehen uns nicht nur als Software-Anbieter, sondern als Innovationspartner.
- Kontinuierliche Updates: Wir reagieren sofort auf technologische Änderungen im E-Commerce-Ökosystem.
- Feature-Entwicklung: Neue Funktionen werden nah am Feedback unserer Nutzer entwickelt, um sicherzustellen, dass dein Private Network technisch immer die Nase vorn hat.
Technische Implementierung
Technische Implementierung: Schritt für Schritt
Diese Seite dient als Roadmap für die Einrichtung deines Private Networks mit easy.Affiliate. Sämtliche Trackingrelevanten Dokus sind in unserem Dokusystem über die Suche zu erreichen.
1. Grundkonfiguration: Kampagnen anlegen
Eine Kampagne ist das logische Gefäß für dein Partnerprogramm. In der Regel entspricht eine Kampagne einem Webshop oder einer spezifischen Ländereinheit.
- Legen Sie den Namen, die Ziel-URL und die grundlegenden Laufzeiten fest.
- Hier definierst du, welcher Shop für die Zuordnung der Sales verantwortlich ist.
2. Werbemittel (Creatives) bereitstellen
Ohne Material können deine Partner nicht arbeiten. Hinterlege innerhalb der Kampagne:
3. Provisionslogik: Trigger definieren
Hier legst du fest, wie viel Geld ein Publisher verdient. Ein Trigger erkennt das Attribut eines Sales und weist die passende Provision zu.
- Beispiel Neukunde vs. Bestandskunde: Unterschiedliche Prozentsätze basierend auf dem Kundenstatus.
- Aktionsbasierte Trigger: Höhere Provisionen für bestimmte Produktkategorien.
4. Onboarding: Publisher-Management
Ein Netzwerk lebt von seinen Partnern.
- Einladung: Lade Publisher direkt über das System ein oder nutze die öffentliche Registrierungsseite.
- Verbindung: Publisher müssen mit der jeweiligen Kampagne verbunden (freigeschaltet) werden, damit sie Zugriff auf Links und Tracking haben.
5. Shop-Integration: Tracking-Code verbauen
Damit easy.Affiliate weiß, wann ein Kauf stattgefunden hat, muss der Tracking-Code auf der "Danke-Seite" (Order Confirmation Page) deines Shops integriert werden.
- Er erfasst die Order-ID, den Warenkorbwert und ggf. die Trigger-Informationen.
- First-Party-Vorteil: Durch die Integration auf deiner Domain ist das Tracking extrem präzise.
6. Der eatms-Container (Tag-Management)
Zusätzlich zum Tracking-Code integrierst du den eatms-Container im Shop.
- Funktion: Dieser fungiert als Container für Third-Party-Trackingcodes.
- Vorteil: Du kannst Skripte von Drittanbietern oder Partnern bequem über das easy.Affiliate Backend steuern, ohne den Quellcode deines Shops erneut bearbeiten zu müssen.
Checkliste für den Go-Live
- Kampagne ist aktiv geschaltet?
- Mindestens ein Textlink/Banner ist hinterlegt?
- Provisions-Trigger sind getestet (greift der Neukunden-Bonus)?
- Testbestellung durchgeführt: Erscheint der Sale im Dashboard?
- eatms-Container feuert korrekt?
Attribution & Tracking-Logik
In diesem Kapitel erfährst du, wie easy.Affiliate Klicks und Sales einander zuordnet. Dank unseres First-Party-ID-Trackings sind wir unabhängig von unsicheren Third-Party-Cookies und bieten maximale Datengenauigkeit.
1. Das Herzstück: Die EMID
Unser Tracking basiert auf einer eindeutigen Kennung, der EMID.
- Funktionsweise: Klickt ein User auf ein Werbemittel eines Publishers, wird er zum Zielshop weitergeleitet. Dabei wird die EMID automatisch als URL-Parameter an die Ziel-URL angehängt.
- Übergabe: Diese ID muss vom Shop-System aufgenommen und beim Abschluss des Kaufs an den Conversioncode übergeben werden.
2. Standard-Attribution: Last-Click
Standardmäßig arbeitet easy.Affiliate nach dem Last-Click-Prinzip:
- Wird eine EMID beim Aufruf der Seite mitgeliefert, wird diese für die Attribution des Sales priorisiert.
- Der Publisher, dessen EMID zuletzt "geliefert" wurde, erhält die Provision.
3. Erweitertes Tracking via eatms-Container
Ist der eatms-Container in deinem Shop verbaut, wird das Tracking noch robuster. Das System setzt dann automatisch zwei wichtige First-Party-Cookies:
Der Vorteil des Cookie-Backups:
Sollte ein Nutzer den Shop später ohne direkten Affiliate-Link erneut besuchen (z. B. durch Direkteinstieg am nächsten Tag), greift unser System auf das EMID-Cookie zurück. So stellen wir sicher, dass Sales auch dann korrekt zugeordnet werden, wenn im Moment der Conversion keine EMID mehr in der URL steht.
4. Individuelle Attributions-Modelle
Dank der EMID-Logik hast du als Advertiser theoretisch die volle Freiheit:
- Du könntest technisch gesehen auch eigene Attributions-Logiken umsetzen (z. B. First-Click), indem du die erste EMID eines Nutzers dauerhaft speicherst und Folgende ignorierst.
- Da unser System die EMID transparent übergibt, behältst du die volle Kontrolle über deine Datenstrategie.
🆘 Sonderwünsche & Support
Du planst ein spezielles Attributions-Modell (z. B. Customer Journey Multi-Touch) oder hast Fragen zu komplexen Setups?
Wende dich bitte direkt an unsere Experten unter: 📧 support@easy-m.de
Trackingeinrichtung einer Kampagne in easy.AFFILIATE mit Basket-Tracking
Um das Tracking in easy.AFFILIATE zu gewährleisten, sind lediglich zwei Einbauschritte notwendig.
Das System generiert beim Redirect von der Publisher-Seite auf Ihren Shop eine ID, mit der der Sale später erfasst werden kann. Diese ID (nachfolgende EMID genannt) wird shopseitig von einem Code-Snippet aufgenommen und im Local Storage sowie in einem Cookie gespeichert. Bei der Conversion-Erfassung wird diese EMID über ein anderes Code-Snippet zurück an das Trackingsystem gespielt.
1. Code-Snippet (einzubauen auf jede Seite)
Dieser Code nimmt die EMID auf, die im Redirect erzeugt wird, und schreibt sie in den LocalStorage sowie in einen Cookie (jeweils mit dem Key emid).
Einbauort: Auf sämtlichen Seiten des Shops (am einfachsten im Footer-Template).
(function() {
// The expiration time of the cookie (normally 60 days)
// Die Laufzeit des Cookies (im Regelfall 60 Tage)
var emidCookieExpirationDays = 60;
// Please do not change below here!
// Ab hier bitte nicht verändern!
var getKey = 'emid';
var getValue = getParameterByName(getKey);
var storageKey = 'emid';
var emidCookieKey = 'emid';
var emidCookieDomain = window.location.hostname;
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}
})();
2. Basket-Conversion-Code (einzubauen auf die Checkout-Successful-Seite)
Dieser Code erfasst die Bestellung und übergibt sie an das Trackingsystem.
Einbauort: Ausschließlich auf der Bestellbestätigungsseite.
(function () {
// please insert the campaign_id here - you received it by your account manager
var campaign_id = 'CAMPAIGN_ID';
// please insert the unique ordernumber of the purchase here
var token = 'ORDERTOKEN';
// insert EVERY purchased item into the basket variable "basket"
var basket = [
{
article_number: "ARTICLE_NUMBER_1",
amount: "ARTICLE_AMOUNT_1",
price: "SINGLE_ARTICLE_TURNOVER_1",
productname: "ARTICLE_NAME_1",
category: "ARTICLE_CATEGORY_1"
}, {
article_number: "ARTICLE_NUMBER_2",
amount: "ARTICLE_AMOUNT_2",
price: "SINGLE_ARTICLE_TURNOVER_2",
productname: "ARTICLE_NAME_2",
category: "ARTICLE_CATEGORY_2"
}, {
article_number: "ARTICLE_NUMBER_N",
amount: "ARTICLE_AMOUNT_N",
price: "SINGLE_ARTICLE_TURNOVER_N",
productname: "ARTICLE_NAME_N",
category: "ARTICLE_CATEGORY_N"
}
];
// Please insert the URL / Domain des Systems
var trackingDomain = 'DOMAIN-DES-SYSTEMS';
// Please do not change below here!
var storageKey = 'emid';
var trigger_id = '1';
var basketUrl = 'https://' + trackingDomain + '/trck/ebasket/ebasket.js';
emid = window.localStorage[storageKey];
if (typeof emid !== 'undefined') {
var req = new XMLHttpRequest;
req.withCredentials = true;
req.open("GET", basketUrl),
req.send(),
req.onreadystatechange = function () {
(req.readyState === 4) ? function () {
eval(req.response);
basket.forEach(function(elem) {
eamTrckAddBasketItem(
campaign_id,token,trigger_id,encodeURIComponent(elem.article_number),elem.amount,elem.price,emid,encodeURIComponent(elem.productname),encodeURIComponent(elem.category),{}
);
});
eamTrckSubmitBasket();
}() : null
};
}
})();
Wichtige Hinweise zum Conversion-Code:
- Platzhalter ersetzen: Ersetzen Sie
CAMPAIGN_ID,ORDERTOKENundDOMAIN-DES-SYSTEMSdurch Ihre spezifischen Daten. - Dynamische Inhalte: Die Variable
basketmuss dynamisch mit allen Artikeln der Bestellung befüllt werden. - Mengensteuerung: Jedes Produkt sollte nur einmal im Array erscheinen; die Anzahl wird über
ARTICLE_AMOUNTgesteuert. - Netto-Werte: Der Umsatz (
price) muss als Netto-Einzelpreis (ohne Steuern und Versandkosten) übergeben werden.
Erläuterung der Platzhalter:
| Platzhalter | Beschreibung |
|---|---|
| CAMPAIGN_ID | Fester Wert von Ihrem Account-Manager. |
| ORDERTOKEN | Die dynamische Bestellnummer aus Ihrem Shop. |
| DOMAIN-DES-SYSTEMS | Die Domain Ihres easy.AFFILIATE-Systems. |
| ARTICLE_NUMBER_N | Artikelnummer des jeweiligen Produkts. |
| ARTICLE_AMOUNT_N | Anzahl des jeweiligen Produkts im Warenkorb. |
| SINGLE_ARTICLE_TURNOVER_N | Netto-Umsatz des Einzelprodukts. |
| ARTICLE_NAME_N | Name des Produkts. |
| ARTICLE_CATEGORY_N | Kategorie des Produkts. |
Troubleshooting & Tracking-Test
Troubleshooting & Tracking-Test
Bevor du mit deinem Private Network live gehst, ist ein gründlicher End-to-End-Test entscheidend. Nutze diesen Guide, um sicherzustellen, dass die Daten lückenlos von easy.Affiliate an deinen Shop und zurück fließen.
Der Test-Ablauf (Step-by-Step)
1. Link-Check & Zielseite
Klicke in deinem easy.Affiliate Dashboard auf ein hinterlegtes Werbemittel (Textlink oder Banner).
- Prüfung: Landest du auf der korrekten Zielseite (URL)?
- Prüfung: Ist der Parameter
?emid=XXXXXdeutlich in der Adresszeile deines Browsers zu sehen?
2. Cookie-Check (via Browser-Konsole)
Falls du den eatms-container nutzt, öffne nach dem Klick die Entwickler-Tools deines Browsers (F12 -> Tab "Application" oder "Speicher" -> Cookies).
- Prüfung: Wurde ein Cookie namens
EMIDmit dem korrekten Wert erstellt? - Prüfung: Wurde ein Cookie namens
TRS(Session) angelegt?
3. Der Testkauf (Conversion-Erfassung)
Führe nun eine vollständige Bestellung im Shop durch. Im Moment der "Danke-Seite" (Success Page) wird es ernst:
A. Prüfung mit EMID in der URL
- Szenario: Du hast die EMID gespeichert.
- Prüfung: Wird der Conversioncode im Quelltext der Seite korrekt aufgerufen? Ist die EMID im Code-Snippet enthalten?
B. Prüfung via Cookie-Fallback
- Szenario: Du hast ein EMID Cookie.
- Prüfung: Liest der Conversioncode die EMID korrekt aus dem Cookie aus, wenn die EMID nicht schon angehangen worden ist?
4. Datenvalidierung im easy.Affiliate Backend
Nachdem die Bestellung abgeschlossen ist, prüfe im Dashboard unter "Transaktionen":
- Zuordnung: Ist die Transaktion dem korrekten Publisher zugeordnet worden?
- Ordertoken: Stimmt die übermittelte Bestellnummer (Order-ID)?
- Turnover: Entspricht der Umsatz (Netto-Warenwert) dem tatsächlichen Kaufwert?
- Provision: Hat der Publisher basierend auf dem eingestellten Trigger (z. B. Rate für Neukunde) die exakte Provision erhalten?
Häufige Fehlerquellen (Quick Fixes)
| Problem | Mögliche Ursache |
|---|---|
| Keine EMID in der URL | Werbemittel-URL in easy.Affiliate ist falsch konfiguriert. |
| Cookies werden nicht gesetzt | eatms-Container ist nicht auf allen Seiten (Global Header) verbaut. |
| Keine Transaktion im Backend | Conversioncode wird durch AdBlocker blockiert oder feuert nicht auf der Danke-Seite. |
| Falsche Provision | Trigger-Logik (z.B. Brutto vs. Netto) ist in den Kampagneneinstellungen nicht korrekt hinterlegt. |
Profi-Tipp: Browser-Cache leeren
Leere vor jedem neuen Testlauf deine Cookies und den Cache oder nutze den Inkognito-Modus, um sicherzustellen, dass du keine "alten" Sessions testest.
Kurzdokumentation zur Einrichtung einer Kampagne in easy.AFFILIATE ohne Basket-Tracking - Campaign_ID
Um das Tracking in easy.AFFILIATE zu gewährleisten, sind lediglich zwei Einbauschritte notwendig.
- ID-Aufnahme: Das System generiert beim Redirect von der Publisher-Seite eine ID, die shopseitig aufgenommen und im Local Storage sowie als Cookie gespeichert wird.
- Conversion-Erfassung: Bei Abschluss einer Bestellung wird diese ID zusammen mit den Bestelldaten an das Trackingsystem zurückgespielt.
1. Code-Snippet (Einzubauen auf jeder Seite)
Dieser Code nimmt die ID (emid) aus der URL auf und speichert sie dauerhaft im Browser des Nutzers.
Platzierung: Bauen Sie diesen Code auf sämtlichen Seiten Ihres Shops ein (am einfachsten im globalen Footer-Template).
(function() {
// Die Laufzeit des Cookies (im Regelfall 30 Tage)
var emidCookieExpirationDays = 30;
// Ab hier bitte nicht verändern!
var getKey = 'emid';
var getValue = getParameterByName(getKey);
var storageKey = 'emid';
var emidCookieKey = 'emid';
var emidCookieDomain = window.location.hostname;
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}
})();
2. Conversion-Code (Einzubauen auf der Checkout-Successful-Seite)
Dieser Code übergibt die Bestelldaten an das Trackingsystem. Er muss auf der Bestellbestätigungsseite (Danke-Seite) integriert werden.
Wichtig: Die Platzhalter im Script müssen dynamisch durch die echten Werte der Bestellung ersetzt werden.
(function() {
// Bitte fügen Sie Ihre Campaign_id hier ein (vom Account Manager erhalten)
var campaign_id = 'CAMPAIGN_ID';
// Bitte fügen Sie die eindeutige Bestellnummer hier ein
var token = 'ORDERTOKEN';
// Bitte fügen Sie den Netto-Warenkorbwert hier ein (Punkt als Dezimaltrenner)
var turnover = 'TURNOVER';
// Bitte fügen Sie die trigger_id ein
var trigger_id = 'TRIGGER_ID';
// ISO 4217 Währungscode (Standard: EUR)
var currency = 'EUR';
// Optionale Beschreibung zur Bestellung
var descr ='DESCRIPTION';
// Ab hier bitte nicht verändern!
var storageKey = 'emid';
var trackingDomain = 'pvn.ihreDomain.de';
var trackingUrl = 'https://'+trackingDomain+'/trck/etrack/?campaign_id='+campaign_id+'&trigger_id='+trigger_id+'&token='+token+'&descr='+descr+'¤cy='+currency+'&turnover='+turnover+'&t=js';
var 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 };
})();
Platzhalter im Conversion-Code
| Platzhalter | Beschreibung | Typ |
|---|---|---|
CAMPAIGN_ID |
Fester Wert von Ihrem Account-Manager. | Statisch |
ORDERTOKEN |
Die eindeutige Bestellnummer aus Ihrem Shop. | Dynamisch |
TURNOVER |
Netto-Umsatz (ohne Steuern & Versandkosten). | Dynamisch |
TRIGGER_ID |
Zur Unterscheidung der Conversion-Art (vom Account-Manager). | Statisch/Dynamisch |
DESCRIPTION |
Optionale Zusatzinfos zur Bestellung. | Optional |
Hinweis: Der
turnoverversteht sich als Netto-Wert. Bitte stellen Sie sicher, dass dynamische Werte korrekt in das Script ausgegeben werden.