Ecommerce: Trackst du mehrmals die gleiche Transaktion in Google Analytics?7 min Lesezeit

Michaela Linhart 18 Comments

Eines der größten Herausforderungen die ich heuer mit Enhanced Ecommerce in Google Analytics erlebt habe ist, dass die gleichen Transaktionen mehrmals in Google Analytics erfasst werden. Das heißt, statt eine Transaktion einmal (so wie es sich gehört), zehnmal die gleiche. Statt z.B. 30 Euro Transaktions-Umsatz, stolze 300 Euro. Hier erfährst du, OB du ebenfalls gleiche Transaktionen mehrmals in GA erfasst und WAS du dagegen tun kannst… 

Dieses Phänomen habe ich als “Duplicate Transaction”-Problem im Internet gefunden, deswegen nenne ich es ebenfalls so.

Was sind doppelte Transaktionen und woher kommen sie?

Doppelte Transaktionen treten auf, wenn User deine Danke-Seite mehr als einmal aufrufen z.B. weil sich der Link zur Sendungsverfolgung auf deiner Danke-Seite befindet. Manche User rufen nun täglich deine Website auf um ihre Sendung zu verfolgen. Oder weil sie nach mehreren Tagen nochmal überprüfen wollen, was für Produkte sie gekauft haben, wie viel sie ausgegeben haben, usw.

Jedesmal wenn deine User deine Danke-Seite in einer neuen Session aufrufen, wird der Transaktions-Tracking Code erneut ausgeführt und die selbe Transaktion landet ein zweites, ein drittes, ein viertes Mal in Google Analytics.

Duplicate Transactions GA

Screenshot: Duplicate Transactions Google Analytics

Gleiche Transaktion, selbe Session

Der Knackpunkt liegt in „einer neuen Session“: Innerhalb der gleichen Session werden Transaktionen nicht mehrmals in GA erfasst. 

Warum passiert das? Beispielsweise wenn dein User nach der Danke-Seite auf die Startseite geleitet wird und kurz danach wieder zurück zur Danke-Seite springt. Oder: Wenn dein User die Danke-Seite neu ladet.

Warum werden in dem Fall Transaktionen nicht doppelt erfasst? Weil Google Analytics die gleiche Transaktion innerhalb derselben Session herausfiltert. Ganz automatisch.

Gleiche Transaktion, neue Session

Initiiert der User allerdings eine neue Session z.B. 2h später, am nächsten Morgen oder zwei Tage später, und der Transaktion Tracking Code wird erneut abgeschickt, kümmert sich Google Analytics nicht automatisch um die Filterung: Dann landet ein und dieselbe Transaktion zwei Mal, drei Mal, X-Mal in Google Analytics.

Duplicate Transactions: Das Problem

Das Problem dabei ist, dass deine Ecommerce Statistiken dadurch vollkommen verfälscht werden: Du erhälst falsche Umsatz Daten und eine falsche Anzahl deiner Transaktionen.

Deine Ecommerce Metriken werden ins unendliche aufgeblasen und widersprechen jeglicher Realität. Du kannst deine Ecommerce Reports praktisch nehmen und in den Mistkübel werfen: Sie sind nichtssagend und für keine Analyse verwertbar. Leider.

Wie kannst du herausfinden ob du betroffen bist?

Dazu gibt es einen einfachen Weg und super schnellen Weg: Nämlich mit einem Custom Report: Link zur Vorlage

Duplicate Transactions Kontrolle per Custom Report

Screenshot: Duplicate Transactions Kontrolle per Custom Report

Den Custom Report nenne ich “Duplicate Transactions”: Am besten du wählst den Explorer-Typ (inkl. Liniendiagramm deiner Metriken) oder die Flat Table (ohne Liniendiagramm) als Typ aus.

Als Dimension wählst du die Transaktions ID. Als Metrik die Transaktionen.

Klicke auf Speichern und wähle einen längeren Zeitraum z.B. die letzten zwei Monate oder auch nur die letzten zwei Wochen – jedenfalls länger als nur ein paar Tage: Denn je nach Produkt und Userverhalten kann es sein, dass User grundsätzlich immer erst nach 3 oder 5 Tagen nochmal deine Danke-Seite aufrufen. Wenn du einen längeren Zeitraum wählst, kannst du dir ganz sicher sein, dass Duplicate Transactions auftauchen – oder nicht.

Analyse: Keine doppelten Transaktionen

