Wie GTM und gtag Service Worker verwenden (und warum Ihre Ereignisse nicht in DevTools angezeigt werden)

Giovani Ortolani Barbosa

Giovani Ortolani Barbosa

Autor
Aktualisiert
20. Mai 2026
Auch erhältlich
!

⚠️ Dieser Beitrag basiert auf umfangreichen Debugging- und Experimentierarbeiten mit Google Tag Manager (GTM) und dem Google-Tag (gtag). Obwohl alle hier aufgeführten Details zum Zeitpunkt der Veröffentlichung korrekt sind, beachten Sie bitte, dass sich die Implementierungen von Google weiterentwickeln können und einige der hier beschriebenen Informationen dadurch veraltet sein können.

Im September 2024 führte Google die Verwendung von Service Workers in Google Tag Manager (GTM) ein, um die Leistung und Zuverlässigkeit der Messungen zu verbessern:

„Google Tag Manager kann einen Service Worker verwenden, um die Leistung und Zuverlässigkeit der Messungen zu verbessern. Um sicherzustellen, dass der Service Worker korrekt geladen wird, lesen Sie die Richtlinien zur Content Security Policy.“

Im März 2025 kündigte Google dann eine Erweiterung dieser Funktion an:

„Google Tag verwendet jetzt Service Worker, sofern verfügbar, um Daten an den serverseitigen Tag Manager zu senden und so die Leistung und Zuverlässigkeit der Messungen zu verbessern.“

In diesem Artikel wird erläutert, wie GTM und gtag mit Service Workers umgehen, was ein Service Worker ist, wie die Kommunikation zwischen ihnen erfolgt und warum Ihre Analyseanfragen möglicherweise nicht in der Registerkarte „Netzwerk“ von DevTools angezeigt werden.

Was sind Service Worker?

Service Worker sind Hintergrundskripte, die separat vom Hauptthread einer Website ausgeführt werden. Sie ermöglichen Vorgänge wie Caching, Offline-Unterstützung und Hintergrund-Netzwerkanfragen, ohne die Benutzeroberfläche zu blockieren.

Im Zusammenhang mit GTM und gtag werden Service Worker verwendet, um die Aufgabe des Sendens von Messdaten von der Webseite (z. B. GA4- oder Ads-Hits) auszulagern, wodurch das Tracking schneller und zuverlässiger wird, selbst bei Seitenentladeereignissen oder in langsamen Netzwerken. Beachten Sie, dass in diesem Zusammenhang die später zu sendenden Ereignisse nicht gespeichert werden.

Wie GTM und gtag Service Worker verwenden

Je nach Ihrer Konfiguration können zwei Arten von Service Workers registriert werden:

1. Service Worker von Ihrer serverseitigen GTM (sGTM)-First-Party-Domain

Wird für GA4-Anfragen verwendet, die an serverseitige Container gesendet werden.

2. Service Worker aus der Domain googletagmanager.com

Wird hauptsächlich von Anzeigenprodukten (Google Ads und Floodlight) für Formular- und Benutzerdatenanfragen verwendet.

Beide Versionen folgen einem ähnlichen Kommunikationsmodell, an dem mehrere Browser-Entitäten beteiligt sind.

Kommunikationsablauf

Wenn gtag oder GTM ausgeführt wird, erstellt es einen unsichtbaren iframe (src=“about:blank“), der wiederum einen weiteren iframe, sw_iframe.html, lädt. Dieser zweite iframe ist für die Installation des Service Worker-Skripts (sw.js) verantwortlich.

Diese Elemente kommunizieren über die postMessage()-API des Browsers (zum Senden der Informationen) und den message listener zum Empfangen der Informationen und bilden dabei folgenden Ablauf:

gtag/GTM ↔ iframe (about:blank) ↔ iframe (sw_iframe.html) ↔ sw.js (Service Worker)

Diese Brücke ermöglicht es gtag oder GTM, die auf der Hauptseite ausgeführt werden, Ereignisdaten an den Service Worker weiterzuleiten, der dann entscheidet, wie und wann diese gesendet werden.

Wenn Sie die Website-Seite mit der Registerkarte „Elemente” der DevTools untersuchen, können Sie die iframes sehen.

iframes auf der Registerkarte „Elemente“ der DevTools

Praktische Demonstration der zwischen dem iframe und dem Service Worker ausgetauschten Nachrichten:

  • Service Worker vom serverseitigen GTM (sGTM) der First-Party-Domain

 

  • Service Worker von der Domain googletagmanager.com

1. Service Worker, geladen von der sGTM-First-Party-Domain

Dieser Service Worker wird für GA4-Anfragen verwendet, die an einen serverseitigen GTM-Container gesendet werden.

Das GA4-gtag-Skript (G-{Measurement ID} usw.) ist für die Weiterleitung der Ereignisse an den Service Worker zuständig.

