Safari ITP killt seit 2019 Cookies nach 7 Tagen. Seit Safari 16.4 (April 2023) gilt diese Kappung auch für server-seitig gesetzte Cookies - wenn das IP-Präfix des Tracking-Servers nicht zum Hauptdomain-Server matcht. Die meisten Standard-Setups (Stape Subdomain, GTM auf Google Cloud) treffen genau dieses Problem ohne es zu merken.

Bei Safari-Anteil von ~17-20 % Desktop und ~30 % Mobile bedeutet das: 15-25 % verlorene Attribution sobald Klick und Conversion mehr als eine Woche auseinanderliegen. Bei B2B-Sales-Cycles fatal, bei langen E-Commerce-Funnels schmerzhaft.

Die Lösung: Same-Origin Path-Based sGTM (example.com/sgtm/ statt sgtm.example.com) via Reverse Proxy. Da Same-Origin, fällt das IP-Matching-Problem weg und Cookies dürfen bis zu 400 Tage leben. Dieser Artikel zeigt das WARUM und das WIE - inklusive Cloudflare Worker Beispiel und Test im Safari ITP Debug Mode.

Voraussetzung: sGTM-Container läuft schon (z.B. via Stape). Background zu Server-Side im Pillar-Artikel.

1. Was ITP genau macht

Intelligent Tracking Prevention ist Apples Anti-Tracking-Mechanismus in Safari. Lebt im WebKit-Browser-Engine, also Safari macOS, Safari iOS, jeder iPhone-Browser (Chrome auf iPhone nutzt WebKit, nicht Blink). ITP klassifiziert Domains anhand des User-Verhaltens als „Tracking" oder „nicht Tracking" und behandelt Cookies auf Tracking-Domains restriktiver.

Drei zentrale Mechanismen:

  • 7-Tage-Cap für JavaScript-Cookies (alle Cookies via document.cookie)
  • 24-Stunden-Cap für Cross-Site-Trackers (Cookies werden nach 24h gelöscht wenn Domain als Tracker klassifiziert)
  • IP-Matching-Rule (Safari 16.4+): server-set Cookies nur volle Lifetime wenn IP zum Main-Site matched

2. Historie 2017-2026

JahrSafari-VersionWas hinzukam
2017Safari 11ITP 1.0: Third-Party Cookies 24h-Cap, dann gelöscht nach 30 Tagen
2018Safari 12ITP 2.0: stärkere Tracker-Erkennung, Storage-API-Restriktionen
2019Safari 13ITP 2.1-2.3: 7-Tage-Cap für JavaScript-Cookies (alle, nicht nur Tracker)
2020Safari 14CNAME Cloaking Detection: CNAME-Subdomains werden als Tracker behandelt
2021Safari 15Verbesserte Bounce-Tracking-Erkennung
2023Safari 16.4IP-Matching-Rule: server-set Cookies nur full TTL wenn IP-Präfix matched
2025+Safari 18+Verstärkte Fingerprinting-Erkennung, Hidden IP via Private Relay

Ein normales Google-Ads-Conversion-Tracking funktioniert so: User klickt Anzeige, GCLID wird in Cookie geschrieben (_gcl_aw), Cookie lebt 90 Tage, User kommt in 3 Wochen zurück und konvertiert, GCLID wird gesendet, Conversion wird attribuiert.

Mit Safari ITP: User klickt Anzeige, GCLID wird via JavaScript in Cookie geschrieben, Cookie wird durch ITP auf 7 Tage gekappt, User kommt in 3 Wochen zurück - Cookie ist weg, GCLID weg, Conversion nicht attribuiert. Aus Google-Sicht sieht es so aus als wäre der User „organisch" gekommen.

Warum gerade 7 Tage?
Apple's Argument: typische Browsing-Session reicht nicht über eine Woche, legitime Login-Cookies können binnen 7 Tagen durch User-Re-Login erneuert werden. Tracking-Cookies hingegen brauchen lange Lifetime - ergo: kürzer kappen = privater. Aus Tracking-Sicht: B2B-Sales-Cycles und längere E-Commerce-Funnels brechen.

