Glossar

Was gtag ist, wie es lädt und was jeder Befehl sendet

Taras Shynkarenko
Taras Shynkarenko
•Aktualisiert: •8 Min. Lesezeit
Was gtag ist, wie es lädt und was jeder Befehl sendetWas gtag ist, wie es lädt und was jeder Befehl sendet

TL;DR, Kurzantwort

8 Min. Lesezeit

gtag() ist die JavaScript-Funktion hinter dem Google-Tag (gtag.js). Jeder Aufruf legt einen Befehl in den dataLayer, und die Bibliothek gtag.js, die asynchron von googletagmanager.com geladen wird, liest diese Warteschlange und sendet Daten an Google Analytics, Google Ads und andere Google-Produkte. Die wichtigsten Befehle sind config, event, set, get und consent. Consent-Standardwerte müssen vor jedem config- oder event-Aufruf laufen, und wer sich mit JavaScript nicht wohlfühlt, den verweist Google auf Google Tag Manager.

Was ist gtag?

Die Funktion gtag() ist die JavaScript-API des Google-Tags, und jeder Aufruf legt einen Befehl wie config, event, set oder consent in eine Warteschlange namens dataLayer, die die Bibliothek gtag.js ausliest, um Daten an Google-Produkte zu senden. Googles Referenz fasst es in einem Satz zusammen: "The Google tag (gtag.js) API uses the gtag() function to send data to Google products like Google Analytics and Google Ads." Wenn der Quelltext einer Website gtag/js?id= lädt, läuft der Google-Tag dort direkt im eigenen Code der Website und nicht über einen Tag-Manager-Container.

Drei Namen werden hier gern verwechselt. gtag.js ist die Bibliotheksdatei. gtag() ist die Funktion, die Ihr Code aufruft. Der Google-Tag ist der Produktname, den Google für das gesamte Setup verwendet und als "a single tag you can add to your website to use Google measurement and advertising products like Google Ads, Google Analytics, Campaign Manager, Display & Video 360, and Search Ads 360" beschreibt.

Wie lädt gtag.js auf einer Seite?

gtag.js lädt über ein zweiteiliges Snippet, das Sie laut Google "immediately after the opening <head> HTML tag on every page you want to measure" platzieren sollen. Der erste Teil lädt die Bibliothek herunter, der zweite definiert die Funktion gtag() und reiht die ersten Befehle ein.

<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'TAG_ID');
</script>

Die Reihenfolge ist weniger wichtig, als sie aussieht. Die Bibliothek lädt mit async, also läuft das Inline-Skript zuerst. Weil gtag() nichts anderes tut als dataLayer.push(arguments), wartet jeder Befehl, den Sie vor dem Eintreffen der Bibliothek aufrufen, im Array dataLayer, und gtag.js arbeitet die Warteschlange ab, sobald es geladen ist. Deshalb können Sie gtag('event', ...) überall auf der Seite aufrufen, ohne zu prüfen, ob die Bibliothek bereit ist.

Die id in der Skript-URL ist eine Google-Tag-ID. Google nennt "GT-XXXXXXXXX, G-XXXXXXXXX, and AW-XXXXXXXXX" als Beispiele und merkt an, dass "the IDs can be used interchangeably when adding the Google tag to your website." Ein Google-Tag kann mehrere IDs tragen und an mehrere Ziele senden, etwa an eine Google-Analytics-Property und ein Google-Ads-Konto.

Was mit einem gtag-Aufruf passiert, bevor die Bibliothek geladen ist
Inline-Snippet definiert gtag()
Befehl landet im dataLayer
gtag.js kommt von googletagmanager.com an
Warteschlange wird der Reihe nach gelesen
Daten gehen an Google-Produkte
Wird die Anfrage für die Bibliothek blockiert, endet die Kette nach dem zweiten Schritt.

Was bewirken die gtag()-Befehle?

Die gtag()-Befehle sind fünf Verben, die jeweils als erstes Argument übergeben werden: config, event, set, get und consent. Die Tabelle verwendet Syntax und Wortlaut aus Googles API-Referenz.

BefehlSyntaxWas Google über seine Wirkung sagt
configgtag('config', '<TARGET_ID>', {...})"Lets you add additional configuration information to targets."
eventgtag('event', '<event_name>', {...})"Use the event command to send event data."
setgtag('set', {...})"Lets you define parameters that will be associated with every subsequent event on the page."
getgtag('get', '<target>', '<field_name>', callback)"Lets you get various values from gtag.js including values set with the set command."
consentgtag('consent', 'default' or 'update', {...})"Use the consent command to configure consent."

config leistet mehr, als seine Beschreibung vermuten lässt. Google schreibt: "The config command is needed to send data to Google advertisement products," und bei Google Analytics sendet der Standardaufruf von config zusätzlich ein page_view-Event. Um das zu verhindern, dokumentiert Google send_page_view: false, was Sie brauchen, wenn Sie Pageviews selbst senden, zum Beispiel in einer Single-Page-App.

set sollten Sie sparsam einsetzen. Google ergänzt: "We recommend using config or event commands wherever possible." Werte im Event-Scope überschreiben config-Werte, und config-Werte überschreiben alles, was global mit set gesetzt wurde.

consent kennt zwei Modi. 'default' legt den Ausgangszustand fest, bevor die Besucherin oder der Besucher auf Ihr Banner antwortet, und 'update' ändert ihn danach. Die vier Parameter im Consent Mode v2 sind ad_storage, analytics_storage, ad_user_data und ad_personalization. Der Leitfaden zum Google Consent Mode v2 erklärt, was die beiden neueren Signale hinzugefügt haben.

Hände schreiben eine nummerierte Checkliste in ein Notizbuch, als Bild für die feste Reihenfolge, in der gtag-Befehle laufen müssen.

In welcher Reihenfolge sollten gtag-Befehle laufen?

gtag-Befehle laufen in der Reihenfolge, in der Sie sie einreihen, und drei davon funktionieren nur, wenn sie vor dem ersten config- oder event-Aufruf stehen.

  1. Opt-out-Flag. window['ga-disable-MEASUREMENT_ID'] = true "must be set before any calls to gtag() are made, and it must be set on each page for which you want to turn off Analytics."
  2. Consent-Standardwerte. Google sagt, Sie sollen den Standardwert für jeden Consent-Typ "on every page of your site before any commands that send measurement data (such as config or event)" setzen. Wenn Ihr Consent-Tool asynchron lädt, ergänzen Sie wait_for_update mit einem Wert in Millisekunden.
  3. Globale Einstellungen. set-Aufrufe wie allow_google_signals: false kommen vor config, damit schon der erste Hit sie mitführt.
  4. config. Ein Aufruf pro Tag-ID.
  5. event. Alles danach.

Ein Consent-Standardwert, der nach config steht, kommt für den ersten Pageview zu spät. Das ist einer der unauffälligeren Wege, auf denen eine Website Hits sendet, die sie eigentlich zurückhalten wollte.

Wie hängen gtag, der Google-Tag und Google Tag Manager zusammen?

gtag.js und Google Tag Manager sind zwei Wege, denselben Google-Tag auszuliefern: Mit gtag.js schreiben Sie die Befehle in Ihren Seitencode, mit Tag Manager konfigurieren Sie sie in einer Weboberfläche, und das Container-Skript gtm.js lädt sie für Sie. Googles Leitfaden zu gtag.js sagt: "if you're unfamiliar with JavaScript, we recommend using Google Tag Manager instead of gtag.js."

gtag.js in der SeiteGoogle Tag Manager
Geladenes Skriptgtag/js?id=G-...gtm.js?id=GTM-...
Wo die Befehle liegenIm Code Ihrer WebsiteIn Tags und Triggern im GTM-Container
Wer das Tracking ändertEntwickler, per DeploymentJeder mit Container-Zugriff, per Veröffentlichung
Verwendete IDGoogle-Tag-ID (G-, AW-, GT-)Container-ID (GTM-), die dann den Google-Tag lädt

Beide teilen sich den dataLayer, also kann eine Website beide gleichzeitig betreiben. Das Risiko ist doppeltes Zählen. Google warnt zum Beispiel, dass Sie bei Tags, die über Tag Manager konfiguriert sind, nicht zusätzlich das automatische History-Tracking in Google Analytics aktivieren sollten, "as this can lead to double-counting page views." Dieselbe Logik gilt für ein fest eingebautes gtag-Snippet und einen Google-Tag in GTM, die beide auf dieselbe Mess-ID zeigen: Jeder sendet seinen eigenen page_view. Der Leitfaden zu den Datenschutzfolgen von Google Tag Manager behandelt die andere Seite dieser Entscheidung, nämlich wie viel Code ein Container anderen Leuten erlaubt, in Ihre Seiten einzufügen.

Eine rot-weiße Absperrung versperrt eine Straße, als Sinnbild für eine blockierte Anfrage, durch die keine gtag-Daten die Seite verlassen.

Flowsery
Flowsery

Jetzt 14 Tage kostenlos testen

Echtzeit-Dashboard

Zielverfolgung

Cookie-freies Tracking

Warum stoppen Werbeblocker gtag?

Werbeblocker stoppen gtag, indem sie die Anfrage nach der Bibliothek auf www.googletagmanager.com blockieren oder die Hits, die sie an Googles Erfassungs-Endpunkte sendet. Wenn die Skriptanfrage scheitert, existiert gtag() zwar weiterhin, weil das Inline-Snippet die Funktion definiert hat, aber niemand liest jemals die Warteschlange im dataLayer, also verlassen keine Daten die Seite. Der Leitfaden zu Werbeblockern und der Genauigkeit von Analytics-Daten erklärt, wie sich diese Lücke in Reports zeigt. Das Google Tag Gateway für Werbetreibende liefert den Tag von Ihrer eigenen Domain aus, wobei Googles Dokumentation zum Gateway Werbeblocker nicht erwähnt.

Wie prüfen Sie, was gtag sendet?

Sie prüfen, was gtag sendet, indem Sie die Netzwerkanfragen und Googles Debugging-Tools beobachten, nicht indem Sie das Snippet lesen. Googles eigene Leitfäden nutzen zwei davon: Tag Assistant, der die Befehle und die daraus entstandenen Hits zeigt, und DebugView in Google Analytics, das Events beim Eintreffen anzeigt, sobald der Debug-Modus aktiv ist. Filtern Sie im Browser das Netzwerk-Panel nach den Erfassungsanfragen und prüfen Sie, dass jeder Pageview und jedes Event genau einmal erscheint, mit den erwarteten Parametern. Die Checkliste zur Analytics-Prüfung geht dieselben Prüfungen für jeden Tracker durch.

Wie schneidet das Skript von Flowsery im Vergleich zu gtag ab?

Der Tracker von Flowsery ist ein einzelnes Script-Tag mit einer Website-ID, es gibt also keine Befehlswarteschlange, die Sie konfigurieren müssen, bevor Daten fließen. Fügen Sie <script defer data-fl-website-id="flid_******" src="https://cdn.flowsery.com/main.js"></script> in den Head ein, und Pageviews werden automatisch erfasst. Eigene Goals nutzen ein data-fs-goal-Attribut am Element oder einen Aufruf wie window.flowsery('signup'), und die Dokumentation von Flowsery zeigt einen kleinen Warteschlangen-Stub, window.flowsery.q, der Aufrufe festhält, die vor dem Laden des Skripts gemacht werden. Das ist dasselbe Muster, das gtag mit dem dataLayer nutzt. Das Skript hat außerdem eine cookielose Option, die einen täglich wechselnden Besucher-Hash verwendet und keine personenbezogenen Daten speichert. Das schlanke Skript ist kleiner als 10 KB und lädt asynchron. Wenn Ihr Team Tags bereits in Google Tag Manager verwaltet, enthält die Dokumentation von Flowsery ein Setup als Custom-HTML-Tag für GTM, sodass beide während einer Migration nebeneinander laufen können.