Es überprüft anhand verschiedener Bedingungen, ob ein Ereignis über den Service Worker gesendet werden soll:

  • Das Ereignis wird nicht direkt an analytics.google.com/g/collect oder www.google-analytics.com/g/collect gesendet (z. B. wenn der Parameter server_container_url konfiguriert ist).
  • Die Seite wird nicht entladen (beforeunload-Ereignis). Während des Entladens umgehen Anfragen wie user_engagement-Ereignisse den Service Worker.
  • Der Browser ist keine eingeschränkte Umgebung (wie WebView, Google App auf iOS oder Facebook- und Messenger-In-App-Browser).

- Genauer gesagt wird überprüft, ob der Browser-User-Agent KEINE der folgenden Zeichenfolgen enthält: „; wv“ ODER „FBAN“ ODER „FBAV“ ODER ((„GSA“ ODER „GoogleApp“) UND („iPhone“ ODER „iPad“))

Der Service Worker ist aktiv und bereit (Status 2).

- Diese Überprüfung wird durch die Methode .delegate() durchgeführt, die hier zu sehen ist.

Wenn alle Bedingungen erfüllt sind, wird das Ereignis über den Service Worker gesendet. Andernfalls wird es direkt über fetch, XHR, sendBeacon oder Image (in dieser Reihenfolge) von der Hauptseite gesendet.

Und wenn die ersten beiden Bedingungen erfüllt sind, wird der Parameter richsstsse zur Ereignis-URL hinzugefügt (weitere Informationen dazu). Dieser Parameter ermöglicht es dem Browser, die Antwort zu verarbeiten, z. B. das Senden von Anfragen, die vom sGTM für die Synchronisierung von Drittanbieter-Cookies angeordnet wurden.

2. Service Worker, geladen von der Domain googletagmanager.com

Dieser Service Worker scheint Ereignisse für Google Ads- und Floodlight-Produkte zu verarbeiten.

