Server-Side Tracking Migration.
Safari ITP, iOS ATT ve ad-blocker'lar tarayıcı-tarafı ölçümü %20-40 yiyor. Server-side GTM (sGTM) bunu çözüyor — etiketleri kendi sunucunda çalıştırırsın, 1st-party domain üzerinden veri akışı, PII filtreleme. Bu rehber sıfırdan üretime kurulum: Cloud Run deploy, GA4 + Meta CAPI + Google Ads tag'leri, KVKK uyumlu yapı.
Server-side GTM (sGTM), etiketleri tarayıcıdan kendi sunucuna taşır. Avantaj: %20-40 cookie kaybı %5-10'a düşer, sayfa hızı artar, PII filtrelenebilir. Maliyet: Google Cloud Run'da küçük ölçek 1.440-2.880 TL/ay. Kurulum 4 adım: (1) GTM'de Server container oluştur, (2) Cloud Run deploy, (3) 1st-party subdomain CNAME, (4) Web container'ı GA4 Client ile sGTM'ye yönlendir. Toplam süre: deneyimli bir devops için 3-4 saat, ilk seferde 8-12 saat.
// 01Neden server-side tracking
Klasik client-side tracking — tarayıcıda doğrudan Google, Meta, TikTok'a istek atmak — üç probleme sahiptir:
- Cookie kaybı: Safari ITP üçüncü-parti cookie'leri 7-30 günde tüketir. iOS 14.5+ ATT kullanıcıların %75'inde tracking'i devre dışı bırakır. Ad-blocker kullanım oranı %30'u geçti.
- Sayfa hızı: 5-10 üçüncü-parti tag tarayıcıda sırayla yüklenir. LCP +1.5-3s.
- Veri kontrolü: tarayıcı tarafında her şey doğrudan üçüncü-parti'ye gider — KVKK/GDPR risk, PII filtreleme imkansız.
Server-side GTM bu üç problemi büyük ölçüde çözer.
// 02Mimari özet
Klasik vs sGTM mimarileri:
Klasik (client-side)
Tarayıcı → Google Analytics, Meta Pixel, Google Ads (paralel istekler, üçüncü-parti).
sGTM
Tarayıcı → Web Container → 1st-party endpoint (örn. track.markaadi.com) → Cloud Run'da Server Container → Google/Meta/TikTok (sunucu-sunucu).
Kritik nokta: tarayıcının atadığı tek istek kendi domain'ine, oradan sunucuda fan-out. Tarayıcı için her şey 1st-party.
// 03Adım 1: GTM'de Server Container oluştur
- tagmanager.google.com'a gir, mevcut workspace'i seç.
- Admin → Container Settings → "Create Container" → Target: Server.
- Container ID'yi not al (GTM-XXXXX format).
- Container provisioning seçeneklerinden "Manually provision" seç (Cloud Run kontrolü için).
- Server URL placeholder'ı not al (kurulumdan sonra gerçek URL'le güncellenecek).
// 04Adım 2: Cloud Run deploy
Google Cloud Console'da:
- GCP projesi oluştur veya mevcut projeye geç.
- Cloud Run API'yi etkinleştir.
- "Create Service" → Container Image:
gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable - Region seç (Türkiye için europe-west1 veya europe-west3 düşük latency).
- Authentication: "Allow unauthenticated invocations" (public endpoint olmalı).
- Container port: 8080.
- Environment variables:
CONTAINER_CONFIG— GTM Server Container'dan kopyalanacak config string.RUN_AS_PREVIEW_SERVER— false (preview için ayrı service kurulur).
- CPU: 1 vCPU, Memory: 512MB başlangıç. Min instances: 1 (cold start önleme).
- Maksimum instances: trafiğe göre 10-100.
// 05Adım 3: 1st-party subdomain bağla
Cloud Run servisinin native URL'si your-service-xxx.run.app formatındadır — bu üçüncü-parti olarak görülür ve ITP'den kaçamaz. Mutlaka kendi domain'inde 1st-party olarak yayınla.
- DNS sağlayıcına git (Cloudflare, Route53 vb.).
- CNAME kaydı ekle:
track.markaadi.com→ghs.googlehosted.com. - Cloud Run console → Domain Mappings → Add Mapping →
track.markaadi.com. - SSL sertifikası otomatik provisionlanır (5-30 dk).
- GTM Server Container settings → Server URL =
https://track.markaadi.com.
// 06Adım 4: Web Container'ı sGTM'ye yönlendir
Web GTM Container'da GA4 Configuration tag'i şu değişikliklerle güncellenir:
- "Send to server container" — true.
- Server container URL —
https://track.markaadi.com. - Transport URL alanı doldurulur.
Sunucu tarafında karşılık gelen tag'leri ekle:
- GA4 Client: gelen GA4 isteklerini parse eder.
- GA4 Tag: sunucudan Google Analytics'e fan-out.
- Meta Conversions API Tag: aynı event'i Meta'ya gönderir.
- Google Ads Conversion Tag: Google Ads dönüşüm raporlamasına.
// 07PII filtreleme + KVKK uyumu
Sunucu tarafının en büyük avantajlarından biri: veriyi üçüncü-partiye göndermeden önce temizleyebilirsin.
Yapılması gerekenler
- E-posta hashleme: ham e-posta yerine SHA-256 hash gönder (Enhanced Conversions için zaten gerekli).
- IP truncation: son oktet sıfırla (KVKK için anonim IP).
- Telefon temizliği: hash + ülke kodu normalize.
- URL parametreleri: PII içeren query string'leri filtrele (örn.
?email=).
Bu filtrelemeleri sunucu tarafında "Custom Variable" + Transformation ile yap. KVKK denetim raporunda bu yapıyı göstermek uyum kanıtı olarak kabul edilir.
// 08Test ve gözlem
- GTM Server Preview mode: önce preview environment'ında test et. Her event'in sunucuya ulaştığını ve doğru tag'leri tetiklediğini doğrula.
- GA4 DebugView: sunucudan gelen event'lerin GA4'te göründüğünü kontrol et.
- Meta Events Manager: "Test Events" aracı ile CAPI event'lerinin geldiğini doğrula. Match rate'i sGTM öncesi/sonrası kıyasla.
- Google Ads: "Conversion Diagnostics" — Enhanced Conversions match rate'in arttığını gör.
Beklenen iyileşmeler (4-6 hafta sonra)
- GA4 ve Google Ads dönüşüm sayım farkı %20-30'dan %5-10'a düşer.
- Enhanced Conversions match rate %45-55'ten %70-80'e çıkar.
- Sayfa LCP 0.3-0.8s iyileşir.
- Meta CAPI match quality 6-8 puana yükselir.
// ilgiliİlgili sözlük terimleri.
Bu rehberde geçen kavramların kısa tanımları için sözlüğe bakabilirsin:
Server-side ölçüm = doğru karar.
Cookie kaybı ölçümü %20-40 saptırırken bütçe kararını ona dayandırmak risklidir. sGTM kurulumu sonrası d-lens server event'lerini doğrudan okur; gerçek dönüşüm sayısı, gerçek ROAS.