gtag.js lädt nicht? Measurement ID korrekt, trotzdem 404. Diesen GA4-Bug solltet ihr kennen.

In Kürze:

Beim Laden von gtag.js kann es passieren, dass Google einen 404-Fehler zurückgibt, obwohl die Measurement ID korrekt ist und die GA4 Property existiert. Das Problem liegt auf der Google-Seite und hängt damit zusammen, welche Tag-ID im Google Tag hinterlegt ist. Die Lösung: In der Google Tag-Verwaltung eine alternative Measurement ID verwenden, die unter den Tag-Zielen der Property gelistet ist. Das tritt vor allem dann auf, wenn der Google Tag mehrere Ziele bedient, also etwa GA4, Google Ads und das Merchant Center gleichzeitig.


Was ist passiert?

Bei einem aktuellen Kundenprojekt setzen wir auf Server-Side Tracking mit Stape. Der Custom Loader für den Google Tag Manager funktionierte einwandfrei. Container wurde geladen, Tags feuerten. Alles sah gut aus.

Bis auf eine Sache: Beim Laden von gtag.js kam ein 404-Fehler zurück.

Die Fehlermeldung sah so aus:

404. That’s an error. The requested URL /gtag/js?id=G-XXXXXXXXXX was not found on this server. That’s all we know.

Erste Reaktion: Tippfehler in der Measurement ID? Nein. Die ID war korrekt, die GA4 Property existierte und war aktiv. Trotzdem lieferte Google einen 404.

Die Fehlersuche

Mein erster Gedanke war, dass das Problem beim Custom Loader liegt. Vielleicht ein Konfigurationsfehler bei Stape, ein DNS-Problem mit der Subdomain oder ein Fehler im Proxy-Setup.

Also habe ich systematisch getestet:

Test 1: Custom Loader prüfen Der GTM Container wurde korrekt über den Custom Loader geladen. Kein Problem hier.

Test 2: gtag.js direkt aufrufen Auch der direkte Aufruf von gtag.js mit der Standard-URL und der Measurement ID lieferte den 404. Der Custom Loader war also nicht schuld.

Test 3: Andere Measurement ID einsetzen Hier kam der entscheidende Test. Ich habe die Measurement ID durch eine andere GA4 Property ersetzt. Das Ergebnis: gtag.js wurde problemlos geladen. Über dieselbe Subdomain, denselben Custom Loader, dieselbe Infrastruktur.

Das bedeutete: Das Problem lag nicht bei der Infrastruktur, sondern bei dieser spezifischen Measurement ID auf der Google-Seite.

Was ist die Ursache?

Der Fehler liegt auf der Google-Seite der GA4 Property.

Aber warum passiert das? Die Antwort hängt mit der Architektur des Google Tags zusammen.

Seit Google den „Google Tag“ eingeführt hat, können unter einem einzelnen Tag mehrere Ziele konfiguriert sein. Ein Google Tag kann gleichzeitig Daten an GA4, Google Ads, das Google Merchant Center und weitere Google-Produkte senden. Jedes dieser Ziele hat seine eigene ID.

Wenn ihr in der Google Tag-Verwaltung nachschaut, seht ihr unter „Tag-Ziele“ eine Liste aller verbundenen Produkte mit ihren jeweiligen IDs. Das können sein:

  • Eine GA4 Measurement ID wie G-XXXXXXXXXX
  • Eine Google Ads Conversion ID wie AW-XXXXXXXXX
  • Eine Merchant Center ID

Das Problem entsteht, wenn die primäre ID, die ihr für gtag.js verwendet, auf der Google-Seite nicht korrekt provisioniert ist. Die ID existiert, sie ist gültig, aber Google kann die zugehörige gtag.js-Konfiguration nicht auflösen. Das führt zum 404.

Die Lösung

Die Lösung ist erfreulich einfach:

  • Schritt 1: Google Tag-Verwaltung öffnen Geht in eure GA4 Property unter Verwaltung und öffnet die Google Tag-Einstellungen.
  • Schritt 2: Tag-Ziele prüfen Unter „Tag-Ziele“ seht ihr alle verbundenen IDs. Wenn euer Google Tag mehrere Ziele hat, stehen dort mehrere IDs.
  • Schritt 3: Alternative ID verwenden Ersetzt die Measurement ID in eurem gtag-Setup durch eine der anderen gelisteten IDs. Die GA4 Events müssen weiterhin die Measurement ID haben.
  • Schritt 4: Testen Nach dem Austausch der ID wurde gtag.js sofort korrekt geladen. Kein 404 mehr.

Wichtig: Google Tag ID vs. Measurement ID im Server-Side Setup

Wenn beim Laden von gtag.js die Measurement ID mit dem Präfix G- einen 404-Fehler liefert, kann stattdessen die Google Tag ID mit dem Präfix GT- im Basis-Tag eingesetzt werden. Das ist ein Workaround, in meinen Augen aber ein Fehler auf der Google-Seite. Die gtag.js sollte auch mit einer gültigen Measurement ID korrekt geladen werden.

