26. Februar 2019
Google Analytics ITP 2.1 vorbeugen — HTTP Set-Cookie /snippet/
Hier ist das kleine Cloudflare Workers Snippet, das benötigt wird, um das _ga Cookie über HTTP zu setzen, um ITP 2.1 von Webkit zu umgehen.
Kürzlich hat das Team von Webkit angekündigt, dass gemäß ITP 2.1 First-Party-Cookies, die nicht über den HTTP-Header gesetzt wurden (d.h. Cookies, die mit der document.cookie API erstellt wurden), auf einen Gültigkeit von 7 Tagen beschränkt werden.
Web-Analysten wissen, dass dies eine große Gefahr für die Qualität des Trackings darstellt, da die Datengrundlage First-Party-Cookies,
typischerweise mit einer Verfallszeit von 2 Jahren, sind, so auch bei Google Analytics.
In seiner unübertroffenen Art hat Simo Ahava bereits eine Lösung veröffentlicht, die das Speichern der Client-Idin den Local Storage des Browsers verschiebt. Allerdings ist dies nicht ganz ohne Haken.
Ich bin ein großer Fan davon, nicht alles auf den Client zu verlagern, sondern bestimmte Dinge serverseitig zu implementieren.
Aber erst seit ich auf Cloudflare Workers gestoßen bin, die performante Proxy-Schicht zwischen dem Client und dem eigentlichen Ursprung (Server).
Warum ist ein solcher Proxy von Vorteil? Weil er Ihnen besonders dann hilft, wenn Sie keine Kontrolle über den Web-Server haben, da Sie Cloud-Provider lieben (denken Sie an Medium, Shopify, etc.) ;-)
Sicherlich werden Google und die anderen Hauptakteure Massnahmen ergreifen, um mit ITP 2.1 fertig zu werden. Nichtsdestotrotz scheint es so, als ob die Welt der digitalen Analyse weitere Schritte in Richtung einer serverseitigen Welt des Trackings macht.
Generierung einer Google Analytics-Client-Id in Cloudflare Workers
Angenommen, Sie haben ein Cloudflare Workers-Setup, dann müssen Sie Folgendes hinzufügen, um mit ITP 2.1 umgehen zu können:
- Finden Sie die entsprechende Stelle in Ihrem Skript, um zu prüfen, ob bereits ein _ga Cookie gesetzt ist, z.B.
const cookies = event.request.headers.get('Cookie');
if(cookies.indexOf('_ga=GA') === -1)) {...}
- Fügen Sie eine globale Konstante mit Ihrer gewünschten Tracking-Domäne hinzu, z.B.
const trackingDomain = 'yourdomain.com';
- Und jetzt die erforderliche Zeile zum Setzen des GA-Cookies per HTTP-Header, wobei Response die Antwort ist, die Sie an den Client zurücksenden werden
response.headers.append('Set-Cookie', `_ga=${["GA1", trackingDomain.split('.').length, crypto.getRandomValues(new Uint32Array(1))[0] & 2147483647, Math.round((new Date).getTime() / 1E3)].join(".")}; Domain=.${trackingDomain}; Max-Age=63072000;`);
Was jetzt passiert, ist, dass Sie für alle Benutzer ohne _ga-Cookie das _ga-Cookie sozusagen manuell setzen. Der GA-Tracker kann dann die Client-Id von Ihrem _ga-Cookie abfragen, und ITP 2.1-Browser werden dieses Cookie nicht berühren.
Warnung: Dies ist nur ein Beitrag zur Inspiration und behandelt keine Themen wie allowLinker- und Tracker-Einstellungen (d.h. unterschiedliche Cookie-IDs, etc.).