Häufig gestellte Fragen

Ist gtag dasselbe wie Google Tag Manager?

Nein. gtag.js ist die Bibliothek hinter dem Google-Tag, und gtag() rufen Sie aus Ihrem eigenen Seitencode auf. Google Tag Manager ist ein separater Container, der über gtm.js geladen wird und in dem Tags in einer Weboberfläche konfiguriert werden. Beide können denselben Google-Tag ausliefern.

Kann ich gtag() aufrufen, bevor gtag.js geladen ist?

Ja. Das Inline-Snippet definiert gtag() als Funktion, die ihre Argumente in das Array dataLayer legt. Aufrufe, die vor dem Eintreffen der Bibliothek erfolgen, warten in dieser Warteschlange, und gtag.js arbeitet sie nach dem Laden der Reihe nach ab.

Kann ein einziges gtag-Snippet Daten an Google Analytics und Google Ads senden?

Ja. Ein Google-Tag kann mit mehreren Zielen verbunden sein, etwa mit einer Google-Analytics-Property und einem Google-Ads-Konto. Ein einzelner Tag kann mehrere Tag-IDs tragen, und Google merkt an, dass diese IDs beim Einbau des Tags auf Ihrer Website austauschbar sind.

Warum sendet gtag einen page_view ohne event-Aufruf?

Der Standardaufruf von config für eine Google-Analytics-ID sendet von sich aus ein page_view-Event. Setzen Sie send_page_view: false, wenn Sie Pageviews manuell senden wollen. Auf Websites mit erweiterter Analyse feuern History-basierte Pageviews trotzdem weiter, solange Sie diese Option nicht auch im Datenstream abschalten.

Wo sollte das gtag-Snippet stehen?

Google sagt, Sie sollen es direkt nach dem öffnenden <head>-Tag auf jeder Seite platzieren, die Sie messen wollen. Ein Opt-out-Flag kommt in ein Skript vor dem Snippet, weil es laut Google vor jedem gtag()-Aufruf gesetzt sein muss. Consent-Standardwerte stehen im Snippet vor dem config-Aufruf, weil sie laut Google vor jedem Befehl laufen müssen, der Messdaten sendet.

Funktioniert gtag, wenn das Skript blockiert ist?

Es werden keine Daten gesendet. Der Inline-Teil des Snippets definiert gtag() weiterhin und füllt den dataLayer, aber ohne die Bibliothek gtag.js arbeitet niemand diese Warteschlange ab. Deshalb fehlen blockierte Besucher in Google Analytics, statt als Fehler aufzutauchen.

Was ist der Unterschied zwischen gtag.js, gtag() und dem Google-Tag?

gtag.js ist die Bibliotheksdatei, die von googletagmanager.com geladen wird. gtag() ist die Funktion, die Ihr Code aufruft, um Befehle in den dataLayer zu schreiben. Der Google-Tag ist Googles Name für das gesamte Setup, ein einzelner Tag, der Produkte wie Google Ads und Google Analytics abdeckt.

Welche Tag-ID-Formate kann ich im gtag-Snippet verwenden?

Google nennt GT-XXXXXXXXX, G-XXXXXXXXX und AW-XXXXXXXXX als Beispiele und schreibt, dass sich die IDs beim Einbinden des Google-Tags austauschbar verwenden lassen. Die ID steht im Parameter id der Skript-URL und in Ihrem config-Aufruf. Ein Google-Tag kann mehrere IDs tragen.

Wann sollte ich gtag('set') verwenden?

Nutzen Sie set für Parameter, die jedem folgenden Event auf der Seite mitgegeben werden sollen. Google empfiehlt, wo immer möglich config oder event zu verwenden. Werte auf Event-Ebene überschreiben Config-Werte, und Config-Werte überschreiben alles, was global gesetzt wurde. Wenn Sie set einsetzen, platzieren Sie es vor config, damit schon der erste Hit die Werte enthält.

