İçeriğe geç
ceaksan

Tarayıcı Depolama ve Cookie Mimarisi: Tracking Perspektifinden

Cookie, localStorage, sessionStorage ve IndexedDB karşılaştırması. ITP, ETP, CHIPS, SameSite attribute'leri, server-side cookie oluşturma ve GTM built-in variable'lar. Tracking altyapısını anlamak için teknik rehber.

7 Nis 2026 9 dk okuma
TL;DR

GA4'ün kullanıcıyı 7 günde kaybetmesinin arkasında Safari ITP var. ITP'yi anlamak için cookie mimarisini, cookie mimarisini anlamak için tarayıcı depolama ekosistemini bilmek gerekiyor. Cookie (4 KB, sunucuya gider), localStorage (5 MB, kalıcı), sessionStorage (5 MB, sekme kapanınca silinir) ve IndexedDB (yüzlerce MB, asenkron) farklı amaçlara hizmet ediyor. Google bile tek mekanizmaya güvenmiyor: Conversion Linker artık localStorage kullanıyor, GTM service worker ile veri iletiyor. Server-side cookie (sGTM veya Google Tag Gateway) ile ITP kısıtlamalarını aşmak mümkün ama her yaklaşımın trade-off'u var.

Giriş

GA4 raporlarında 7 gün önce gelen kullanıcı “yeni kullanıcı” olarak görünüyor. Shopify checkout’tan dönen kullanıcının oturumu kopuyor. Facebook attribution penceresi her geçen yıl daralıyor.

Bu sorunların ortak noktası tarayıcı depolama mimarisi. Cookie’lerin nasıl çalıştığını, hangi kısıtlamalara tabi olduğunu ve alternatif depolama mekanizmalarını anlamadan, ölçüm kayıplarının kaynağını teşhis etmek mümkün değil.

Bu yazı, client-side tracking sorunlarının ve analitik platformları arasındaki veri farklılıklarının teknik altyapısını açıklıyor.

Tarayıcı Depolama Mekanizmaları

Tarayıcılar veriyi dört farklı mekanizma ile saklar. Her birinin kapasitesi, ömrü, erişim biçimi ve sunucu ile ilişkisi farklı.

MekanizmaKapasiteÖmürSunucuya Gider mi?API TipiTracking Kullanımı
Cookie~4 KBAyarlanabilir (maks. 400 gün1)Evet, her HTTP isteğindeSenkronGA4 _ga, FB _fbp/_fbc, session ID
localStorage~5 MBKalıcı (kod veya kullanıcı silene kadar)HayırSenkronConversion Linker ad click, cross-tab state
sessionStorage~5 MBSekme kapanınca silinirHayırSenkronTek oturum verileri, geçici form state
IndexedDBYüzlerce MB - GBKalıcıHayırAsenkronOffline veri, büyük veri setleri, service worker cache

Cookie’nin diğer mekanizmalardan temel farkı: her HTTP isteğinde Cookie header’ı ile sunucuya otomatik olarak gönderilmesi. Bu özellik cookie’yi tracking için vazgeçilmez kılıyor, çünkü sunucu tarafında kullanıcıyı tanımlamak için tarayıcıdan gelen bir tanımlayıcıya ihtiyaç var.

Cookie’nin ikinci avantajı cross-subdomain desteği: de.example.com’da yazılan cookie, domain=.example.com attribute’ü ile fr.example.com’dan okunabilir. localStorage ve sessionStorage origin’e bağlıdır, subdomain’ler arası paylaşılamaz. Multi-market Shopify kurulumlarında veya subdomain bazlı dil yapılarında cookie bu nedenle tercih ediliyor2.

Peki, bu avantajlar aynı zamanda cookie’nin en büyük kısıtlamasının da kaynağı. Her istekte sunucuya gitmesi, tarayıcı ve regülatörlerin cookie’yi gizlilik riski olarak sınıflandırmasının birincil nedeni. localStorage’a cookie gibi 7 gün ömür kısıtlaması uygulanmıyor, çünkü localStorage sunucuya gitmiyor. Ancak Safari, ITP tarafından sınıflandırılmış domainlerde 7 gün etkileşim olmazsa localStorage dahil tüm script-writable storage’ı siliyor3.

