Google Analytics 4 arbeitet mit der gtag.js-Bibliothek. Diese verwendet verschiedene Cookies, um z.B. Nutzer zu identifizieren. Folgende Cookies werden dabei von der gtag.js-Bibliothek für GA4 gesetzt:
- _ga: Dieses Cookie identifiziert Nutzer und hat eine Laufzeit von 2 Jahren.
- _gid: Wird auch genutzt, um Nutzer zu identifizieren. Hat aber eine Laufzeit von 24 Stunden.
- _ga_CONTAINER-ID: Hat eine Laufzeit von 2 Jahren und wird für die Sitzungsidentifizierung genutzt.
- _gac_gb_CONTAINER-ID: Wird nur gesetzt, wenn GA4 mit Google Ads verknüpft ist. Dieses Cookie enthält Informationen zu Kampagnen und wird dann von Google Ads ausgelesen.
Während also _ga und _gid für die Nutzer-Identifizierung genutzt werden, ist _ga_CONTAINER-ID für Sitzungen relevant und _gac_gb_CONTAINER-ID für Kampagnen (“CONTAINER-ID” ist dabei immer durch den entsprechenden Wert zu ersetzen).
Unterschied zwischen _ga und _gid
Die Frage ist daher was eigentlich der Unterschied zwischen _ga und _gid ist, da beide für die Nutzeridentifizierung genutzt werden. Der erste Unterschied liegt in der Cookie-Laufzeit. Während _ga eine Gültigkeit von 2 Jahren hat, liegt die Gültigkeit beim _gid-Cookie bei einem Tag.
Die genauen Unterschiede sind leider nicht dokumentiert von Google. Grundsätzlich ist aber bekannt, dass der Wert aus dem _ga-Cookie für das cid-Feld im Measurement Protocol genutzt wird:
Die cid ist die Client-ID, um die Hits einzelnen Nutzer zuzuordnen. Damit werden neue und wiederkehrende Nutzer bestimmt. Auch wird es für First- und Last-Touch-Attribution eingesetzt.
Beim _gid-Cookie gibt es leider nur Vermutungen und Annahmen:
- Es bezieht sich auf Google Signals und Cross-Device-Messungen
- Es wird immer dann gesetzt, wenn Google Signals innerhalb der GA4-UI aktiviert wurde oder das allow_google_signals-Feld auf “true” gesetzt wird
- Zusammen mit den Third-Party-Cookies von Google wird _gid genutzt, um Cross-Device-Daten zu sammeln
_ga_CONTAINER-ID
Das Cookie _ga_CONTAINER-ID wird von GA4 dazu verwendet, die Session-Kalkulation clientseitig durchzuführen. Hier ein Beispiel-Wert:
GS1.1.1653649205.1.0.1653649210.60
Der Wert kann in verschiedene Einzel-Teile zerlegt werden – immer durch den Punkt getrennt:
- GS1 ist ein fixes Prefix.
- 1 beschreibt soweit ich das verstehe die Tiefe des Cookie-Hostnamen. Klassischerweise würde GA4 bei meiner Seite das Cookie auf .demirjasarevic.com setzen, was den Wert 1 zurückgegeben würde. Bei .abc.demirjasarevic.com würde es den Wert 2 annehmen.
- 1653649205 ist der Start-Zeitpunkt der Session und wird auch im Feld &sid mitgegeben.
- 1 wäre dann die Anzahl der erzeugten Sessions für diesen Nutzer. Wird im Request als &sct-Parameter mitgegeben.
- 0 hat was (nach meinen Beobachtungen zumindest) mit dem letzten Wert zu tun – siehe dazu Erklärung des letzten Werts.
- 1653649210 wäre der Zeitpunkt des letzten Hits.
- 60 wird beim Start einer Sitzung zunächst auf 60 gesetzt wird (steht vermutlich für 60 Sekunden, also 1 Minute). So wie ich dies beobachtet und getestet habe, läuft dann ein Timer runter, der bei jedem Hit aktualisiert wird und dann bei jedem Hit auf den aktuellen runterlaufenden Timerwert gesetzt wird. Gleichzeitig der Wert vom vorletzten Punkt initial auf 0 gesetzt und bleibt so lange auf 0 – also false – bis der Timerwert zwischen 2 Hits eine höhere Differenz als 10 (Sekunden) aufweist. Bei einer Differenz > 10 wird dieser auf 1 gesetzt – also true. Ich vermute, dass das GA4 für die Berechnung von “Engaged Sessions” braucht (zumindest für den Zeitbasierten Aspekt von 10 Sekunden).
Cookie-Werte steuern
Falls man eigene IDs für die Client- und Sitzungs-Identifizierung setzen möchte, dann kann man das z.B. über das GA4-Config-Tag machen. Dazu müssen folgende Felder unter “Festzulegende Felder” gesetzt werden:
Die gesetzten Werte findet man dann entsprechend in den Cookies: