Cookies und Nutzeridentifizierung

Damit in Google Analytics festgestellt werden kann, dass zwei unterschiedliche Treffer demselben Nutzer zugeordnet sind, muss für jeden Treffer eine eindeutige Kennung gesendet werden.

Zu diesem Zweck wird in der analytics.js-Bibliothek das Feld Client-ID verwendet. Dabei handelt es sich um einen eindeutigen, zufällig generierten String, der in den Browser-Cookies gespeichert wird, sodass nachfolgende Besuche derselben Website demselben Nutzer zugeordnet werden können.

Standardmäßig verwendet analytics.js ein einzelnes Erstanbieter-Cookie namens _ga zum Speichern der Client-ID, aber der Name, die Domain und die Ablaufzeit des Cookies können angepasst werden. Weitere von analytics.js erstellte Cookies sind _gid, AMP_TOKEN und _gac_<property-id>. Diese Cookies speichern andere zufällig generierte IDs und Kampagneninformationen über den Nutzer.

Mithilfe von Cookies kann analytics.js einzelne Nutzer über verschiedene Browsersitzungen hinweg identifizieren, aber nicht über verschiedene Browser oder Geräte hinweg. Wenn deine Website ein eigenes Authentifizierungssystem hat, kannst du zusätzlich zur Client-ID die User-ID-Funktion verwenden, um einen Nutzer auf allen Geräten, mit denen er auf deine Website zugreift, präziser zu identifizieren.

In diesem Leitfaden wird erläutert, wie Sie die Cookie-Einstellungen anpassen und das User-ID-Feld festlegen, um die Nutzeraktivität über Sitzungen hinweg genauer messen zu können.

In der folgenden Tabelle sehen Sie die Standardwerte für Cookie-Felder, die von analytics.js verwendet werden:

Feldname Werttyp Standardwert
cookieName Text _ga
cookieDomain Text Das Ergebnis des folgenden JavaScript-Ausdrucks:
document.location.hostname
cookieExpires Ganzzahl 63072000 (zwei Jahre in Sekunden)
cookieUpdate boolean true
cookieFlags Text

Wenn Sie einen dieser Werte ändern möchten, können Sie sie in fieldObject angeben und den Befehl create übergeben. Beispiel:

ga('create', 'UA-XXXXX-Y', {
  'cookieName': 'gaCookie',
  'cookieDomain': 'blog.example.co.uk',
  'cookieExpires': 60 * 60 * 24 * 28  // Time in seconds.
  'cookieUpdate': 'false',
  'cookieFlags': 'SameSite=None; Secure',
});

Das am häufigsten verwendete Cookie-Feld ist cookieDomain. Daher akzeptiert der Befehl create das Feld cookieDomain als optionalen dritten Parameter:

ga('create', 'UA-XXXXX-Y', 'blog.example.co.uk');

Im empfohlenen Google Analytics-Tag wird der String 'auto' für das Feld cookieDomain festgelegt:

ga('create', 'UA-XXXXX-Y', 'auto');

Wenn Sie 'auto' als cookieDomain festlegen, wird die automatische Konfiguration der Cookie-Domain aktiviert. Damit wird von analytics.js automatisch die beste Cookie-Domain ermittelt.

Bei der automatischen Konfiguration der Cookie-Domain wird das _ga-Cookie auf der obersten Domainebene festgelegt. Wenn Ihre Websiteadresse beispielsweise blog.example.co.uk lautet, legt analytics.js die Cookie-Domain auf .example.co.uk fest. Wenn analytics.js erkennt, dass Sie einen Server lokal ausführen (z.B. localhost), wird cookieDomain automatisch auf 'none' gesetzt.

Jedes Mal, wenn ein Treffer an Google Analytics gesendet wird, entspricht die Ablaufzeit des Cookies der aktuellen Zeit plus dem Wert des Felds cookieExpires. Wenn Sie also die standardmäßige cookieExpires-Zeit von zwei Jahren verwenden und ein Nutzer jeden Monat Ihre Website besucht, läuft sein Cookie nie ab.

Wenn Sie die Zeit cookieExpires auf 0 (null) Sekunden setzen, wird das Cookie in ein sitzungsbasiertes Cookie umgewandelt und läuft ab, sobald die aktuelle Browsersitzung endet:

Wenn cookieUpdate auf true (Standardwert) gesetzt ist, aktualisiert analytics.js die Cookies bei jedem Seitenaufbau. Dadurch wird die Gültigkeitsdauer von Cookies relativ zum letzten Besuch auf der Website festgelegt. Wenn die Ablaufzeit von Cookies beispielsweise auf eine Woche festgelegt ist und ein Nutzer die Website alle fünf Tage mit demselben Browser besucht, wird die Gültigkeitsdauer von Cookies bei jedem Besuch aktualisiert und läuft somit nie ab.

Ist sie auf false gesetzt, werden Cookies nicht bei jedem Seitenaufbau aktualisiert. Die Gültigkeit von Cookies richtet sich in diesem Fall danach, wann ein Nutzer die Website zum ersten Mal besucht hat.

Wenn dieser Parameter festgelegt ist, werden zusätzliche Flags an das Cookie angehängt. Flags müssen durch Semikolons getrennt werden.

Sie sollten nicht direkt auf die von analytics.js gesetzten Cookies zugreifen, da sich das Cookieformat in Zukunft ändern kann. Entwickler sollten stattdessen mit readyCallback warten, bis analytics.js geladen ist, und dann den clientId-Wert im Tracker speichern lassen.

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});

Cookies deaktivieren

In manchen Fällen möchten Sie vielleicht einen eigenen Speichermechanismus (z. B. localStorage oder einen Service Worker) verwenden, um die Client-ID sitzungsübergreifend ohne Cookies beizubehalten. Wenn Sie verhindern möchten, dass über analytics.js Cookies gesetzt werden, setzen Sie das Feld storage auf 'none'.

ga('create', 'UA-XXXXX-Y', {
  'storage': 'none'
});

Wenn du das Feld clientId selbst speicherst, musst du beim Erstellen des Trackers das Feld cliendId festlegen.

ga('create', 'UA-XXXXX-Y', {
  'storage': 'none',
  'clientId': '76c24efd-ec42-492a-92df-c62cfd4540a3'
});

Zum Deaktivieren der _gac_<property-id>-Cookies setzen Sie das Feld storeGac im Befehl create auf false:

ga('create', 'UA-XXXXX-Y', {
  storeGac: false,
});

„localStorage“ zum Speichern der Client-ID verwenden

Das folgende Codebeispiel zeigt, wie Sie das JavaScript-Tag ändern können, um localStorage zum Speichern der Client-ID anstelle von Cookies zu verwenden:

var GA_LOCAL_STORAGE_KEY = 'ga:clientId';

if (window.localStorage) {
  ga('create', 'UA-XXXXX-Y', {
    'storage': 'none',
    'clientId': localStorage.getItem(GA_LOCAL_STORAGE_KEY)
  });
  ga(function(tracker) {
    localStorage.setItem(GA_LOCAL_STORAGE_KEY, tracker.get('clientId'));
  });
}
else {
  ga('create', 'UA-XXXXX-Y', 'auto');
}

ga('send', 'pageview');

Nutzer-ID

Mit der User-ID können Sie Sitzungsgruppen geräteübergreifend analysieren. Hierbei wird ein Nutzer durch einen eindeutigen, dauerhaften und nicht personenidentifizierbaren ID-String repräsentiert. Unter Vorteile der User-ID-Funktion erfahren Sie, warum Sie die User-ID implementieren sollten.

So implementieren Sie die User-ID mit analytics.js:

  1. Geben Sie Ihre eigene eindeutige, dauerhafte und nicht personenidentifizierbare String-ID für jeden angemeldeten Nutzer an. Diese ID wird in der Regel von einem Authentifizierungssystem bereitgestellt.
  2. Lege die User-ID auf dem Tracker fest:
ga('create', 'UA-XXXXX-Y', 'auto', {
  userId: USER_ID
});
ga('send', 'pageview');

Authentifizierung nach dem Seitenaufbau verarbeiten

Beim Erstellen von Single-Page-Anwendungen oder anderen dynamischen Websites, die die Nutzeranmeldung nach dem ersten Seitenaufbau verarbeiten, kann der Nutzer-ID-Wert auf dem Tracker nicht zum Zeitpunkt der Erstellung festgelegt werden.

In solchen Fällen können Sie mit dem Befehl set den Wert für den Tracker festlegen, sobald er bekannt ist.

// Creates the tracker and sends a pageview as normal
// since the `userId` value is not yet known.
ga('create', 'UA-XXXXX-Y', 'auto');
ga('send', 'pageview');

// At a later time, once the `userId` value is known,
// sets the value on the tracker.
ga('set', 'userId', USER_ID);

// Setting the userId doesn't send data to Google Analytics.
// You must also use a pageview or event to send the data.
ga('send', 'event', 'authentication', 'user-id available');

Bei diesem Ansatz enthalten Treffer, die vor dem Festlegen des Felds userId gesendet werden, keine Nutzer-ID-Werte. Durch die sogenannte Sitzungsergänzung können diese Treffer in Google Analytics jedoch zur Verarbeitungszeit dem richtigen Nutzer zugeordnet werden.