localStorage: Cookie’nin Tamamlayıcısı

localStorage sunucuya gitmez ama tarayıcıda kalıcı veri saklar. Bu iki özellik birleşince tracking ekosisteminde tamamlayıcı bir rol üstleniyor.

Google bunu Kasım 2024’te resmi olarak benimsedi: Conversion Linker artık reklam tıklaması bilgisini cookie’ye ek olarak localStorage’a da yazıyor4. Nedeni basit: Safari ITP reklam tıklaması cookie’lerini 24 saate kısıtlıyor, ama localStorage’a cookie gibi süre sınırı getirmiyor. localStorage’daki veri, cookie süresi dolsa bile attribution penceresini genişletebiliyor.

sessionStorage: Tek Sekme, Tek Oturum

sessionStorage, sekme kapandığında silinen geçici bir depolama. Tracking açısından doğrudan kullanımı sınırlı ama checkout akışları, form wizard’ları ve tek oturumluk state yönetimi için kullanılıyor. Shopify checkout sandbox’ının cookie erişimini kısıtladığı ortamlarda5, sessionStorage alternatif bir veri taşıma mekanizması olarak devreye girebiliyor.

IndexedDB: Büyük Veri ve Offline

IndexedDB asenkron, yapısal veri saklayabilen (object, blob) ve yüzlerce MB kapasiteli bir veritabanı. Tracking için doğrudan kullanımı yaygın değil ama service worker’lar IndexedDB üzerinden çalışıyor. Google Tag’in Mart 2025’ten itibaren service worker kullanması6, IndexedDB’yi dolaylı olarak tracking altyapısının bir parçası hâline getirdi.

Bir cookie oluşturulurken belirlenen attribute’ler, o cookie’nin hangi bağlamda okunabileceğini, ne kadar yaşayacağını ve hangi güvenlik kurallarına tabi olacağını belirler.

SameSite

SameSite attribute’ü, cookie’nin cross-site isteklerde gönderilip gönderilmeyeceğini kontrol eder.

DeğerDavranışTracking Etkisi
StrictYalnızca aynı site isteklerinde gönderilirCross-site attribution kırılır
Lax (varsayılan)Top-level navigasyonlarda gönderilir, cross-site POST/iframe’lerde gönderilmezÇoğu tracking senaryosu için yeterli
NoneTüm isteklerde gönderilir (Secure zorunlu)Cross-site tracking mümkün ama tarayıcı kısıtlamalarına tabi

Chrome, SameSite belirtilmemiş cookie’leri 2020’den beri varsayılan olarak Lax kabul ediyor. Bu değişiklik, SameSite=None ile açıkça işaretlenmemiş üçüncü taraf cookie’lerin çoğunu sessizce kırdı7.

Secure ve HttpOnly

AttributeNe YaparNeden Önemli
SecureCookie yalnızca HTTPS üzerinden gönderilirSameSite=None için zorunlu. Güvenli iletim garantisi
HttpOnlyJavaScript (document.cookie) ile erişilemezXSS saldırılarına karşı koruma. Server-side cookie’ler için standart

Server-side tracking kurulumlarında (sGTM) oluşturulan cookie’ler genellikle HttpOnly + Secure + SameSite=Lax kombinasyonuyla set edilir. Bu üçlü, hem güvenlik hem de ITP uyumluluğu açısından en iyi pratiği oluşturur.

Partitioned (CHIPS)

CHIPS (Cookies Having Independent Partitioned State), üçüncü taraf cookie’ler için yeni bir izolasyon modeli. Partitioned attribute’ü ile işaretlenen cookie’ler, top-level site bazında ayrı bir cookie jar’da saklanır8.

Set-Cookie: __Host-tracker=abc123; Secure; Path=/; SameSite=None; Partitioned

Bu cookie, siteA.com üzerinden set edildiğinde yalnızca siteA.com bağlamında okunabilir. Aynı üçüncü taraf servisi siteB.com’da da kullanılsa, oradaki cookie farklı bir değere sahip olur. Cross-site tracking engellenir ama aynı site içindeki işlevsellik korunur.

