Checkliste zur Fehlersuche
Die typischen Probleme beim Conversion Tracking für Google Ads lassen sich in diese Gruppen unterteilen:
Über den Autor
Julian Kleinknecht ist Geschäftsführer bei ConversionBoosting und unterstützt Unternehmen seit mehr als 14 Jahren bei Webanalyse und Tracking. Er teilt Erkenntnisse hier, auf LinkedIn und auf YouTube.
Unser Versprechen: Wir haben schon für etliche Projekte das Conversion Tracking für Google Ads gefixt. Ich schreibe hier nur über Themen, zu denen wir schon viel Erfahrung gesammelt haben.
Conversion-Tracking wird für Google Ads immer wichtiger. Ohne Daten kann der Algorithmus nichts optimieren.
Leider macht das Tracking immer mal wieder Probleme. Aktuell löse ich für mehr als 20 Agenturen regelmäßig ihre Tracking-Probleme.
Hier meine Schritt-für-Schritt-Anleitung, wie ich Ursachen identifiziere und auch direkt behebe.
Ausgangslage: Unter Zielvorhaben
> Conversions
werden gar keine Conversions gemessen. Der Status steht auf Inaktiv
.
Übersicht der möglichen Ursachen
Wenn gar keine Conversions gemesssen werden, ist häufig eine der folgenden Ursachen verantwortlich:
Ohne GTM bzw. gtag kann das Tracking nicht klappen. Gründe für einen fehlenden Container oder gtag gibt es viele:
Um zu prüfen, ob der Google Tag Manager vorhanden ist, öffnet man die Entwickler-Tools im Browser (F12 auf Windows, fn + F12 bei Mac). Dann zum Tab Netzwerk
wechseln und nach gtm.js
filtern.
Wichtig:
Nächste Schritte
Briefing / Ticket für Entwickler schreiben, dass der GTM bzw. das gtag implementiert wird.
In seltenen Fällen wird der falsche GTM-Container bzw. gtag eingebunden.
Deshalb im Netzwerk-Tab der Entwickler-Tools (F12 auf Windows, fn + F12 bei Mac) prüfen, ob die ID mit der Anzeige im Tool übereinstimmt (siehe vorheriger Punkt).
Unter Zielvorhaben
> Conversions
wählt man eine Conversion aus und klickt auf Tag selbst einfügen
:
In diesem Beispiel ist die ID AW-435430707
. Die ID kann auch das Format G-ABCD1234
haben.
Nächste Schritte
Briefing / Ticket für Entwickler schreiben.
Jedes Tag im GTM braucht einen Trigger, der es auslöst. Deshalb in der Vorschau des GTM (Tag Assist) eine Test-Conversion durchführen und prüfen, ob das gewünschte Tag ausgespielt wird.
In Vorschau ansehen
starten.Beim In-den-Warenkorb-Legen wird hier das dataLayer-Event add_to_cart
ausgeführt. Es wird jedoch kein Tag ausgespielt:
Nach einem Klick auf Show
bei Tags Not Fired
sucht man das Tag aus, das eigentlich feuern sollte.
Häufige Gründe hierfür sind:
Hier steht add_to_cart
– der hinterlegte Trigger ist jedoch addToCart
.
Im GTM wird zwischen Groß- und Kleinschreibung unterschieden. Deshalb darauf achten.
Nächste Schritte
Trigger anpassen
In der Liste links findet sich gar kein passender Eintrag.
Nächste Schritte
Entwickler briefen, dass sie einen dataLayer-push integrieren.
Häufig ist ein solcher weiterer Parameter die Abfrage, ob Besucher Tracking zugestimmt haben.
In diesem Fall stimmt zwar der dataLayer-push. Die Anforderung, dass der Consent-Cookie marketing
enthält, ist jedoch nicht erfüllt.
Nächste Schritte
weitere Parameter im Trigger anpassen (oder Reihenfolge anpassen, siehe nächster Punkt).
Um den Datenschutz zu berücksichtigen, dürfen Tags erst ausgespielt werden, wenn die Zustimmung der Besucher vorhanden ist.
Eine häufige Komplikation: Die Information, ob Besucher Consent gegeben haben, liegt erst vor, nachdem der dataLayer-push ausgespielt wurde:
Im Tag wurde aber angenommen, dass der Consent schon vorhanden ist.
Dieses Problem ist manchmal nicht offensichtlich, weil die Information zum Consent in manchen Fällen vorhanden ist — in manchen aber nicht.
Nächste Schritte
Trigger-Gruppen einsetzen (wenn Tags beim Seitenaufruf ausgespielt werden)
Statt einem Trigger view_item
mit der Einschränkung des Consent erstellt man eine Trigger-Gruppe. Diese kombiniert mehrere Trigger zu einem: Es müssen beide Trigger ausgelöst werden, damit die Trigger-Gruppe feuert.
In diesem Fall wird der Trigger consent_status
mit dem Trigger view_item
kombiniert.
In der Vorschau des Google Tag Managers erscheint ein weiterer Eintrag links in der Liste der dataLayer-pushes. Die Trigger-Gruppe dann als neuen Trigger verwenden.
Achtung: Eine Trigger Gruppe wird nur einmal pro Seitenaufruf gefeuert. Bei Events wie z.B. add_to_cart sollte man daher auf die Verwendung von Trigger Gruppen verzichten.
Bei Events wie dem Kauf oder einem abgeschickten Formular (auf einer nächsten Seite) kann man davon ausgehen, dass die Information zum Consent schon vorhanden ist. Die Consent-Abfrage erfolgt schließlich auf einer Seite davor.
Statt aus dem dataLayer auszulesen, ob Consent vorliegt, kann man den Cookie des Consent-Tools auslesen. Dieser steht auf jeden Fall zur Verfügung.
Beispiel des Cookies von Borlabs 3:
Beispiel des Cookies von CookieBot:
Im Google Tag Manager führt man zwei Schritte durch:
1st Party Cookie
anlegen.google-analytics
(für Borlabs) oder marketing:true
(für CookieBot) enthältKurz zum Hintergrund: Den Consent Mode V2 gibt es in zwei Varianten:
Einige Websites verwenden ungewollt den Advanced Mode
.
Dies passiert, wenn eine Conversion gemessen wird, bevor der Consent vorhanden ist. Dann sendet Google das Signal gcs=G100
(das heißt, der Advanced Mode ist aktiv).
Diese Conversions werden nicht normal gemessen, sondern als Grundlage fürs Modelling verwendet. Und dieses funktioniert erst ab 700 Anzeigenklicks pro Woche.
Nächste Schritte
Consent Mode V2 (korrekt) aufsetzen. Insbesondere, darauf achten, dass Conversions erst nach dem Consent gemessen werden. Weitere Informationen gibt es unter https://conversionboosting.com/themen/consent-mode-v2/
Der JavaScript-Code für gtag wird direkt in die Website integriert. Falls es oberhalb des gtag-Codes einen JavaScript-Fehler gibt, kann der gtag-Code nicht ausgeführt werden. Es wird nichts gemessen.
Um auf JavaScript-Fehler zu prüfen, öffnet man die Entwickler-Tools im Browser (F12 auf Windows, fn + F12 bei Mac) und wechseln in das Tab Console
.
In diesem Beispiel gibt es einen JavaScript-Fehler, weil in Zeile 594 ein Zeilenumbruch vorhanden ist (siehe untere Box). Die obere schwarze Box weist auf den JavaScript-Fehler hin.
Nächste Schritte
JavaScript-Fehler korrigieren bzw. Entwickler dazu briefen.
Werden gar keine Conversions gemessen, ist es häufig relativ einfach, das Problem zu bestimmen. Werden dagegen nur ein Teil der Conversions gemessen, ist es komplizierter.
Im ersten Schritt sollte das Ausmaß des Problems identifiziert werden: Wie viele echte Conversions gibt es im Shopsystem bzw. CRM vs. wie viele Conversions werden in Google Ads gemessen?
Übersicht der möglichen Ursachen
Wenn zu wenig Conversions gemesssen werden, ist häufig eine der folgenden Ursachen verantwortlich:
Abhängig von der Darstellung des Cookie-Banners gibt nur ein bestimmter Teil der Besucher Zustimmung zur Messung in Google Ads.
Zustimmen
und Ablehnen
gleichwertig angezeigt, kann man von einer Zustimmung zum Tracking von 50 % ausgehen. Entsprechend werden auch nur ungefähr 50 % der Conversions gemessen.Zustimmen
im Vordergrund, kann man von einer Rate zwischen 70 und 95 % ausgehen. (Dies gilt nur, wenn der Banner so integriert ist, dass man eine Auswahl treffen muss, bevor man die Website verwendet.)Nächste Schritte
Entspricht die Zustimmungsrate ungefähr dem Anteil der gemessenen Conversions, liegt kein Problem vor. Man kann nur versuchen, mit dem Datenschützer zu argumentieren und „Zustimmen“ weiter in den Vordergrund zu stellen.
Die meisten Consent-Tools bieten auch eine Übersicht über die Zustimmung. Hier am Beispiel von UserCentrics:
Gerade auf B2B-Websites und solchen mit eher technisch versierten Besuchern setzen viele Personen AdBlocker ein.
Laut Schätzungen sind dies weniger als 10 % der Besucher. Auf mobilen Geräten ist der Anteil noch geringer.
Nächste Schritte
Server-seitiges Tracking hilft dabei, auch Besucher mit AdBlocker zu messen. Weitere Informationen findet man in unserem Webinar zu Server-Side Tracking für GA4, Meta & Co.
Oben wurde der Fall beschrieben, dass Trigger (gar) nicht funktionieren, weil zum Beispiel ein dataLayer push fehlt.
In manchen Fällen funktionieren Trigger nur manchmal nicht. Einige Beispiele:
Auf der Danke-Seite haben Besucher ihr Ziel erreicht. Einige Besucher sehen die Nachricht „alles hat geklappt“ und verlassen die Seite schnell.
In einigen Fällen wurde das Tag nicht ausgeführt. Insbesondere, wenn die Website eher langsam lädt und der Container des Google Tag Managers groß ist.
In den Entwickler-Tools von Chrome kann man langsamere Internetverbindungen simulieren. Mir dieser Drosslung sollte man einige Test-Conversions durchführen, um ein Gefühl und konkrete Werte in Sekunden zu bekommen, wie lange es braucht, bis die Conversion-Tags ausgeführt werden.
Übersicht der möglichen Ursachen
Wenn Umsatz in Google Ads fehlt, ist häufig eine der folgenden Ursachen verantwortlich:
Für Online-Shops sollten der Umsatz auf jeden Fall dynamisch je Bestellung übergeben werden.
Siehe diese Einstellung:
Im Google Tag Manager wurde der Parameter einfach nicht mit der passenden Variable befüllt.
Nächste Schritte
Conversion-Wert im Tag anpassen.
Ohne Information aus dem dataLayer kann der Wert nicht übergeben werden.
Nächste Schritte
Briefing für IT verfassen.
Wird ein Plugin für Online-Shops verwendet, stehen die Informationen in fast allen Fällen im korrekten Format zur Verfügung.
Wird der dataLayer von einem Entwickler von Hand geschrieben, kann es zu Leichtsinnsfehlern kommen. Der häufigste: Statt einem Punkt wird als Dezimaltrennzeichen ein Komma verwendet.
Nächste Schritte
Briefing für IT schreiben und Komma durch Punkt tauschen.
Dies passiert, wenn es zum Beispiel zwei dataLayer pushs für purchase
gibt, aber nur bei einem der Umsatz vorhanden ist.
Dann wird nur der dataLayer push verwenden, wenn der Wert vorhanden wird.
Auch wenn der andere dataLayer push zuerst kommt. Denn es wird sonst immer nur die erste Conversion gemessen — auch wenn bei ihr Informationen wie der Umsatz fehlen.
Ohne Parameter Währung
wird der Umsatz nicht an Google Ads übermittelt.
Bei Websites mit nur einer Währung den Parameter fest auf EUR
, CHF
, usw. stellen.
Bei Website mit mehreren Währungen diese Information dynamisch aus dem dataLayer auslesen.
Gibt es je Domain oder Verzeichnis verschiedene Währungen, kann auch eine Lookup-Tabelle zum Einsatz kommen:
Dieses Problem kommt seltener vor. Vorwiegend, weil sich fehlende Conversions (vor allem bei Besuchern ohne Consent) mit zu viel gemessenen Conversions aufwiegen.
Es scheint so, als ob alle Conversions gemessen werden. In Wahrheit werden aber bestimmte Conversions doppelt gemessen — andere gar nicht.
Im Tag Assist des Google Tag Managers erkennt man an dieser Anzeige, dass ein Tag mehrmals ausgespielt wurde.
Es gibt verschiedene Gründe dafür.
Nächste Schritte
Briefing für IT schreiben.
Wird eine eindeutige Transaktions-ID je Conversion übergeben, de-dupliziert Google Ads automatisch alle doppelten Conversions. Fehlt die Transaktions-ID, klappt dies nicht.
Nächste Schritte
Transaktions-ID aus dataLayer auslesen (bzw. IT briefen, dass sie diese Information ergänzen soll).
Diese Einstellung führt dazu, dass auch Conversions ohne Transaktions-ID de-dupliziert werden.
Nächste Schritte
Zählmethode anpassen.
Durch Enhanced Conversions sollen Conversions auch gemessen werden, wenn kein Google-Ads-Cookie (mehr) vorhanden ist. So können mehr Conversions gemessen werden.
Dabei werden Nutzerinformationen, wie ein Name oder eine E-Mail-Adresse bei der Conversion an Google übertragen. Ist ein Google-Konto zu den Nutzerinformationen vorhanden, kann den Anzeigen, auf welche diese Person geklickt hat, die Conversion zugeschrieben werden. Auch wenn der Cookie gelöscht wurde.
Übersicht der möglichen Ursachen
Wenn Enhanced Conversion nicht funktioniert, ist häufig eine der folgenden Ursachen verantwortlich:
So überprüft man, ob die Nutzerinformationen korrekt an Google übermittelt werden:
Netzwerk
-Tab navigieren/conversion
filternNutzlast
/Payload
navigierenDer Parameter em
sollten mit tv.1~em
beginnen und dann auf einer langen Zeichenkette bestehen. Dann klappt es.
Ist der Parameter em
leer oder fehlt der String nach tv.1~em
klappt etwas nicht.
Am besten liest man die Nutzerinformationen aus dem dataLayer aus. Wenn sie im dataLayer nicht vorhanden sind, klappt das natürlich nicht.
Nächste Schritte
Briefing für IT schreiben:
dataLayer.push({
event: "purchase",
ecommerce: {
…
},
visitorContactInfo: {
email: "test@test.de",
phone_number: "+498912345678",
address: {
first_name: "test",
last_name: "test",
street: "test 1",
city: "münchen",
region: "DE-BY",
postal_code: "81541",
country: "DE"
}
}
})
Wichtig: Die Informationen müssen zum Zeitpunkt schon zur Verfügung stehen, wenn das Tag an Google Ads geschickt wird. Werden die Informationen erst später in den dataLayer geschrieben, klappt es nicht. Sollte dieses Problem auftreten, den Trigger so anpassen, dass gewartet wird, bis die Nutzerinformationen vorhanden sind.
Sind die Nutzerinformationen im dataLayer nicht vorhanden, können sie auch aus dem Quelltext der Seite ausgelesen werden.
Dieser Ansatz ist weniger zuverlässig. Denn ändert sich der Quelltext, kann es sein, dass der CSS-Selektor z.B. die E-Mail-Adresse nicht mehr passend herausgreift.
Nächste Schritte
CSS-Selektor anpassen (und idealerweise Briefing für dataLayer schreiben).
Anders als bei E-Mail-Adressen gibt es bei Telefonnummer verschiedene Wege, sie zu schreiben:
Damit die Telefonnummer angenommen wird, muss sie im E.164-Format übergeben werden. Das heißt, im Format mit Ländervorwahl, ohne Trennstriche und ohne Leerzeichen. Zum Beispiel +4901774927111.
Alle anderen Formate (insbesondere wie dieses ohne Ländervorwahl) funktionieren nicht:
Nächste Schritte
Format der Telefonnummer im dataLayer anpassen. Oder eine JavaScript-Funktion schreiben, welches Leerzeichen und Bindestriche entfernt.
Unser Versprechen: Wir haben schon für etliche Projekte das Conversion Tracking für Google Ads gefixt. Ich schreibe hier nur über Themen, zu denen wir schon viel Erfahrung gesammelt haben.
Über den Autor
Julian Kleinknecht ist Geschäftsführer bei ConversionBoosting und unterstützt Unternehmen seit mehr als 14 Jahren bei Webanalyse und Tracking. Er teilt Erkenntnisse hier, auf LinkedIn und auf YouTube.
Du hast Fragen?
Schreib hier eine Nachricht oder kontaktiere mich bei LinkedIn