4. Safari 16.4 IP-Matching-Rule (das, was viele übersehen)

Bis Safari 16.4 (April 2023) gab es einen klaren Workaround: Cookies via HTTP Set-Cookie Header vom Server setzen statt via JavaScript. Server-set Cookies waren vom 7-Tage-Cap ausgenommen und lebten bis zu 400 Tage (Browser-Default).

Seit Safari 16.4 wurde das eingeschränkt: Server-set Cookies leben nur dann ihre volle Lifetime, wenn die IP-Adresse des Servers (oder zumindest das /16-Subnet-Präfix) zum IP-Präfix der Hauptdomain matcht. Wenn nicht: Cookie wird trotzdem auf 7 Tage gekappt.

Praktisches Beispiel: Deine Website läuft auf Cloudflare (104.21.x.x), dein sGTM auf Stape EU (34.107.x.x). Safari sieht: zwei verschiedene IP-Präfixe → behandelt sGTM-Cookies als „suspicious first-party" → kappt auf 7 Tage, selbst wenn du sie korrekt via Set-Cookie HTTP Header setzt.

Die ungemütliche Wahrheit:
Wenn dein sGTM bei Stape, Google Cloud Run, AWS oder einem anderen Drittanbieter läuft - was 95 % aller sGTM-Setups da draußen sind - greift die IP-Matching-Rule und Safari kappt trotzdem auf 7 Tage. Standard-Subdomain-sGTM hilft also für Safari-User NICHT gegen ITP. Das ist die unbequeme Wahrheit hinter „we use Stape, we have server-side tracking" - es löst Browser-Restriktionen, aber Safari-Cookies nicht.

5. Warum CNAME Cloaking heute tot ist

Eine alte Workaround-Technik war CNAME Cloaking: lege Subdomain an (track.example.com), zeige diese per DNS-CNAME auf Tracking-Provider-Server (z.B. track.example.comcustomer.adobe.com). Aus Browser-Sicht ist die Subdomain First-Party, faktisch trackt Adobe.