Tarayıcı desteği (2026 itibarıyla): Chrome 114+, Edge 114+, Opera 100+. Firefox ETP Strict modunda zaten tüm üçüncü taraf cookie’leri partition’lıyor. Safari de opt-in modeline ilgi gösteriyor8.

Birinci Taraf vs Üçüncü Taraf: Teknik Gerçek

Aynı cookie, farklı bağlamda farklı sınıflandırılır. doubleclick.net tarafından set edilen bir cookie, doubleclick.net ziyaret edildiğinde birinci taraf, ornek-magaza.com üzerindeki bir reklam iframe’inde okunduğunda üçüncü taraftır. Cookie’nin içeriği veya adı değişmez, değişen bağlam.

AraçCookie AdıTürVarsayılan ÖmürITP Etkisi
GA4_gaBirinci taraf2 yılJS ile set: 7 gün
GA4_ga_<ID>Birinci taraf2 yılJS ile set: 7 gün
Facebook_fbpBirinci taraf90 günJS ile set: 7 gün
Facebook_fbcBirinci taraf90 günTıklama parametresi: 24 saat
Google Ads_gcl_awBirinci taraf90 günTıklama parametresi: 24 saat
Google AdsConversion LinkerBirinci taraf + localStorage90 günCookie: 24 saat, localStorage: kısıtlama yok

Tablodaki “ITP Etkisi” sütunu kritik: GA4 _ga cookie’si normalde 2 yıl yaşar, ama Safari’de JavaScript ile oluşturulduğu için 7 güne düşer. Kullanıcı 8. gün geldiğinde GA4 onu “yeni kullanıcı” olarak sayar9.

Aralık 2025’e kadar GA4 Client ID’ye erişmek için _ga cookie’sini regex ile parse etmek gerekiyordu:

// Eski yöntem (kırılgan, format değişikliğine açık)
function getClientId() {
  var match = document.cookie.match(/_ga=GA\d+\.\d+\.(.+)/);
  return match ? match[1] : undefined;
}

Artık buna gerek yok. GTM, Aralık 2025 güncellemesiyle üç yeni built-in variable sunuyor10:

  • Analytics Client ID: GA4 client kimliği
  • Analytics Session ID: Aktif oturum kimliği
  • Analytics Session Number: Kullanıcının kaçıncı oturumunda olduğu

Etkinleştirmek için: GTM > Variables > Configure Built-in Variables > Utilities kategorisi.

Peki, custom template geliştiriyorsanız, Ağustos 2025’te eklenen readAnalyticsStorage sandbox API’si var11. Bu API, cookie format değişikliklerine karşı future-proof bir okuma yöntemi sunuyor. Daha önce cookie formatını reverse-engineer ederek okuyan custom template’ler, Google Analytics cookie formatını güncellediğinde kırılıyordu.

Ayrıca yeni bir Analytics Storage user-defined variable tipi de eklendi. Bu, belirli bir Measurement ID veya custom cookie prefix ile çalışan multi-property kurulumlar için tasarlanmış. Consent Mode v2’deki analytics_storage ile karıştırılmamalı, bu tamamen farklı bir mekanizma10.

Tarayıcı Kısıtlamaları

Safari ITP (Intelligent Tracking Prevention)

Safari, tracking kısıtlamalarında en agresif tarayıcı. ITP’nin güncel kuralları9:

KuralKısıtlamaTracking Etkisi
JavaScript cookie (document.cookie)Maks. 7 günGA4 kullanıcı tanıma penceresi 7 güne düşer
Reklam tıklaması cookie’si (gclid, fbclid, vb.)Maks. 24 saatGoogle Ads ve Meta attribution penceresi 24 saate düşer
Server-side cookie (Set-Cookie header)Maks. 400 gün (IP eşleşirse)sGTM ile ITP bypass mümkün
Server-side cookie (IP eşleşmezse)Maks. 7 günCloud-hosted sGTM + farklı IP = bypass başarısız
localStorage / IndexedDB7 gün etkileşim olmazsa silinirScript-writable storage da ITP kapsamında
30 gün etkileşimsizlikTüm site verisi silinirCookie, localStorage, IndexedDB dahil her şey
Üçüncü taraf cookieTamamen engelliCross-site tracking mümkün değil