Die GA4 Event-Tags im Server-Side Container verwenden weiterhin die Measurement ID mit dem Präfix G-. Nur der gtag Basis-Tag wird auf die GT-ID umgestellt.

Kurz zusammengefasst:

  • gtag.js Basis-Tag → Google Tag ID (GT-XXXXXXXXX)
  • GA4 Event-Tags konfigurieren → Measurement ID (G-XXXXXXXXXX)

Tipp zum Testen: Überprüft das Setup im GTM Preview Mode. Wenn die GA4 Event-Tags eine GT-ID statt der G-Measurement ID enthalten, kann im Server-Side Container der Fehler „Invalid Measurement ID for the GA4 event tag“ erscheinen. Das ist ein klarer Hinweis, dass die IDs vertauscht sind. Nur der gtag Basis-Tag darf eine GT-ID verwenden. Alle GA4 Event-Tags benötigen zwingend die Measurement ID mit dem Präfix G-.

Wann tritt das Problem auf?

Basierend auf meiner Erfahrung und dem Feedback vom Stape Support tritt dieses Problem vor allem in folgenden Szenarien auf:

Mehrere Tag-Ziele unter einem Google Tag Wenn euer Google Tag sowohl GA4 als auch Google Ads und das Merchant Center bedient, erhöht sich die Wahrscheinlichkeit, dass eine der IDs nicht korrekt aufgelöst wird.

Migrierte oder umkonfigurierte Properties Properties, die von Universal Analytics migriert wurden oder bei denen nachträglich Tag-Ziele hinzugefügt oder entfernt wurden, scheinen anfälliger für dieses Problem zu sein.

Wie ihr das Problem diagnostiziert

Falls ihr auf einen ähnlichen 404-Fehler stoßt, hier ein strukturierter Diagnoseweg:

1. Measurement ID prüfen Stellt sicher, dass die ID korrekt ist. Klingt banal, ist aber der erste Schritt.

2. gtag.js direkt im Browser aufrufen Ruft die URL https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX direkt im Browser auf. Wenn ihr hier einen 404 bekommt, liegt das Problem definitiv auf der Google-Seite und nicht bei eurem Setup.

3. Mit einer bekannten funktionierenden ID testen Ersetzt eure Measurement ID durch eine andere, von der ihr wisst, dass sie funktioniert. Wenn gtag.js damit lädt, ist klar: Die Infrastruktur funktioniert, das Problem liegt bei der spezifischen ID.

4. Tag-Verwaltung prüfen Öffnet die Google Tag-Einstellungen und schaut euch die verfügbaren Tag-Ziele an. Testet alternative IDs.

5. Neue Test-Property erstellen Als letzten Test könnt ihr eine neue GA4 Test-Property erstellen und deren Measurement ID verwenden. Wenn diese funktioniert, bestätigt das, dass das Problem bei der ursprünglichen ID liegt.

Zusammenfassung

Dieser Bug ist ärgerlich, weil er schwer zu diagnostizieren ist. Die Measurement ID ist korrekt, die Property existiert, alles sieht richtig aus. Trotzdem: 404. Die natürliche Reaktion ist, die eigene Infrastruktur zu hinterfragen, den Custom Loader, das DNS, die Stape-Konfiguration. Dabei liegt das Problem auf der Google-Seite.

Die Lösung ist simpel: Prüft die Google Tag-Verwaltung, schaut euch die alternativen Tag-Ziel-IDs an und verwendet eine funktionierende. Das kostet fünf Minuten statt fünf Stunden Debugging.


FAQ

Warum liefert Google einen 404 für meine gtag.js, obwohl meine Measurement ID korrekt ist?

Das sieht nach einem Fehler auf der Google-Seite aus. Die Measurement ID ist gültig, die GA4 Property existiert, aber Google kann die zugehörige gtag.js-Konfiguration trotzdem nicht auflösen. Das passiert vor allem, wenn der Google Tag mehrere Ziele bedient. Als Workaround kann im gtag Basis-Tag statt der Measurement ID mit dem Präfix G- die Google Tag ID mit dem Präfix GT- eingesetzt werden. Die GA4 Event-Tags im Container benötigen weiterhin die Measurement ID mit G-, um Daten an GA4 senden zu können.

Wie prüfe ich, ob gtag.js überhaupt korrekt geladen wird?

Öffnet die Chrome DevTools mit Rechtsklick und „Untersuchen“, dann den Network-Tab. Sucht dort nach „gtag“ oder „collect“. Ihr solltet einen Request an googletagmanager.com/gtag/js?id=G-XXXXXXXXXX sehen. Wenn der Status 200 ist, funktioniert alles. Bei 404 liegt das Problem auf der Google-Seite. Zusätzlich könnt ihr den GA4 DebugView nutzen, um zu prüfen, ob Events tatsächlich in eurer Property ankommen.

Diesen Beitrag zusammenfassen oder teilen: