Implementierung
Einführung
Client-seitiges Baskettracking
Das client-seitige Baskettracking ermöglicht die Übergabe von Warenkorbdaten direkt aus dem Shop-Frontend an das Tracking-System von easy.MARKETING. Dabei werden die einzelnen Artikel per JavaScript an das Skript übergeben und anschließend gesammelt übertragen.
Funktionsweise (Client)
- Skript-Einbindung: Beim Aufruf der Bestellabschlussseite wird das Tracking-Skript eingebunden.
- Artikel-Übergabe: Für jedes Produkt im Warenkorb wird
eamTrckAddBasketItem(...)aufgerufen. - Abschluss: Mit
eamTrckSubmitBasket()werden alle gesammelten Artikel an das Tracking-System übermittelt. - Transaktionserstellung: Jeder Basketaufruf erzeugt automatisch auch eine Transaktion im System.
- Zu jedem Basket gehört die entsprechende Transaktion
- Attribuierung: Die EMID wird beim Klick auf ein Werbemittel erzeugt und muss unbedingt mit übergeben werden, um die Customer Journey korrekt zu attribuieren.
Verarbeitung von Zusatzdaten (Additional Parameters)
Zusätzlich zu den Standardparametern können pro Artikel optionale Informationen in einem Objekt (Key-Value-Pairs) übergeben werden. Hierbei gilt folgende Logik für die Speicherung:
- Artikelebene: Die Parameter werden individuell für jeden einzelnen Artikel gespeichert.
- Transaktionsebene: Das System übernimmt die Zusatzdaten des zuletzt aufgerufenen Artikels (
eamTrckAddBasketItem) und speichert diese zusätzlich auf Transaktionsebene ab.
Wichtiger Hinweis: Wenn bestimmte Informationen (z. B. Versandart oder Gutscheincode) für die Auswertung auf Transaktionsebene relevant sind, müssen diese zwingend bei jedem Artikelaufruf identisch mitgegeben werden. Nur so ist sichergestellt, dass sie unabhängig von der Artikelreihenfolge korrekt auf Transaktionsebene erfasst werden.
Script einbinden
Das Skript für die Einbindung der Bibliothek, aus denen die Functions für die Erfassung des Warenkorbs geladen werden, muss auf der Bestellabschlussseite im <body> eingebunden werden:
<script src="https://SUB-DOMAIN/trck/ebasket/ebasket.js"></script>
Hinweis:
SUB-DOMAINdurch die eigene Subdomain ersetzen.
Basket-Items übergeben & absenden
Für jeden Artikel im Warenkorb wird eamTrckAddBasketItem() aufgerufen.
Am Ende wird einmal eamTrckSubmitBasket() ausgeführt.
<script>
/* Artikel ins Tracking übergeben */
eamTrckAddBasketItem(
'CAMPAIGN_ID',
'TOKEN',
'TRIGGER_ID',
'ARTICLE_NUMBER',
'AMOUNT',
'PRICE',
'EMID',
'PRODUCTNAME',
'CATEGORY',
{
'variable' : 'VARIABLENINHALT',
'variable_2' : 'VARIABLENINHALT_2'
}
);
/* Gesamten Warenkorb absenden */
eamTrckSubmitBasket();
</script>
Vollständiges Beispiel (2 Artikel)
<script src="https://pvn.beispiel.de/trck/ebasket/ebasket.js"></script>
<script>
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>
Vollständiges Beispiel mit Abzug von Gutschein (3 Artikel)
<script src="https://pvn.beispiel.de/trck/ebasket/ebasket.js"></script>
<script>
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' }
);
eamTrckAddBasketItem(
'1',
'12345',
'1',
'000657001809',
'1',
'-10.00',
'5eeb0e0dabf7ad282b28c4a2',
'Gutscheincode12345',
'Voucher',
{ 'vc': 'Gutscheincode12345' }
);
eamTrckSubmitBasket();
</script>
Variablenbeschreibung
| Parameter | Beschreibung |
|---|---|
| CAMPAIGN_ID | ID der Kampagne, z. B. '1'. |
| TOKEN | Eindeutige Bestellnummer / Order ID. |
| TRIGGER_ID | ID des Triggers, z. B. '1'. |
| ARTICLE_NUMBER | Artikelnummer / SKU. |
| AMOUNT | Menge als String, z. B. '1'. |
| PRICE | Netto-Preis pro Stück, mit Punkt als Dezimaltrennzeichen, z. B. '25.13'. |
| EMID | Eindeutige Tracking-ID aus dem Werbemittelklick. |
| PRODUCTNAME | Produktname als String. |
| CATEGORY | Produktkategorie, z. B. 'Unterhaltungselektronik'. |
| Additional | Optionale Parameter als Key-Value-Paare, z. B. { 'vc': 'Gutschein12345' }. |
Additional Parameter
Weitere Parameter können flexibel als Key-Value-Strings übergeben werden:
{ 'vc': 'Gutschein12345', 'Brand': 'Samsung', 'Farbe': 'Hellgrau' }
Hinweise zur Platzierung & Validierung
- Seite: Bestellabschlussseite / Thank-You-Page.
- Position: Innerhalb des
<body>. - Reihenfolge: Erst alle
eamTrckAddBasketItem(...)Aufrufe, dann einmaleamTrckSubmitBasket(). - Preise: Netto, mit Punkt als Dezimaltrennzeichen.
- EMID: Muss zwingend übergeben werden, sonst keine Attribution.
- Mehrere Artikel: Pro Artikel ein eigener
eamTrckAddBasketItem()Aufruf. - Debug-Tipp: In der Browser-Konsole prüfen, ob Fehler beim Laden des Skripts oder beim Funktionsaufruf auftreten.
Umgang mit Additional Parameters auf Transaktionsebene
Diese Dokumentation erläutert die Logik der Datenverarbeitung von Zusatzparametern (Additional Parameters) und deren Auswirkungen auf das Tracking und externe Systeme (z. B. Tagmanager).
Verarbeitungslogik
Obwohl die Funktion eamTrckAddBasketItem() Parameter für das einzelne Produkt entgegennimmt, werden diese Werte in unserem System auch an den Gesamtdatensatz der Transaktion (Order-Ebene) geschrieben.
Da eine Transaktion aus mehreren Artikeln bestehen kann, gilt bei der Verarbeitung folgende Regel:
Der letzte Wert gewinnt. Wenn unterschiedliche Artikel denselben Parameter-Key (z. B.
vcodershipping_type) mit unterschiedlichen Werten übergeben, wird der Wert des letzteneamTrckAddBasketItem()-Aufrufs als finaler Wert für die gesamte Transaktion gespeichert.
Wichtige Richtlinie für die Implementierung
Damit Daten auf Transaktionsebene (z. B. für die Nutzung als Trigger-Bedingung im Tag Manager) zuverlässig zur Verfügung stehen, muss folgendes beachtet werden:
Parameter, die für die gesamte Bestellung gelten, müssen in jedem Basket-Item mit identischem Wert übergeben werden.
Warum ist das wichtig?
- Tag Manager Bedingungen: Viele Tag Manager nutzen Variablen der Transaktionsebene, um zu entscheiden, ob ein Pixel gefeuert werden soll. Ist der Wert inkonsistent oder fehlt er im letzten Artikel, schlägt die Bedingung fehl.
- Datenkonsistenz: In Exporten und Reports wird der Parameter der Transaktion zugeordnet. Unterschiedliche Werte innerhalb einer Bestellung führen hier zu Zufallsergebnissen (basierend auf der Sortierung der Artikel im Code).
Beispiel: Richtige vs. Falsche Implementierung
❌ Falsch: Inkonsistente Werte
Hier würde der Wert für customer_group auf Transaktionsebene mit "Bestandskunde" überschrieben werden, obwohl der erste Artikel "Neukunde" meldet.
// 1. Artikel
eamTrckAddBasketItem(..., { 'customer_group': 'Neukunde' });
// 2. Artikel
eamTrckAddBasketItem(..., { 'customer_group': 'Bestandskunde' });
// Ergebnis Transaktionsebene: 'Bestandskunde'
✅ Richtig: Konsistente Werte
Soll ein Parameter sicher für die gesamte Transaktion gewertet werden, muss er bei jedem Aufruf identisch sein.
// 1. Artikel
eamTrckAddBasketItem(..., {
'vc': 'SOMMER24',
'shipping_method': 'Express',
'color': 'Rot'
});
// 2. Artikel
eamTrckAddBasketItem(..., {
'vc': 'SOMMER24',
'shipping_method': 'Express',
'color': 'Blau'
});
// Ergebnis Transaktionsebene: 'SOMMER24' und 'Express' sind korrekt gesetzt.
Zusammenfassung für Entwickler
- Globale Parameter (Gutscheincodes, Kundengruppen, Versandarten) immer an alle Artikel der Bestellung hängen.
- Sicherstellen, dass die Werte innerhalb eines Warenkorbs für diese globalen Keys identisch sind.
- Nur produktspezifische Parameter (Größe, Farbe) dürfen variieren, wobei zu beachten ist, dass im Transaktions-Header nur der Wert des letzten Artikels sichtbar sein wird.