IP eşleşme detayı: Safari 16.4’ten itibaren, server-set cookie’lerin 400 gün yaşaması için sunucu IP adresinin ilk yarısının site IP’si ile eşleşmesi gerekiyor. Cloud-hosted sGTM genellikle farklı IP bloğunda çalıştığı için bu koşul sağlanamayabiliyor. Custom domain ile aynı CDN/altyapı üzerinden proxy yapmak bu sorunu çözüyor12.

Firefox ETP (Enhanced Tracking Protection)

Firefox, bilinen tracker’ların cookie’lerini üçüncü taraf bağlamda engelliyor. ETP Strict modunda tüm üçüncü taraf cookie’ler partition’lanıyor. Birinci taraf cookie’lere dokunmuyor ancak cross-site tracking için kullanılan mekanizmaları aktif olarak tespit edip engelliyor13.

Brave

Brave, tüm tracker’ları ve üçüncü taraf cookie’leri varsayılan olarak engelliyor. GA4, GTM, Facebook Pixel dahil tüm tracking script’lerini blokluyor. Brave kullanıcıları client-side tracking için tamamen görünmez13.

Chrome, beklenen üçüncü taraf cookie kaldırma planını terk etti. Temmuz 2024’te “user choice” modeline geçeceğini duyurdu. Privacy Sandbox API’lerinden Topics API, Protected Audience API ve Attribution Reporting API Ekim 2025’te kullanımdan kaldırıldı14. CHIPS ve FedCM (Federated Credential Management) ise cross-browser destek gördüğü için devam ediyor.

2026 itibarıyla Chrome, üçüncü taraf cookie’leri varsayılan olarak engellemiyor. Kullanıcıya tercih sunuyor.

Client-side cookie’lerin ITP kısıtlamalarına tabi olması, server-side cookie oluşturmayı tracking altyapısının kritik bir bileşeni haline getirdi. İki ana yaklaşım var: sGTM ve Google Tag Gateway.

sGTM (server-side Google Tag Manager), tarayıcıdan gelen isteği kendi sunucu container’ında işler ve yanıtta Set-Cookie header’ı ile cookie oluşturur. Bu cookie HTTP response’unun parçası olduğu için tarayıcı onu server-set olarak kabul eder.

Temel prensipler:

  1. Custom domain zorunlu: sGTM container’ı gtm.orneksite.com gibi sitenin alt alan adında çalışmalı. Bu sayede cookie birinci taraf olarak sınıflandırılır.

  2. Attribute’ler: HttpOnly + Secure + SameSite=Lax kombinasyonu. HttpOnly JavaScript erişimini engeller (XSS koruması), Secure yalnızca HTTPS, SameSite=Lax cross-site kısıtlaması.

  3. Cookie ömrü: Server-side set edilen cookie’ye 2 yıla kadar ömür verilebilir. Safari’de IP eşleşmesi varsa 400 güne kadar yaşar (client-side 7 gün iken).

sGTM’de cookie oluşturma senaryoları:

  • GA4 _ga override: sGTM, GA4’ün client-side oluşturduğu _ga cookie’sini server-side olarak yeniden set edebilir. Client ID aynı kalır ama cookie ömrü uzar.
  • Custom cookie: user_id, session_id, attribution parametreleri (UTM, gclid, fbclid) gibi değerler server-side cookie olarak saklanabilir.
  • First-party data enrichment: CRM veya veritabanından gelen kullanıcı segmenti, server-side cookie ile tarayıcıya yazılabilir.

Detay: sGTM ile Custom Domain Kurulumu

Google Tag Gateway (Eski First-Party Mode)

Google Tag Gateway, Mayıs 2025’te “first-party mode”dan yeniden adlandırıldı. CDN (Cloudflare, Akamai) veya GCP Load Balancer üzerinden Google tag isteklerini first-party context’e taşıyan bir çözüm15.

