Google Tag Manager
Mit der integrierten Google Tag Manager Lösung kannst du den Tag Manager ohne weitere Plugins einbinden und E-Commerce-Daten erfassen. Die E-Commerce-Events nach dem Standard von Google Analytics 4 (z. B.view_item, add_to_cart, begin_checkout, purchase) erzeugt DZM Resources zentral für alle Tracking-Dienste. NIU Plus gibt sie an den dataLayer des Tag Managers weiter – sobald der Besucher eingewilligt hat. Wie die Einwilligung funktioniert, liest du unter Consent & Tracking einrichten.
Das Seitenaufruf-Event (
page_view) sendet dein GA4-Tag im Container selbst. NIU Plus schickt es deshalb nicht zusätzlich in den dataLayer.Allgemein
Hier aktivierst du die Schnittstelle und hinterlegst deine ID.
boolean
Aktiviere diesen Schalter, um den Google Tag Manager in deinem Shop zu verwenden. Geladen wird er je nach Consent Mode erst nach der Einwilligung (Basic) oder sofort (Advanced).
string
Trage hier deine Container-ID ein. Diese findest du in deinem Google Tag Manager Konto oben rechts neben dem Container-Namen. Mögliche Formate:
GTM-XXXXXX– Älteres Format mit 6 alphanumerischen Zeichen (z. B.GTM-AB12CD)GTM-XXXXXXX– Neueres Format mit 7 alphanumerischen Zeichen (z. B.GTM-AB12CDE)GTM-XXXXXXXX– Erweitertes Format mit 8 Zeichen bei neueren Konten
Consent
Hier steuerst du, für welche Google-Dienste eine Einwilligung eingeholt wird und wie NIU Plus den Google Consent Mode v2 behandelt.boolean
Zeigt im Consent-Banner den Dienst Google Analytics 4 an. Wenn deaktiviert, gilt der Consent für GA4 als verweigert.
boolean
Zeigt im Consent-Banner den Dienst Google Ads an. Wenn deaktiviert, gilt der Consent für Google Ads als verweigert.
Basic | Advanced
Legt fest, wann der Tag Manager lädt.
- Basic (empfohlen): Der Tag Manager lädt erst, wenn der Besucher dem Google Tag Manager und Google Analytics 4 oder Google Ads zugestimmt hat. Vorher geht keine Anfrage an Google.
- Advanced: Der Tag Manager lädt sofort, mit verweigertem Consent als Ausgangszustand. Google erhält dann Signale ohne Cookies und modelliert fehlende Conversions. Solange Google Ads nicht erteilt ist, schwärzt Google Anzeigen-Klick-IDs (
ads_data_redaction). Der Banner-Eintrag „Google Tag Manager“ hat in diesem Modus keinen Einfluss darauf, ob der Tag Manager lädt – er wirkt nur noch über die Kopplung auf GA4 und Google Ads.
NIUplus | Consent-Manager-Plugin
- NIUplus (Standard): NIU Plus meldet den Consent Mode an Google – Ausgangszustand „verweigert“, danach die Entscheidung des Besuchers: Google Analytics 4 steuert
analytics_storage, Google Ads steuertad_storage,ad_user_dataundad_personalization. - Consent-Manager-Plugin: Wähle diese Option, wenn dein Consent-Plugin den Consent Mode bereits selbst an Google meldet (z. B. Webstollen EU Cookie ab Version 2.6). NIU Plus fasst den Consent Mode dann nicht an.
Es darf immer nur eine Quelle den Consent Mode setzen. Melden beide, widersprechen sich die Signale.
Enhanced Conversions
Übergibt SHA-256-gehashte Kundendaten alsuser_data in den dataLayer. Das verbessert das Matching von Conversions in Google Ads und das User-Tracking in GA4.
Die Daten stehen nie im Quelltext deines Shops. Der Tag Manager holt sie im Hintergrund ab – und zwar nur, wenn der Besucher Google Ads zugestimmt hat. Gehasht wird immer auf dem Server, Klartext verlässt deinen Shop nicht. Bei einer Bestellung steht user_data im dataLayer bereit, bevor das purchase-Event folgt.
boolean
Master-Schalter. Wenn aus, wird kein
user_data gepusht.boolean
Empfohlen. Die E-Mail ist das wichtigste Match-Signal für Enhanced Conversions.
boolean
Vorname, Nachname, Straße, PLZ, Ort, Land. Verbessert die Match-Quality, ist aber DSGVO-relevant. Telefon und Bundesland werden bewusst nicht übertragen.
boolean
Zusätzlich zur Bestellung wird
user_data auf jeder Seite gepusht, sobald ein User eingeloggt ist. Verbessert das Cross-Device-Matching für GA4. Wenn aus, wird user_data nur bei der Bestellung gepusht.GA4 vom Server (Measurement Protocol)
Dein Shop kann Käufe direkt vom Server an Google Analytics 4 melden. So kommen auch Käufe in GA4 an, die der Browser nicht übertragen kann – etwa weil ein Adblocker aktiv ist, Safari das Tracking einschränkt oder der Käufer nach einer externen Zahlung nicht in den Shop zurückkehrt.Browser, Server oder beides
GA4 zählt einen Kauf doppelt, wenn er über den Tag Manager im Browser und vom Server ankommt. Anders als Meta und TikTok sortiert GA4 die beiden Meldungen nicht aus – auch nicht bei derselben Bestellnummer (transaction_id), demselben Nutzer und derselben Sitzung. Das haben wir in GA4 nachgemessen. Deshalb legst du unter GTM → Käufe an GA4 melden fest, auf welchem Weg GA4 den Kauf bekommt:
Der Server meldet Käufe stündlich per Cronjob (siehe Versand und Kontrolle). Bei „Server“ und „Beides“ erscheint der Kauf in GA4 deshalb bis zu einer Stunde später. Läuft der Cronjob nicht, kommt bei diesen beiden Einstellungen kein Kauf bei GA4 an.
Solange der Server-Weg nicht läuft – das API-Secret fehlt oder ist nicht lesbar, die Mess-ID fehlt oder GA4 im Browser ist aus – und solange der Debug-Modus an ist, geht der Kauf wie bei „Browser“ über den Tag Manager an GA4, ohne Kennzeichen. So geht kein Kauf verloren. Das Backend nennt dir den Grund.
Voraussetzungen
Für „Server“ und „Beides“:- GA4 im Browser ist aktiv: Unter Allgemein ist der Google Tag Manager eingebunden und die ID eingetragen, unter Consent ist „Consent für GA4 einholen“ aktiv. Auch bei „Server“ braucht es GA4 im Browser – ohne GA4 im Browser gibt es kein
_ga-Cookie und keinen Eintrag im Consent-Banner. - Einwilligung des Käufers: Gesendet wird nur, wenn der Käufer bei der Bestellung Google Analytics 4 im Consent-Banner zugestimmt hatte. Mehr dazu unter Server-Side und Einwilligung.
- Cronjob von DZM Resources: Die Käufe werden stündlich über die Aufgabe „DZM Resources: Server-Side-Tracking senden“ verschickt. Sie wird bei der Installation bzw. beim Update von DZM Resources automatisch angelegt.
Einrichtung
1
Weg wählen
Wähle im NIU-Plus-Backend unter GTM in der Box Käufe an GA4 melden „Server“ oder „Beides“. Danach erscheinen die weiteren Felder.
2
Bei „Beides“: Ausnahme im Container
Mit unserer GTM-Vorlage ist nichts zu tun. Bei einem eigenen Container lege die Ausnahme an und veröffentliche den Container.
3
Mess-ID eintragen
Trage im Feld „GA4-Mess-ID“ die Mess-ID deines GA4-Datenstreams ein, z. B.
G-ABC123XYZ. Du findest sie in GA4 unter Verwaltung → Datenstreams beim Web-Datenstream deines Shops.4
API-Secret in GA4 anlegen
Öffne in GA4 Verwaltung → Datenstreams, wähle den Web-Datenstream deines Shops und öffne Measurement Protocol API-Secrets. Lege dort ein neues Secret an, z. B. mit dem Namen „JTL-Shop“, und kopiere den Wert.
5
API-Secret speichern
Füge den Wert im Feld „API-Secret (Measurement Protocol)“ ein und klicke direkt neben dem Feld auf Speichern. Das Feld speichert sofort, unabhängig vom Speichern-Button der Seite. Das Secret wird verschlüsselt abgelegt und danach nie wieder angezeigt – das Feld zeigt nur noch den Zustand Gespeichert.
6
Einstellungen speichern
Lege fest, ob Stornos gesendet werden (siehe unten), und speichere die Seite.
7
Ersten Kauf prüfen
Prüfe nach dem ersten echten Kauf in DZM Resources unter Tracking, ob er als „gesendet“ markiert ist, und danach in GA4, dass er einmal ankommt. Bei „Beides“ zeigt die Vorschau des Tag Managers: Der GA4-Tag für E-Commerce-Ereignisse löst beim
purchase nicht aus, die Google-Ads-Conversion schon.Ausnahme im eigenen Container
Nur nötig bei Beides und einem Container, der nicht auf unserer Vorlage beruht. So nimmt der GA4-Tag den Kauf aus, alle anderen Tags bekommen ihn weiter:1
Variable anlegen
Variablen → Neu → Datenschichtvariable, Name der Datenschichtvariable
dzm_ga4_server, Version 2. Speichere sie z. B. als dl_dzm_ga4_server.2
Trigger anlegen
Trigger → Neu → Benutzerdefiniertes Ereignis, Ereignisname
purchase, Auslösen bei Einige benutzerdefinierte Ereignisse: dl_dzm_ga4_server ist gleich true. Speichere ihn z. B. als „purchase vom Server (Ausnahme GA4)“.3
Als Ausnahme anhängen
Öffne den GA4-Ereignis-Tag, der deine E-Commerce-Ereignisse an GA4 sendet, und füge den Trigger unter Ausnahmen hinzu. Hänge ihn nicht an Google-Ads-Tags – die brauchen den Kauf weiter.
4
Testen und veröffentlichen
Prüfe in der Vorschau einen Testkauf: Beim
purchase steht der GA4-Tag unter „Nicht ausgelöste Tags“. Veröffentliche den Container danach.Einstellungen
Browser | Server | Beides
Auf welchem Weg GA4 den Kauf bekommt, siehe Browser, Server oder beides. Standard: Browser. Hattest du vor diesem Update „Käufe zusätzlich vom Server an GA4 melden“ eingeschaltet, steht die Einstellung nach dem Update auf Beides – prüfe dann deinen Container auf die Ausnahme.
string
Die Mess-ID deines GA4-Datenstreams im Format
G-….string
Das API-Secret aus deinem GA4-Datenstream. Der Zustand wird als Kennzeichen angezeigt:
- Nicht gesetzt – es ist noch kein Secret hinterlegt.
- Gespeichert – ein Secret ist hinterlegt. Trägst du einen neuen Wert ein, ersetzt er den alten. Mit Entfernen löschst du das Secret; danach geht der Kauf wieder wie bei „Browser“ über den Tag Manager an GA4, bis du ein neues einträgst.
- Per Konstante gesetzt – das Secret kommt aus der
config.JTL-Shop.ini.php(siehe unten), das Feld ist dann gesperrt. - Nicht lesbar – bitte neu eintragen – das gespeicherte Secret lässt sich nicht mehr entschlüsseln, z. B. nach einem Wechsel des Verschlüsselungsschlüssels im Shop. Trage es neu ein.
boolean
Wird eine Bestellung in der JTL-Wawi vollständig storniert, meldet der Shop ein
refund an GA4. Nur bei „Server“ und „Beides“ und nur für Käufe, die vorher vom Server gemeldet wurden.boolean
Sendet an den Prüf-Endpunkt von GA4: Google prüft das Format, zeichnet aber nichts auf. Ergebnis und Meldungen stehen in DZM Resources unter Tracking. Solange der Debug-Modus an ist, geht der Kauf wie bei „Browser“ über den Tag Manager an GA4 – sonst käme er nirgends an.
Was übertragen wird
- Kauf: Bestellnummer, Währung, Wert, Steuer, Versandkosten, Gutschein und Artikel – dieselben Werte wie das
purchase-Event im Browser. Dazu die GA4-Kennungen aus den Cookies_gaund_ga_…(damit GA4 den Kauf der richtigen Sitzung zuordnet), IP-Adresse und Browserkennung des Käufers sowie der Bestellzeitpunkt. - Storno: Bestellnummer, Währung und Wert, ohne Artikel, ohne IP-Adresse und Browserkennung.
- Google-Ads-Einwilligung: GA4 bekommt mit, ob der Käufer Google Ads zugestimmt hatte (
ad_user_data,ad_personalization).
GA4 nimmt Ereignisse nur bis 72 Stunden nach dem Kauf an. Läuft der Cronjob länger nicht, werden ältere Käufe deshalb nicht mehr gesendet. Hatte der Käufer bei der Bestellung noch kein
_ga-Cookie, kann GA4 den Kauf keiner Sitzung zuordnen – er wird dann nicht vom Server gesendet. Bei „Server“ fehlt er in GA4 dann ganz.Zugangsdaten per Konstante
Statt das API-Secret im Backend einzutragen, kannst du es als Konstante in derconfig.JTL-Shop.ini.php deines Shops hinterlegen. Die Konstante hat Vorrang vor einem im Backend gespeicherten Wert.
config.JTL-Shop.ini.php