In deinem Custom Report darf jede Transaktions ID natürlich nur ein einziges mal vorkommen: Ist das der Fall, ist das Tracking deiner Transaktionen richtig implementiert und deine Google Analytics Daten soweit korrekt. Du hast keine Duplicate Transactions. Herzlichen Glückwunsch!

No Duplicate Transactions

Screenshot: No Duplicate Transactions in Google Analytics

Analyse: Doppelte Transaktionen

Ist das nicht der Fall, d.h. hast du mehr als eine Transaktion mit derselben Transaktions ID in deinem Custom Report, sendest du Transaktionen mehrfach an Google Analytics.

Duplicate Transactions GA

Screenshot: Duplicate Transactions Google Analytics

Du solltest ab sofort deinen Ecommerce Daten in Google Analytics nicht mehr vertrauen, denn sie stimmen nicht mit der Realität überein.

Aber keine Sorge: Es gibt verschiedene Wege wie du dieses Problem lösen kannst.

Duplicate Transactions: 4 Lösungswege

Genaugenommen gibt es vier Lösungswege:

  1. User nicht auf deine Danke-Seite leiten
  2. Serverseitig das Tracking unterbinden (empfohlen!)
  3. Clientseitig das Tracking unterbinden (im Sourcecode)
  4. Clientseitig das Tracking unterbinden (via GTM)

1. User nicht auf die Danke-Seite leiten

Du kannst z.B. die wichtigsten Informationen von deiner Danke-Seite entfernen, sodass deine User keinen Grund mehr haben deine Danke-Seite mehrmals aufzurufen. Schick ihnen stattdessen z.B. eine Email mit allen Informationen.

Das ist zwar eine Lösung: Auch eine recht einfache und schnell umsetzbare Lösung – aber vermutlich nicht die beste. Denn es kann trotzdem passieren, dass User deine Danke-Seite mehrfach besuchen und dann du hast wiederum falsche Daten in GA.

2. Serverseitig das Tracking unterbinden

Die sauberste, beste aber leider sehr, sehr technische Lösung ist: Das Tracking serverseitig zu unterbinden! D.h. den Tracking Code gar nicht erst mehrfach abzuschicken, auch nicht wenn eine neue Session initiiert wird.

Das ist serverseitig an sich sehr einfach umsetzbar; allerdings benötigst du vermutlich Unterstützung durch deine IT.

Außerdem stellen leider nicht alle Onlineshops serverseitigen Zugriff zur Verfügung – vor allem wenn ein cloudbasiertes Shop-Managementsystem wie Shopify eingesetzt wird.

3. Clientseitig das Tracking unterbinden (im Sourcecode)

In diesem Fall können Duplicate Transactions auch clientseititg unterbunden werden, also direkt im Frontend des Webshops. Dafür ist nur ein zusätzliches if-Statement vor dem dataLayer-Push des Transaktions-Tracking Codes notwendig.

Das ist auch die Lösung, die ich bei mir implementiert haben lasse. Warum? Weil der Enhanced Ecommerce Tracking Code für die Transaktion ohnehin direkt im Sourcecode implementiert werden muss und diese Lösung am schnellsten und einfachsten ist und den geringsten Aufwand verlangt.

Mein Lösungweg:

Duplicate Transactions - Clientseitige Lösung im Webshop

Screenshots: Clientseitige Lösung für Duplicate Transactions

Wir benötigen ein Browser-Cookie , in das jede Transaktions ID des Users gespeichert wird. Vor dem senden des Transaktions- Trackingcodes wird im Sourcecode des Onlineshops eine if-Abfrage hinzugefügt, die überprüft ob in dem Cookie bereits die TransaktionsID vorhanden ist.

Ist sie vorhanden (if = true), wird der Transactions-Tracking Code NICHT abgeschickt; die Transaktion gibt es bereits.

Ist sie nicht vorhanden (if = false), wird der Transaction-Tracking Code abgeschickt; die Transaktion ist neu und findet das erste Mal statt.

Das ganze sieht Quellcode-technisch so aus:

<script>
var transactionID = "deine transactionID";
var transactionCookie = getCookie("gatrackedtransactions");

if(!transactionCookie || transactionCookie.indexOf(transactionID)<0){
dataLayer.push({'ecommerce': {
//...
}});

if(!transactionCookie) transactionCookie="";
document.cookie = "gatrackedtransactions="+transactionCookie+","+transactionID+";path=/; expires=Fri, 31 Dec 9999 23:59:59 GMT;";
} else {
dataLayer.push({
'event': "genericEvent",
'category': "Duplicate Transaction Prevented",     
'action': transactionID     
});}