ÖzelliksGTMGoogle Tag Gateway
KapsamTüm platformlar (Meta, TikTok, LinkedIn, vb.)Yalnızca Google ekosistemi (GA4, Ads, Floodlight)
KurulumSunucu container, custom domain, hostingCDN entegrasyonu, “one-click” seçenekler
Veri kontrolüTam (filtre, dönüştür, zenginleştir)Sınırlı (pass-through)
Cookie oluşturmaTam kontrol (custom cookie, override)Google tag’in kendi cookie yönetimi
MaliyetHosting maliyeti (GCP, Stape, vb.)CDN maliyeti (genellikle mevcut altyapı)
Ad blocker bypassYüksek (custom domain)Orta (CDN proxy)
Reported upliftDeğişken (kuruluma bağlı)Ortalama %11+ conversion artışı15

Hangisi ne zaman?

  • Yalnızca Google ekosistemi kullanılıyorsa ve hızlı kurulum öncelikse: Google Tag Gateway
  • Çoklu platform (Meta CAPI, TikTok Events API, vb.) ve veri kontrolü gerekiyorsa: sGTM
  • İkisi birlikte de kullanılabilir: Gateway Google trafiği için, sGTM diğer platformlar için

Cloudflare Zaraz

Cloudflare Zaraz, CDN edge’inde çalışan bir tracking proxy. Mantık olarak Google Tag Gateway’e benzer ama platform bağımsız. Cloudflare DNS kullanıyorsanız ek kurulum gerektirmez. Engagement time ve auto event sınırlamaları var16.

Service Worker ve Veri İletimi

Google Tag, Mart 2025’ten itibaren veri iletiminde service worker kullanıyor6. Service worker, tarayıcıda arka planda çalışan bir script. Sayfa kapansa bile ağ isteklerini tamamlayabiliyor.

Tracking için anlamı: kullanıcı sayfayı hızlıca terk ettiğinde (bounce), geleneksel JavaScript tabanlı iletim kesintiye uğrayabilir. Service worker bu isteği arka planda tamamlayarak veri kaybını azaltır.

Bu gelişme, navigator.sendBeacon() API’sine ek bir güvenilirlik katmanı ekliyor. sendBeacon zaten sayfa kapanırken veri göndermek için tasarlanmıştı, service worker ise bunu daha geniş bir kapsamda yapabiliyor.

Özet: Neyi, Ne İçin Kullanmalı?

SenaryoMekanizmaNeden
Kullanıcı tanımlama (GA4, FB)Cookie (server-side tercih)Sunucuya otomatik gider, server-side ile ITP bypass
Attribution parametresi saklamaCookie + localStorageCookie ITP’ye tabi, localStorage yedek
Checkout/form geçici statesessionStorageSekme bazlı, otomatik temizlenir
Offline veri, büyük veri setiIndexedDBAsenkron, yüksek kapasite
GA4 ID erişimi (GTM’de)Built-in variableCookie parsing yerine resmi yöntem
ITP bypasssGTM server-side cookieHTTP Set-Cookie header, 400 güne kadar
Google-only first-partyGoogle Tag GatewayKolay kurulum, CDN entegrasyonu
Multi-platform first-partysGTMTam kontrol, tüm platformlar

Tarayıcı depolama mimarisini anlamak, client-side tracking sorunlarının neden oluştuğunu ve analitik platformları arasındaki veri farklılıklarının teknik kökenini kavramak için gerekli altyapıyı sağlıyor. Ölçüm kaybının kaynağını teşhis etmeden çözüm üretmek mümkün değil.