Safari/WebKit erkennt CNAME Cloaking seit 2020. Mechanismus: Safari macht DNS-Lookup, prüft ob CNAME-Target außerhalb der eTLD+1 liegt (i.e. „outside the registrable domain"), wenn ja → behandelt als Tracker, kappt JavaScript-Cookies auf 7 Tage. CNAME Cloaking ist heute funktional tot.

WebKit Official Statement (Nov 2020 Blog Post):
„A new feature in Intelligent Tracking Prevention (ITP) has shipped: a cap of seven days of storage for all script-writeable storage, including cookies set via document.cookie, on third-party CNAME-cloaked first-party subresources."

6. Wie viel das wirklich kostet

Realer Impact je nach Geschäftsmodell:

GeschäftsmodellTypischer Conversion-PfadSafari-Verlust ohne Fix
E-Commerce klein (Spontankauf)Klick → Kauf binnen Tagen3-5 %
E-Commerce mittel (Vergleichskäufe)Klick → Kauf binnen 1-3 Wochen10-15 %
SaaS Trial → PaidSign-up → Conversion in 2-4 Wochen15-20 %
B2B Lead-GenInquiry → Closed Deal in 1-6 Monaten20-30 %
Local Services (kurze Sales)Inquiry → Anruf binnen Tagen2-3 %

Verlust = Safari-Marktanteil × Anteil der User die nach 7+ Tagen konvertieren. Safari-Anteil Deutschland: ~17 % Desktop, ~30 % Mobile. Im Mobile-First-Commerce überproportional schmerzhaft.

Was das für deine Conversion-Tools bedeutet: bei Meta CAPI werden fbc und fbp Cookies gekappt - dein EMQ-Score sinkt für Safari-User. Bei Google Ads Enhanced Conversions überlebt der GCLID-Cookie nur 7 Tage - Conversions ohne Email-Match werden nach einer Woche nicht mehr attribuiert. Same-Origin sGTM rettet beide Tools gleichzeitig.

7. Die drei Lösungswege

Drei technische Optionen, je nach Setup-Komplexität:

LösungAufwandCookie-LifetimeGeeignet für
HTTP Set-Cookie mit IP-MatchHoch (Infrastruktur-Migration)Bis 400 Tage - wenn IP matchedNur Enterprise mit eigenem Server
Same-Origin Path-Based sGTMMittel (Reverse Proxy)400 TageDie meisten Setups
Stape Custom Loader Power-UpNiedrig (Plug-and-Play)400 TageStape-Customer ohne DevOps-Resources

8. Same-Origin sGTM via Cloudflare Worker

Konkretes Setup für die meisten Cases - Cloudflare-Site fronted Stape-sGTM:

  1. Cloudflare Worker erstellen: Dashboard → Workers & Pages → Create Worker
  2. Worker-Code schreiben (siehe unten)
  3. Route binden: example.com/sgtm/* → Worker
  4. sGTM-Tagging-URL ändern in Web-Container von https://sgtm.example.com auf https://example.com/sgtm
  5. Container publishen + Live-Test
Cloudflare Worker - sgtm-proxy.js
export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    // Strip /sgtm prefix, forward to Stape endpoint
    const targetPath = url.pathname.replace(/^\/sgtm/, '');
    const targetUrl = 'https://sgtm.example.com' + targetPath + url.search;

    // Rebuild request with original method, headers, body
    const proxyRequest = new Request(targetUrl, {
      method: request.method,
      headers: request.headers,
      body: request.body,
      redirect: 'manual'
    });

    const response = await fetch(proxyRequest);

    // Pass through Set-Cookie headers (critical!)
    // Cloudflare merges them automatically
    return new Response(response.body, {
      status: response.status,
      headers: response.headers
    });
  }
};

Was hier passiert: Cloudflare empfängt Requests an example.com/sgtm/*, proxied sie zu Stape weiter, gibt die Antwort inklusive Set-Cookie Headers zurück. Aus Browser-Sicht: alle Requests landen auf example.com - selbe Domain, selbe IP-Range, kein IP-Matching-Problem, Cookies leben 400 Tage.

9. Alternative: Stape Custom Loader Power-Up

Wenn du keinen Cloudflare Worker bauen willst, bietet Stape das Custom Loader Power-Up an (~$20/Monat extra). Es injectet einen kleinen Loader-Script in deine Hauptdomain der dann alle sGTM-Anfragen über deine Hauptdomain routet. Funktional dasselbe Resultat wie der Worker-Ansatz, aber Stape macht die Infrastruktur für dich.

  1. Stape Dashboard → dein Container → Power-Ups
  2. Custom Loader aktivieren
  3. Stape generiert Code-Snippet - dieses VOR dem GTM-Script auf deiner Website einfügen
  4. Sub-Domain auf Same-Origin-Path umschalten in den Container-Settings
  5. Test im Safari ITP Debug Mode

10. Test im Safari ITP Debug Mode

So verifizierst du dass deine Cookies jetzt nicht mehr gekappt werden:

  1. Safari öffnen → Preferences → Advanced → „Show Develop menu" aktivieren
  2. Menubar → Develop → Experimental Features → ITP Debug Mode aktivieren
  3. Website besuchen → Develop → Show Web Inspector → Storage → Cookies
  4. Bei jedem Cookie die Expires-Spalte prüfen - sollte 400 Tage in der Zukunft sein, nicht 7 Tage
  5. Console-Tab nach ITP Debug: Logs durchsuchen - dort steht warum ein Cookie gekappt wurde
Was du im Console sehen willst:
Bei jedem sGTM-Cookie sollte stehen: „Cookie set via Set-Cookie header from first-party context, full lifetime granted." Wenn stattdessen „capped to 7 days due to network-level criteria" - dann sitzt das Problem noch beim IP-Matching.

11. DSGVO bleibt unverändert

Die Same-Origin-Lösung ändert nichts an deinen DSGVO-Pflichten:

  • Consent Mode v2 aktiv: Cookies feuern nur mit Einwilligung
  • Privacy Policy erwähnt alle Tracking-Cookies, auch wenn sie als First-Party gesetzt werden
  • AVV mit Stape/Cloudflare: Auftragsverarbeitungs-Vertrag nach Art. 28 DSGVO
  • Datenminimierung: 400-Tage-Cookie nur für Daten die du wirklich brauchst (z.B. GCLID, Session-ID)

Wichtig: Längere Cookie-Lifetime macht das Tracking NICHT „mehr datenschutz-konform" - du musst trotzdem alle DSGVO-Anforderungen erfüllen. Es macht es nur technisch funktionstüchtig für Safari-Nutzer.

12. FAQ

Was ist Safari ITP genau?

Intelligent Tracking Prevention ist Apples Anti-Tracking-Mechanismus in Safari (seit 2017). Seit 2019 kappt ITP alle per JavaScript gesetzten Cookies auf maximal 7 Tage. Seit Safari 16.4 (April 2023) kappt es auch server-seitig gesetzte Cookies, wenn die Server-IP nicht zum Main-Site-IP-Präfix matcht. Resultat: Attribution-Daten verschwinden nach einer Woche - was Performance-Bidding zerstört.

Warum hilft normaler Server-Side GTM nicht automatisch gegen ITP?

Wenn dein sGTM-Container auf einer Subdomain läuft (z.B. sgtm.example.com via Stape) und das IP-Präfix der Stape-Server nicht zum IP-Präfix deines Hauptservers matcht, behandelt Safari 16.4+ es weiter als „suspicious" und kappt Cookies auf 7 Tage. Die meisten Stape-Setups treffen dieses Problem - die Lösung ist Same-Origin Path-Based Setup.

Was ist CNAME Cloaking und warum funktioniert es nicht mehr?

CNAME Cloaking war eine alte Technik: Subdomain (track.example.com) per CNAME auf Drittanbieter-Server zeigen lassen, damit es wie First-Party aussieht. Safari/WebKit erkennt das seit 2020 und kappt alle JavaScript-Cookies auf solchen Subdomains auf 7 Tage. CNAME Cloaking ist heute funktional tot - nicht mehr nutzen.

Was ist die Lösung gegen Safari ITP?

Same-Origin Path-Based sGTM: statt der Subdomain sgtm.example.com läuft sGTM unter example.com/sgtm/ über einen Reverse Proxy (Cloudflare Worker, Nginx, oder Stape Custom Loader Power-Up). Da Same-Origin, gibt es keine IP-Matching-Probleme und Cookies können bis zu 400 Tage gesetzt werden. Google empfiehlt dieses Setup explizit.

Wie viel macht der Unterschied wirklich aus?

Safari-Anteil in Deutschland ~17-20 % Desktop, in Mobile ca. 30 %. Bei 7-Tage-Cookie-Cap verschwinden alle Safari-Nutzer aus der Attribution sobald sie eine Woche zwischen Klick und Conversion warten. Bei B2B-Sales-Cycles (Wochen bis Monate) sind das schnell 15-25 % verlorene Attribution. Mit 400-Tage-Cookies via Same-Origin sGTM bleibt die Attribution erhalten.

Ist Same-Origin sGTM DSGVO-konform?

Ja - DSGVO-Konformität hängt nicht von der technischen Cookie-Lifetime ab, sondern von Consent Mode v2, korrekter Privacy Policy, AVV mit Anbietern und Datenminimierung. Same-Origin Path-Based sGTM ändert nichts an diesen Pflichten - im Gegenteil, durch First-Party-Charakter wird die Datenhoheit beim Werbetreibenden klarer geregelt.

Same-Origin sGTM für deine Site aufsetzen lassen?

Ich migriere dein Stape-Setup auf Same-Origin Path-Based via Cloudflare Worker oder Stape Custom Loader. Cookie-Lifetime steigt von 7 auf 400 Tage, Safari-Attribution wird gerettet. Als Server-Side Modul ab 400 €.

Migration anfragen
Zurück zum Blog