Zum Inhalt springen

GA4-E-Commerce durchgängig über deinen Server-Container

Sobald GA4 über deinen Server-Container läuft, ist E-Commerce vor allem Arbeit im Web-Container. Deine Website schreibt jede Shop-Aktion in den dataLayer, ein GA4-Event-Tag sendet sie an https://sgtm.example.com, und das serverseitige GA4-Tag, das du schon hast, leitet sie samt aller Produkte weiter. In dieser Lektion richtest du Events, Tag und Trigger ein, schützt den Kauf vor doppelter Zählung und prüfst die Daten unterwegs.

Fortgeschritten 13 Min. Lesezeit

Das lernst du

  • Wissen, welche empfohlenen E-Commerce-Events GA4 erwartet und welche Parameter jedes braucht.
  • Saubere E-Commerce-Daten in den dataLayer schreiben und das vorherige Objekt vorher leeren.
  • Alle E-Commerce-Events mit einem GA4-Event-Tag und einem Custom-Event-Trigger senden.
  • purchase einmal pro Bestellung auslösen und in der Server-Preview, in DebugView und in den Monetarisierungsberichten prüfen.

Bevor du startest

  • GA4 im Web-Container, das an deinen Server-Container sendet (Lektion 3).
  • Das serverseitige GA4-Tag mit dem Trigger Client Name equals GA4 (Lektion 4).
  • Ein Entwickler oder ein Shop-Plugin, das auf Produkt-, Warenkorb- und Checkout-Seiten Daten in den dataLayer schreiben kann.

02 Daten in den dataLayer schreiben

Jeder Push hat zwei Teile: zuerst ecommerce: null, dann das Event mit einem frischen ecommerce-Objekt. Der dataLayer führt Objekte zusammen. Ohne das Zurücksetzen können die Items des vorherigen Events ins nächste rutschen, zum Beispiel ein Produkt aus view_item in add_to_cart.

js
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
  event: 'view_item',
  ecommerce: {
    currency: 'EUR',
    value: 129.90,
    items: [{ item_id: 'SKU-1', item_name: 'Shoes', item_brand: 'Acme', item_category: 'Footwear', price: 129.90, quantity: 1 }]
  }
});
js
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
  event: 'add_to_cart',
  ecommerce: {
    currency: 'EUR',
    value: 129.90,
    items: [{ item_id: 'SKU-1', item_name: 'Shoes', price: 129.90, quantity: 1 }]
  }
});

Der Kauf-Push ergänzt transaction_id und den vollen Bestellwert. Gib ihn auf der Danke-Seite mit den echten Bestelldaten aus deinem Shop aus.

js
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
  event: 'purchase',
  ecommerce: {
    transaction_id: 'T-10293',
    value: 129.90,
    currency: 'EUR',
    items: [{ item_id: 'SKU-1', item_name: 'Shoes', price: 129.90, quantity: 1 }]
  }
});

03 Ein GA4-Event-Tag für alle E-Commerce-Events

Im Web-Container brauchst du kein Tag pro Event. Ein einziges Tag vom Typ Google Analytics: GA4 Event kann Event-Namen und E-Commerce-Daten aus dem dataLayer lesen und jedes Event senden, das gepusht wurde.

  1. 1 Lege einen Trigger vom Typ Custom Event an. Gib als Event-Namen ^(view_item_list|select_item|view_item|add_to_cart|remove_from_cart|view_cart|begin_checkout|add_shipping_info|add_payment_info|purchase)$ ein und setze den Haken bei Use regex matching.
  2. 2 Lege ein Tag vom Typ Google Analytics: GA4 Event an. Gib deine Mess-ID G-XXXXXXXXXX ein (oder wähle dein Google-Tag) und setze Event Name auf die integrierte Variable {{Event}}.
  3. 3 Öffne unter More Settings den Bereich Ecommerce, setze den Haken bei Send Ecommerce data und wähle Data Layer als Datenquelle.
  4. 4 Hänge den Custom-Event-Trigger an, benenne das Tag (zum Beispiel GA4 - ecommerce) und speichere.