Footnotes

  1. RFC 6265bis: HTTP State Management Mechanism. IETF Cookie maks. ömrü 400 gün olarak standardize edildi.
  2. Shopify Markets Cookie Bridge Cross-subdomain cookie kullanımı ve pixel sandbox storage mekanizmaları.
  3. Storage quotas and eviction criteria. MDN Web Docs
  4. Google Tag Manager Release Notes, November 7, 2024. Google “Conversion Linker now stores ad click information in Browser Local Storage in addition to first-party cookies.”
  5. Shopify Analytics vs GA4 Shopify checkout sandbox’ının cookie erişim kısıtlamaları.
  6. Google Tag Manager Release Notes, March 4, 2025. Google “Google tag now uses service workers, when available, to send data to server-side Tag Manager.” 2
  7. SameSite cookies explained. web.dev
  8. Cookies Having Independent Partitioned State (CHIPS). Privacy Sandbox 2
  9. Safari ITP. Stape ve cookiestatus.com/safari Safari ITP kısıtlamalarının güncel durumu. 2
  10. Google Tag Manager Release Notes, December 11, 2025. Google Built-in variables: Client ID, Session ID, Session Number ve Analytics Storage variable tipi. 2
  11. Google Tag Manager Release Notes, August 1, 2025. Google readAnalyticsStorage sandbox API.
  12. Server-Side Cookie Setting in 2026. Seresa Safari 16.4 IP matching kuralı.
  13. Enhanced Tracking Protection in Firefox. Mozilla Support ve Brave Shields. Brave 2
  14. Update on Plans for Privacy Sandbox Technologies. Google Topics API, Protected Audience API ve Attribution Reporting API retire kararı.
  15. Set up Google tag gateway for advertisers. Google Developers ve sGTM vs Google Tag Gateway. Five Nine Strategy 2
  16. Cloudflare Analytics vs GA4 Zaraz entegrasyonu sınırlamaları.
Önemli Noktalar
  • 01 Cookie tek depolama mekanizması değil; localStorage, sessionStorage ve IndexedDB farklı amaçlara hizmet ediyor
  • 02 Safari ITP, JavaScript cookie'lerini 7 güne, reklam tıklaması cookie'lerini 24 saate kısıtlıyor
  • 03 Server-side cookie (HTTP Set-Cookie header) ile ITP 7 gün kısıtlaması aşılabilir, cookie 400 güne kadar yaşar
  • 04 Google Tag Gateway (eski first-party mode) yalnızca Google ekosistemi için çalışır; sGTM platform bağımsız
  • 05 GTM artık GA4 Client ID, Session ID ve Session Number'ı doğrudan built-in variable olarak sunuyor, cookie parsing gerekmiyor
Sık Sorulan Sorular (FAQ)
+ Cookie ile localStorage arasındaki fark nedir?

Cookie her HTTP isteğiyle sunucuya gönderilir (maks. 4 KB), sunucu tarafından Set-Cookie header ile oluşturulabilir ve süre sınırı verilebilir. localStorage yalnızca tarayıcıda kalır (5 MB), sunucuya gitmez, kullanıcı veya kod silene kadar kalıcıdır. Tracking açısından cookie sunucu iletişimi için, localStorage client-side veri saklama için kullanılır.

+ Safari ITP cookie'leri nasıl kısıtlıyor?

JavaScript ile oluşturulan cookie'ler 7 güne, reklam tıklaması parametresi (gclid, fbclid) içeren URL'lerden gelen cookie'ler 24 saate kısıtlanır. Server-side Set-Cookie header ile oluşturulan cookie'ler 400 güne kadar yaşar, ancak sunucu IP'si ile site IP'si eşleşmezse bu da 7 güne düşer.

+ sGTM ile Google Tag Gateway arasındaki fark nedir?

Google Tag Gateway (eski first-party mode) yalnızca Google ekosistemine (GA4, Google Ads, Floodlight) hizmet eden lightweight bir çözüm. sGTM ise platform bağımsız, Meta CAPI, TikTok Events API, LinkedIn dahil tüm platformlara veri gönderebilen esnek bir sunucu container'ı. Gateway kolay kurulum, sGTM tam kontrol sunar.

+ GTM'de GA4 cookie'lerini parse etmem gerekiyor mu?

Hayır. Aralık 2025 itibarıyla GTM, Client ID, Session ID ve Session Number için built-in variable sunuyor. Ağustos 2025'te eklenen readAnalyticsStorage API'si de custom template'ler için resmi çözüm. _ga cookie'sini regex ile parse etme dönemi kapandı.