function getCookie(name) {  
var value = "; " + document.cookie;  
var parts = value.split("; " + name + "=");  
if (parts.length == 2) return parts.pop().split(";").shift();
}
</script>

Und weil mich interessiert wie oft eine Transaktion doppelt oder dreifach getrackt worden wäre, pushe ich im else-Statement ein Event, dass mir genau diese Information an Google Analytics sendet: Duplicate Transaction Prevented.

Einziges Manko: Ruft der User die Danke-Seite auf verschiedenen Geräten auf (zu Hause, in der Arbeit, am Handy), wird die Transaktion trotzdem mehrfach erfasst… Also auch das ist keine 100%ige Lösung, aber eine die bei uns eben sehr gut funktioniert… 

4. Clientseitig das Tracking unterbinden (via GTM)

Eine letzte Lösung habe ich noch: Ebenfalls clientseitig aber nicht über den Sourcecode des Onlineshop sondern über den Google Tag Manager: Dein Freund und Helfer!

Warum kann diese Lösung für dich interessant sein? Weil du für die beiden vorhin genannten Lösungen vermutlich immer Unterstützung durch die IT benötigst. Oft ist es für die IT aber nicht möglich schnell zu reagieren z.B. weil gerade keine Ressourcen zur Verfügung stehen (und auch frühestens erst wieder in einem halben Jahr Zeit dafür ist). In dieser Zeit sind aber die Daten in Google Analytics unbrauchbar. Was du brauchst ist eine schnelle Lösung, die du selbst umsetzen kannst. 

Deswegen habe ich eine Lösung im Blog von lunametrics gefunden, wie du die clientseitige Lösung mit Cookie auch über den GTM implementieren kannst. Jon Meck hat eine wunderbare Step by Step Anleitung geschrieben, die du super einfach nachbauen kannst: https://www.lunametrics.com/blog/2014/07/07/duplicate-transactions/

Alles klar?

Dann freue ich mich über ein Like, ein Share und ein Kommentar von dir. Abonniere gerne meinen Newsletter und meine Facebook Seite und lass dich automatisch über neue Beiträge informieren.

Noch nicht ganz? Schreibe mir gerne deine Fragen in die Kommentare.

Ich helfe, wo ich kann.

???? Happy Analyzing,

Deine Michaela

Gratis aber nicht umsonst:

Komm in meine Google Analytics Community!

  • Jürgen E. sagt:

    Hi Michaela,

    absoluter Top-Beitrag, bin erst vor kurzen über den Artikel gestoßen. Wir haben bemerkt, dass es auch passieren kann dass Analytics Probleme beim Einspielen von Retouren Daten bei den Transaktions-IDs bekommen kann, haben hier aber keine Lösung gefunden.

    Liebe Grüße,

    Jürgen

  • Christian sagt:

    Klasse Beitrag, bestens beschrieben und für einen Laien gut nachvollziehbar!

  • Daniel sagt:

    Hallo,

    auch ich habe das Problem mit mehreren Transaktions IDs auf meiner Seite.

    Beim Punkt 2. Serverseitig das Tracking unterbinden schreibst du, dass das auch ganz einfach wäre. Hättest du hierfür eine Anleitung, die ich einem ITler weitergeben könnte?

    • Hallo Daniel,

      eine technische Anleitung gibt es dafür im Prinzip nicht: Der Transaktions Tracking Code (hier am Beispiel im GTM) ist derselbe.

      Wichtig ist, dass der Tracking Code nur dann ausgespielt wird, wenn die Session ID dieselbe SessionID ist, in der die Transaktion ausgeführt wurde.

      Handelt es sich nicht um dieselbe Session ID, soll der Tracking Code garnicht ausgeführt werden.

      Das Vorgehen ist sehr ähnlich wie in der Abbildung unter Punkt 3: Clientseitig das Tracking unterbinden dargestellt, nur das die Transaktion in keinem Cookie gespeichert werden muss, da das Shopsystem bereits über die Transaktion bescheid weiß. Das Shopsystem ist natürlich klüger als ein Cookie oder der localStorage im Browser.

      Eventuell hilft das deinem ITler weiter – meistens ist es aber so, dass ITler ohnehin bescheid wissen und „das Problem“ eher die Stelle im Onlineshop ist, an dem der Code eingefügt werden muss. Das ist aber leider sehr stark Shop-Abhängig, deswegen kann ich dazu pauschal nichts sagen.

      Hilft dir das weiter?

      Liebe Grüße,
      Michaela

      • Daniel sagt:

        Hallo Michaela,

        danke für dein Antwort erstmal.

        Ich habe aber weiterhin recherchiert und konnte eine Anleitung für den Tag Manager von Simo Ahava zu dem Thema finden, weil ich es eben doch ohne IT Hilfe machen wollte 🙂

        Anschließend habe ich alles nach seiner Anleitung eingerichtet und habe die Tage daraufhin trotzdem Transaktions-IDs mit mehreren Transaktionen gefunden.

        Als ich diese genauer untersucht habe, konnte ich erkennen, dass die 2-3 Transaktionen der gleichen Transaktions-ID verschiedene Umsätze, verschiedene Client IDs, verschiedene Städte usw. anzeigen.

        Kann es also auch sein, dass die gleiche Transaktions-ID nicht unbedingt heißen muss, dass die gleiche Transaktion mehrmals an Analytics gesendet wird, sondern dass einfach zufällig die gleiche Transaktions-ID bei zwei verschiedenen Transaktionen auftaucht?

        • Hallo Daniel,

          großartig! Willst du mir den Link zu Simos Blog sharen? Dann kann ich ihn bei mir einfügen. 🙂

          Hmm… eigentlich dürfte es nicht passieren, dass ein Shop mehrmals die gleiche Transaktions-ID vergibt. Die Transaktions-ID sollte immer eindeutig (unique) sein.

          Ich könnte mir aber vorstellen, dass sowas passiert, wenn mehrere Shops in ein GA Konto einfließen z.B. wenn es je einen Shop für DE, AT, CH gibt und random IDs als Transaktions-ID vergeben werden. Dann kann es durchaus passieren, dass die selbe ID mehrmals vergeben wird.

          Das ist jedoch nicht sinnvoll und sollte im Shop angepasst werden.

          In solchen Fällen hilft auch immer eine schöne, umfangreiche Datendifferenz-Analyse zwischen Shop-System und Google Analytics. Dadurch kommt man meist sehr schnell drauf was wirklich das Problem ist.

          Liebe Grüße,
          Michaela

          • Daniel sagt:

            Hallo Michaela,

            der Link zu Simos Blog: https://www.simoahava.com/analytics/prevent-google-analytics-duplicate-transactions-with-customtask/

            Und zu meinem Problem mit den doppelten IDs, wie schon gesagt, die IDs sind öfters die gleichen, die Transaktionen stammen aber von verschiedenen Nutzern / Transaktionen was ich durch Umsatz pro Transaktion, Client ID, Stadt, Account Status usw. herausfinden konnte.

            Also sollte ich nochmal den Programmierer anschreiben, der meinen Shop eingerichtet hat und ihm bescheid geben, dass er die Vergabe der Transaktions IDs überarbeiten soll, richtig?

            Und wegen der Datendifferenz-Analyse, könntest du grob beschreiben, wie du dort vorgehen würdest?

            Grüße
            Daniel

          • Hi Daniel,

            am besten du gleichst mal die Anzahl der Transaktionen und den Umsatz von Google Analytics mit deinem Shop System ab zB vom letzten Monat.

            Stimmen die Daten annähernd überein (+/- 10%) gibt es eigentlich keinen Grund Anpassungen vorzunehmen.

            Es ist dann zwar komisch, dass es mehrmals die gleiche TID gibt – allerdings stimmt es in dem Fall ja, weil unterschiedliche User, unterschiedliche Transaktionen.

            Wichtig ist, dass die Gesamtsumme passt.

            Passt die Gesamtsumme nicht, macht eine Datendifferenz-Analyse Sinn: Grob kann ich dir hier keine Anleitung geben. Datendifferenz-Analysen müssen immer aufs Problem abgestimmt werden.

            Im Grunde geht es aber darum, herauszufinden was genau das Problem ist und dabei möglichst ALLES zu berücksichtigen: Kommen die doppelten Transaktionen aus einem bestimmten Land, Bezahlsystem, Produkt, Device, etc. –> Zusammenhänge finden.

            Hilfreich ist auch immer die TIDs aus dem Shopsystem mit denen aus GA abzugleichen: Welche Transaktionen sind doppelt? Wieviele sind es? Und die dann auch nochmal im Detail zu analysieren um Zusammenhänge zu finden.

            Datendifferenzen sind oft sehr aufwendig, deswegen ist es besser zuerst herauszufinden ob es tatsächlich ein Problem gibt: Wenn die Summe aus Shop und GA zusammenpasst, dann ist es zwar eine Eigenart von deinem Shopsystem, dass es doppelte TIDs gibt – im Grunde ist es aber nicht falsch diese doppelt zu erfassen, weil sich ja immer ein neuer User dahinter befindet.

            Ich hoffe, dass hilft dir weiter.

            Falls du Unterstützung bei der Datendifferenz-Analyse benötigst, sag gerne bescheid, dann kann ich auch mal einen Blick darauf werfen.

            Liebe Grüße,
            Michaela

          • Daniel sagt:

            Hallo Michaela,

            danke für deine hilfreichen Antworten bisher.

            Habe das Thema soweit mit einem Entwickler geklärt. Die doppelten Transaktionen werden jetzt wie von dir empfohlen Serverseitig blockiert, mal schauen ob die doppelten IDs von verschiedenen Nutzern dann immer noch auftauchen.

            Weißt du, wie man herausfinden kann, welche Produkte sich hinter den Transactions IDs befinden? Also welche Segmente/ Metriken/ Dimensionen müsste ich zu dem von dir verlinkten Custom Report hinzufügen?

            Mich interessiert, welche Produkte/ Produktlisten davon jetzt am häufigsten betroffen waren mit den falschen Daten, die ich zuvor die ganze Zeit hatte.

          • Hallo Daniel,

            hervorragend, das freut mich zu hören! 🙂

            Am besten du erstellst dir ein Segment mit der Transaktions ID und schaust dir dann deine Produkte und Produktlisten an.

            Liebe Grüße,
            Michaela

  • Daniel sagt:

    Hallo Michaela,

    danke nochmals für deine ganzen Antworten bisher.

    Eine Frage hätte ich aber noch, kann man die Transactions ID eigentlich beliebig abändern? Also dass sie die gleiche Nummer hat wie die Aufrags-Nr. in meinem Backend?

  • Daniel sagt:

    Hallo Michaela,

    ich schon wieder 🙂
    Erstmal wieder vielen Dank für all deine hilfreichen Antworten, Du und dieser Blog seid mir eine große Hilfe.

    Ich hätte eine neue Frage zu den Auswertungen. Ich würde gerne einen kleinen Vergleichen zwischen meinem Backend System und Google Analytics erstellen um die einzelnen Produktkategorien  (erweiterter E-Commerce) in Analytics mit meinem Backend System zu vergleichen, es geht dabei um folgende Punkte:
    Bestellungen – Artikelanzahl (verkaufte Artikel) – Umsatz

    Dabei wollte ich eigentlich folgende Dimensionen / Messwerte als Vergleich wählen:
    Backend System: Bestellungen = Google Analytics: Transaktionen
    Backend System: Artikelanzahl =  Google Analytics: Menge
    Backend System Umsatz = Google Analytics: Umsatz

    Leider können diese Dimensionen und Messwerte nicht kombiniert werden.

    Anschließend habe ich den Messwert Einzelne Käufe gewählt, das hat aber auch nicht gestimmt, da hier alle Teile einzeln im Warenkorb gezählt werden und nicht die Bestellung an sich als einzelne Bestellung.

    Hättest du eine Alternative zum Messwert Transaktionen um die Anzahl der Bestellungen zu vergleichen? (Außer dem Zielvorhaben)

    Vielen Dank schonmal für deine Antwort und bleib gesund 🙂

    • Hallo Daniel,

      hier kommt es ganz stark auf deine Implementierung an: Die Anzahl der Transaktionen in Google Analytics sollte den Anzahl der Bestellungen aus dem Backend System entsprechen. Sollte – weil es verschiedene Möglichkeiten und Gründe gibt warum das nicht der Fall sein kann; wobei das eher sehr spezielle Use Cases betrifft und nicht der Standard-Implementierung.

      Die Metrik „Transaktion“ entspricht dabei der Gesamtzahl der Verkäufe.

      Die Metrik „Einzelne Käufe“ entspricht im Prinzip der Menge.

      Liebe Grüße,
      Michaela

  • Dennis sagt:

    Anhand der Beispiele konnte ich Probleme auf unserer Seite identifizieren und korrigieren – neue Transaktionen werden nun nicht mehrfach erfasst, vielen Dank dafür!

    Es bleibt jedoch die Frage offen, wie ich nun im Nachgang die Fehlerhaften Einträge korrigieren kann. Der Fehler in unserem Fall war, dass in jeder Bestellung alle Artikel doppelt übermittelt wurden, einmal mit Netto Preis und einmal mit Brutto Preis.
    Somit müsste ich irgendwie aus den alten Transaktionen die Daten mit dem Netto Preis entfernen da diese falsch und doppelt sind.