Einige Anfragen werden darüber abgewickelt, z. B.:

  • Von Nutzern bereitgestellte Google Ads-Ereignisse (Anfragen an https://www.google.com/ccm/form-data/{Conversion ID}/... und https://www.google.com/pagead/form-data/{Conversion ID}/...)
  • Automatisch erfasste Benutzerdatenereignisse (Anfragen an https://www.google.com/ccm/form-data/{Conversion ID}/... nur).

Das auf der Seite geladene Ads-Produkt-gtag-Skript (AW-{Conversion ID}DC-{Floodlight Config ID} usw.) ist für die Weiterleitung der Ereignisse an den Service Worker verantwortlich.

Die Bedingungen für die Verwendung dieses Service Workers sind ähnlich:

  • Das Tag ist so konfiguriert, dass es Benutzerdaten sendet, und der interne Parameter send_user_data_hit ist einer der folgenden:

- user_data_web: wird vom automatisch erfassten Benutzerdatenereignis verwendet

- user_data_lead: wird vom Google Ads-Ereignis „Vom Nutzer bereitgestellt“ verwendet

  • Die Seite wird nicht entladen (beforeunload-Ereignis).
  • Der Service Worker ist aktiv und bereit (Status 2).

- Diese Überprüfung erfolgt durch die Methode .delegate(), die hier zu sehen ist.

Wenn eine dieser Bedingungen nicht erfüllt ist, wird der Treffer wie gewohnt von der Hauptseite gesendet.

Die Methode .delegate

Sowohl gtag als auch GTM enthalten eine Methode namens .delegate, die die abschließende Überprüfung durchführt, bevor entschieden wird, ob das Ereignis über einen Service Worker oder die Hauptseite gesendet wird.

Die Logik ist einfach:

k.delegate = function (a, b, c) { this.getState() !== 2 ? (this.H.C( // Path 1: Not Ready - Sends event from main page. this.C, { state: this.getState(), hg: this.initTime, ng: Math.round(Ab()) - this.initTime }, void 0, a.commandType ), c({ // Call the failure callback failureType: this.C })) : this.N.wo(a, b, c); // Path 2: Ready - Sends events from Service Worker. };

Wenn der Status (state2 ist, wird die Anfrage über den Service Worker gesendet. Andernfalls über die Hauptseite.

Der Service Worker und die Hauptseite tauschen alle X Sekunden (derzeit 5 Sekunden) Heartbeat-Nachrichten aus, um diesen Status auf dem neuesten Stand zu halten. Die Statusvariable gibt die Bereitschaft des Service Workers an:

StatusBedeutung
0Anfangszustand bei der Initialisierung der Seite
1Versuch, eine Kommunikation zwischen der Hauptseite und dem Service Worker herzustellen
2Service Worker ist bereit, und der Handshake mit der Hauptseite war erfolgreich
3Wiederholung nach Fehler
4Schwerwiegender Fehler / Fehlgeschlagen / Kommunikationskanal ist geschlossen

So überprüfen Sie, ob Service Worker verwendet werden

Sie können die Verwendung von Service Workers auf verschiedene Weise überprüfen.

1. DevTools-Registerkarte „Netzwerk“

Filtern Sie nach Anfragen an sw.js oder sw_iframe.html.

i

Hinweis:

sw.js wird nur bei der ersten Registrierung angezeigt. Bei der nächsten Neuladung der Seite wird es nicht mehr angezeigt (es sei denn, Sie melden den Service Worker manuell ab).

Service Worker, der von der First-Party-Domain sGTM geladen wurde.

Service Worker von der sGTM-Erstanbieter-Domain auf der Registerkarte „Netzwerk“ in DevTools
Service Worker von der sGTM-Erstanbieter-Domain auf der Registerkarte „Netzwerk“ in DevTools

Service Worker, geladen von der Domain googletagmanager.com.

Service Worker von der Domain „googletagmanager.com“ auf der Registerkarte „Netzwerk“ in den DevTools

2. DevTools-Registerkarte „Anwendung“

Öffnen Sie DevTools → gehen Sie zur Registerkarte Anwendung → Service Worker → Klicken Sie auf Alle Registrierungen anzeigen und suchen Sie nach Ihrer Domain.

  • Wenn Sie GA4 zum Senden von Daten an sGTM verwenden: Sie sehen, dass der Service Worker von Ihrer sGTM-First-Party-Domain bereitgestellt wird.
Der Service Worker wird von der sGTM-Erstanbieter-Domain bereitgestellt

Wenn Sie Ads-Produkte von Google verwenden: Sie sehen, dass der Service Worker von googletagmanager.com bereitgestellt wird.

Der Service Worker wird von googletagmanager.com bereitgestellt

3. DevTools-Registerkarte „Netzwerk“

Anfragen, die von einem Service Worker bearbeitet werden, werden durch ein Zahnradsymbol neben der URL gekennzeichnet. Diese stehen für Zugriffe, die vom Hintergrundprozess und nicht von der Hauptseite gesendet werden.

Zahnrad-Symbole auf der Registerkarte „Netzwerk“ in DevTools

Warum einige Ereignisse nicht auf der Registerkarte „Netzwerk“ angezeigt werden

Wenn Ihre GA4- oder Ads-Ereignisse nicht auf der Registerkarte „Netzwerk“ der Hauptseite angezeigt werden, werden sie wahrscheinlich stattdessen vom Service Worker gesendet. Sie werden jedoch weiterhin im GTM-Vorschaumodus-Fenster angezeigt, wo Sie sie überprüfen können.

  1. Befolgen Sie die hier beschriebenen Schritte.
  2. Nachdem Sie den gewünschten Service Worker gefunden haben, klicken Sie auf „Untersuchen“, um das entsprechende DevTools-Fenster zu öffnen.
  3. Gehen Sie zur Registerkarte „Netzwerk“, wo Ihre fehlenden GA4- oder Ads-Anfragen angezeigt werden.

Möglicherweise werden bis zu zwei Service Worker angezeigt: einer für Ihre sGTM-Domain und einer für die Domain von Google. Jeder von ihnen verarbeitet verschiedene Arten von Ereignissen, wie oben beschrieben.

Fazit

Die schrittweise Integration von Service Workers in GTM und gtag durch Google markiert einen Wandel hin zu einer robusteren Form der Bereitstellung und Verarbeitung von Ereignissen. Durch die Auslagerung der Ereignisbereitstellung in Hintergrundskripte verbessert Google die Leistung, Zuverlässigkeit und Genauigkeit der Datenerfassung, insbesondere in Randfällen wie schnellen Absprüngen oder instabilen Verbindungen. Dies bedeutet jedoch auch, dass einige Anfragen nicht mehr auf der herkömmlichen Registerkarte „Netzwerk“ angezeigt werden.

Für Spezialisten im Bereich der digitalen Analyse bedeutet dies:

  • Gehen Sie nicht davon aus, dass fehlende Treffer im Netzwerk-Tab auf Tracking-Probleme hindeuten.
  • Überprüfen Sie vor der Fehlerbehebung die Service Worker-Aktivität.

Da diese Funktion ständig weiterentwickelt wird, ist es für eine genaue Fehlerbehebung und Datenzuverlässigkeit entscheidend, sich darüber im Klaren zu sein, wie gtag und GTM Service Worker nutzen.

Möchten Sie zur Serverseite wechseln?registrieren!

author

Giovani Ortolani Barbosa

Author

Giovani Ortolani Barbosa ist Integrationsingenieur bei Stape, spezialisiert auf GTM, GA, serverseitiges Tracking und digitale Analysen für präzise, skalierbare Marketingdaten.

Kommentare

Probieren Sie Stape für alles rund um Server-seitige