Das Tag geht über dasselbe Google-Tag raus, in dem seit Lektion 3 server_container_url auf https://sgtm.example.com gesetzt ist. So erreicht jedes E-Commerce-Event zuerst deinen Server-Container.

04 Was sich im Server-Container ändert

Nichts. Der GA4-Client übernimmt die E-Commerce-Hits wie jedes andere GA4-Event, und die Items reisen im Hit mit. Das GA4-Tag aus Lektion 4 mit dem Trigger Client Name equals GA4 leitet sie zusammen mit value, currency und transaction_id an Google Analytics weiter.

Für zusätzliche Ziele bleibt der Server-Container der richtige Ort. Ein Meta-Conversions-API-Tag kann dasselbe purchase-Event lesen, sodass die Bestellung aus denselben Daten an Meta geht (Lektion 7 zeigt, wie du eine event_id für die Deduplizierung teilst). Auch das Google-Ads-Conversion-Tag aus der nächsten Lektion liest es.

05 Jeden Kauf nur einmal zählen

Google Analytics dedupliziert purchase-Events mit derselben transaction_id bei Daten aus Web-Streams. Sieh das als Sicherheitsnetz, nicht als Lösung. Die häufigste Quelle für Duplikate ist die Danke-Seite: Ein Besucher lädt sie neu, kommt über den Browserverlauf zurück oder öffnet den Bestätigungslink aus der E-Mail, und der Kauf-Push läuft erneut.

  • Gib den Kauf-Push nur beim ersten Aufruf der Danke-Seite aus. Setze in deinem Shop ein Kennzeichen an der Bestellung (zum Beispiel tracked_at) und überspringe den Push, wenn es gesetzt ist.
  • Sende immer eine echte, eindeutige transaction_id. Nie einen leeren String: GA4 behandelt alle Käufe, deren transaction_id ein leerer String ist, als eine einzige Transaktion.
  • Schreib keine personenbezogenen Daten wie die E-Mail-Adresse in die transaction_id. Nimm die Bestellnummer.
  • Sende Erstattungen mit der transaction_id der ursprünglichen Bestellung, damit GA4 sie zuordnen kann.

06 Daten durchgängig prüfen

Teste an drei Stellen, vom Server nach außen. Öffne die Preview in beiden Containern und geh den Shop durch: Produkt ansehen, in den Warenkorb legen, zur Kasse gehen und eine Testbestellung aufgeben.

  • Web-Preview: Das Tag GA4 - ecommerce feuert bei jedem E-Commerce-Event und bei keinem anderen.
  • Server-Preview: Die Anfrage geht an sgtm.example.com, und in den Event-Daten siehst du items mit item_id, price und quantity sowie value und currency.
  • Server-Preview: Das GA4-Tag steht bei purchase unter Tags Fired.
  • GA4 DebugView: Die Events kommen mit ihren Parametern und Items an.
  • GA4-Berichte unter Monetization: Käufe und Umsatz erscheinen. Diese Berichte brauchen 24 bis 48 Stunden, beurteile sie also nicht am selben Tag.

Häufige Fragen

Brauche ich für E-Commerce-Events ein eigenes Server-Tag?

Nein. Das GA4-Tag im Server-Container leitet jedes Event weiter, das der GA4-Client übernimmt, einschließlich der Items. Für E-Commerce ist nur Arbeit im dataLayer und im Web-Container nötig.

Warum sehe ich in GA4 Käufe, aber keinen Umsatz?

Meist fehlt currency, oder value wird als String gesendet. Prüfe die Event-Daten in der Server-Preview: value muss eine Zahl sein und currency ein dreistelliger Code wie EUR.

Entfernt GA4 doppelte Käufe von selbst?

Bei Web-Streams dedupliziert es Kauf-Events mit derselben transaction_id. Es lohnt sich trotzdem, den Kauf nur einmal auszulösen, denn andere Tools, die dasselbe Event lesen, etwa Werbeplattformen, zählen eine Wiederholung eventuell als zweite Conversion.

Bereit, es in die Praxis umzusetzen?

Richte in wenigen Minuten einen Server-GTM-Container auf deiner eigenen Domain ein. Für den Free-Tarif brauchst du keine Karte.

Kostenloses Konto erstellen