Wie schalte ich Google Analytics mit einem gtag-Opt-out-Flag ab?

Setzen Sie window['ga-disable-MEASUREMENT_ID'] = true auf der Seite. Laut Google muss das geschehen, bevor ein Aufruf von gtag() erfolgt, und zwar auf jeder Seite, auf der Analytics deaktiviert werden soll.

War dieser Artikel hilfreich?

Teilen Sie uns Ihre Meinung mit!

Sehen Sie uns öfter bei Google

Ein Klick macht Flowsery zu einer bevorzugten Quelle. Unsere Artikel stehen dann weiter oben in Ihren Top-Meldungen, im KI-Modus und in den KI-Übersichten.

Bevor Sie gehen...

Flowsery

Flowsery

Umsatzorientierte Analysen für Ihre Website

Verfolgen Sie jeden Besucher, jede Quelle und jede Conversion in Echtzeit. Einfach, leistungsstark und komplett ohne Cookies.

Echtzeit-Dashboard

Zielverfolgung

Cookie-freies Tracking

Verwandte Glossarbegriffe

So setzen Sie Nutzereigenschaften in GA4 und werten sie in Reports ausSo setzen Sie Nutzereigenschaften in GA4 und werten sie in Reports aus
Glossar

So setzen Sie Nutzereigenschaften in GA4 und werten sie in Reports aus

So setzen Sie Nutzereigenschaften in GA4 per gtag oder Tag Manager, registrieren sie als nutzerbezogene Dimensionen und bleiben unter dem Limit von 25.

•8 Min. Lesezeit
So richten Sie die Content-Gruppierung in GA4 mit einem Parameter einSo richten Sie die Content-Gruppierung in GA4 mit einem Parameter ein
Glossar

So richten Sie die Content-Gruppierung in GA4 mit einem Parameter ein

So richten Sie die Content-Gruppierung in GA4 mit content_group per gtag oder Tag Manager ein, lesen die Dimension Content group und vermeiden (not set).

•8 Min. Lesezeit
Wie ein Opt-out für Google Analytics funktioniert und was jede Methode blockiertWie ein Opt-out für Google Analytics funktioniert und was jede Methode blockiert
Glossar

Wie ein Opt-out für Google Analytics funktioniert und was jede Methode blockiert

Ein Opt-out für Google Analytics kann ein Browser-Add-on, ein ga-disable-Flag oder verweigerter Consent sein. Was jede Methode blockiert und wo sie endet.

•8 Min. Lesezeit
Warum Ihre GA4-Absprungrate nur die umgedrehte Engagement-Rate istWarum Ihre GA4-Absprungrate nur die umgedrehte Engagement-Rate ist
Glossar

Warum Ihre GA4-Absprungrate nur die umgedrehte Engagement-Rate ist

Ihre GA4-Absprungrate ist der Anteil nicht engagierter Sitzungen. Wie Google sie definiert, was anders ist als in Universal Analytics und wo Sie sie ergänzen.

•7 Min. Lesezeit
Was der GA4-Landing-Page-Bericht zählt und wo er leer bleibtWas der GA4-Landing-Page-Bericht zählt und wo er leer bleibt
Glossar

Was der GA4-Landing-Page-Bericht zählt und wo er leer bleibt

Googles GA4-Landing-Page-Bericht listet die erste Seite jeder Session. Wo er liegt, Standardkennzahlen, Zeilen mit (not set) und wie Sie die Quelle ergänzen.

•8 Min. Lesezeit
Wie die GA4-Website-Suche erfasst, was Besucher eintippenWie die GA4-Website-Suche erfasst, was Besucher eintippen
Glossar

Wie die GA4-Website-Suche erfasst, was Besucher eintippen

So richten Sie die GA4-Website-Suche über Enhanced Measurement ein, ergänzen eigene Parameter, finden die Dimension Search term und messen Suchen ohne URL.

•8 Min. Lesezeit

Verwandte Artikel