Mit dataLayer.push() schreibt die Website Daten in die Datenschicht. Es ist der einzige vorgesehene Weg, den Google Tag Manager über etwas zu informieren.
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'add_to_cart',
'ecommerce': { 'value': 49.9, 'currency': 'EUR' }
});
Enthält das Objekt den Schlüssel event, entsteht ein Ereignis, auf das ein Trigger für benutzerdefinierte Ereignisse hören kann. Ohne event werden nur Werte hinterlegt, die spätere Ereignisse lesen können.
Zusammenführung
Der Tag Manager führt jeden Push mit dem bisherigen Zustand zusammen, und zwar rekursiv. Ein zweiter Push mit einem ecommerce-Objekt überschreibt also nicht das erste, sondern mischt sich hinein. Deshalb gehört vor jedes E-Commerce-Ereignis ein eigener Push:
window.dataLayer.push({ ecommerce: null });
Ohne diese Zeile tauchen Artikel aus einem früheren Ereignis in einem späteren wieder auf, was sich in GA4 als falsche Artikelzahlen zeigt.
Zeitpunkt
Das Array muss vor dem ersten Push existieren, daher die Zeile mit || []. Werte, die schon beim Seitenaufruf gebraucht werden, gehören vor das Container-Snippet. Ein Push, der nach dem Feuern des Tags kommt, hilft diesem Tag nicht mehr.
In WordPress gehört der Code je nach Fall ins Child-Theme, in ein Snippet-Plugin oder in ein Code-Element. PHP-Ausgaben werden dabei mit wp_json_encode() escaped.
