sGTM Nedir ve Neden Zorunlu Hale Geldi?
Server-Side Google Tag Manager (sGTM), etiket yönetimini tarayıcıdan sunucu tarafına taşıyarak veri toplama sürecinin kontrolünü site sahibine veriyor. Safari 26 AFP, ITP cookie kısıtlamaları ve Consent Mode v2 zorunluluğu ile client-side tracking’in tek başına yeterliliği ortadan kalktı. Bu değişimlerin detayları ve farklı tracking yaklaşımlarının karşılaştırması için ilgili yazıya bakabilirsiniz.
Bu rehberde sGTM’in nasıl kurulacağını, hangi altyapı seçeneklerinin mevcut olduğunu ve GA4, Google Ads, Meta CAPI gibi platformlara yönelik tag yapılandırmasını ele alacağım.
Kullanıcı tarayıcısı
-> Client-side GTM (web container)
-> sGTM (server container)
-> GA4, Google Ads, Meta CAPI, TikTok, Klaviyo...
sGTM v3.2.0 (Eylül 2025) ile önemli değişiklikler yapıldı: GA4 Client artık
gtag.js’i yüklemez; tüm Google JS kütüphaneleri Web Container Client üzerinden
yüklenir. readAnalyticsStorage sandbox API’si ile GA client/session ID’leri
güvenli şekilde okunabilir1.
İstek Akışı ve Mimari
sGTM’i nerede çalıştıracağınıza karar vermeden önce, tek bir isteğin içinden nasıl geçtiğini anlamak gerekir. Model kağıt üzerinde sade, pratikte ince detaylarla dolu: client’lar priority sırasına göre değerlendirilir, isteği ilk claim eden client bir veya birden fazla event üretir, bu event’ler de web container’daki gibi trigger ve tag’lerden geçer2.
Tarayıcı / Uygulama / Backend
| (measurement request: GA4 /collect, MP, custom webhook)
v
Tagging Server (Cloud Run, Stape, Docker)
| 1. Client'lar priority sırasına göre çalışır, ilk eşleşen isteği claim eder
| 2. Claim eden client, isteği event'lere dönüştürür
| 3. Trigger'lar event'lere bakar, eşleşenler tag'leri ateşler
| 4. Tag'ler payload'ı vendor'lara iletir (GA4, Ads, Meta CAPI, BigQuery)
v
Vendor endpoint'leri
Bu diyagramın açığa çıkardığı üç şey:
- Client’lar adapter’dır, endpoint değil. Bir client gelen HTTP isteğini (şekli fark etmez) okur ve GTM event’lerine çevirir. Custom client yazarak Shopify webhook’ları, CRM event’leri ya da native app SDK payload’ları gibi standart dışı veriyi de işleyebilirsiniz.
- Priority kritik. İki client aynı isteği claim edebiliyorsa, priority’si yüksek olan kazanır. Üst üste binen client’lar (stock GA4 + custom GA4 varyantı gibi) sessiz yönlendirme hatalarının en sık kaynağıdır.
- Bir istek birden fazla event üretebilir. GA4 batch payload’ı N tane event doğurur; her event trigger’lardan bağımsız geçer. Tag ateşlemesi event başına, istek başına değil.
Stock server container’lar GA4 ve Measurement Protocol client’larıyla gelir. Bunun ötesindeki her şey (Meta CAPI, TikTok eAPI, custom webhook’lar) community template veya kendi yazdığınız client kodunu gerektirir.
Altyapı Seçenekleri
sGTM bir Docker container olarak çalışır. Bunu nerede çalıştırdığınız, maliyet, bakım yükü ve 1st-party cookie yeteneklerini doğrudan etkiler.
Google Cloud Run (Varsayılan)
Google’in önerilen yolu3.
Kurulum adımları:
- GTM’de yeni bir Server tipinde container oluşturun
- Otomatik seçeneği ile GCP projenizi bağlayıp ödeme yöntemini seçin
- Container oluşturulduğunda size
transport_urlverilir - Client-side GTM’deki GA4 tag’inde Send to server container seçeneğini aktifleştirip bu URL’i girin
Özellikler:
- Otomatik ölçekleme (yüksek trafikte 3+ instance, her biri max 1 vCPU; fazla vCPU auto-scaling’i bozar)
- Kullanıma göre faturalandırma (request + CPU/memory)
- GCP ekosistemi ile entegrasyon (BigQuery, Logging)
- Docker image:
gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable
Dikkat: Cloud Run faturaları trafik artışıyla birlikte öngörülemeyen şekilde yükselebilir. Maliyet izleme ve uyarı mekanizmaları kurulmalı.
Stape (Managed Hosting)
Kendi altyapınızı kurmak istemiyorsanız Stape gibi managed hosting çözümleri kurulum ve bakım yükünü ortadan kaldırıyor4.
Kurulum adımları:
- Stape hesabı oluşturun
- sGTM container’inizi bağlayıp DNS yapılandırması yapın
- Dakikalar içinde çalışmaya başlar
Özellikler:
- Sabit aylık ücretlendirme (request limitlerine göre)
- Otomatik sGTM versiyon güncellemeleri (v3.2.0 gibi)
- Own CDN: sGTM domain’ini sitenizin IP adresi ile aynı subnet’e yönlendirir; Safari ve Firefox tarafından gerçek 1st-party olarak kabul edilir
- Log ve monitoring sistemi (anomali bildirimleri dahil)
- Chrome extension ile debug kolaylığı
Docker Self-Hosted (Lokal Geliştirme ve Production)
Google, sGTM’i resmi Docker image olarak yayınlar (gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable) ve bu image Docker çalışan her yerde çalışır, localhost dahil. Client template’leri üzerinde denemeler yapmak, consent akışını test etmek veya production bug’ını tekrar üretmek için GCP’ye dokunmadan en hızlı yol budur.
Simo Ahava, Aralık 2025’te yayınladığı docker-compose stack’i ile tagging server ve preview server’ı lokalde ayağa kaldırıyor5:
# docker-compose.yml ve doldurulmuş .env dosyası ile
docker-compose up -d
# Tagging server: https://localhost:8888
# Preview server: https://localhost:8889
.env dosyasına iki değer gerekli:
CONTAINER_CONFIG, GTM Admin, Container Settings ekranından kopyalanırGA4_PROPERTY, GA4 Measurement ID’niz (örn.G-ABC123XYZ)
macOS’ta Docker Desktop belirli bir şirket büyüklüğünün üstünde ücretli lisans
ister ve ağır bir VM çalıştırır. Colima
ücretsiz ve açık kaynak bir alternatif: Lima üzerine kurulu, standart Docker
CLI’ını kullanır. brew install colima docker docker-compose && colima start
genelde sGTM stack’ini lokalde çalıştırmak için yeterli.
Lokal Docker ne zaman işe yarar:
- Custom client template’leri üzerinde deneme yaparken preview push’a gerek kalmadan
- Public staging URL’e erişemeyen servislerden gelen webhook’ları debug ederken
- Production bug’ını bilinen çalışan bir container config’e karşı reprodüce ederken
- Cloud Run ayağa kaldırmadan CI’da integration test çalıştırırken
Dikkat: sGTM server_container_url dış isteklerde port’u strip eder, bu yüzden bazı vendor tag’leri localhost:8888’e yönlendirildiğinde kırılır. transport_url workaround’u GA4 senaryolarının çoğunu kurtarır ama feature parity sınırlı.
Production self-hosting (Hetzner, bare-metal, managed olmayan her ortam) için aynı image kullanılır; DNS, TLS, autoscaling, log retention ve sGTM versiyon upgrade’leri sizin sorumluluğunuza kalır. Minimum iki container: bir preview server, bir veya daha fazla tagging server6.
Diğer Alternatifler
| Seçenek | Uygunluk | Not |
|---|---|---|
| AWS ECS | Evet | Resmi rehber mevcut, ECS + API Gateway + Kinesis mimarisi7 |
| Cloudflare Workers | Hayır | sGTM Docker/Node.js uygulaması, Workers V8 isolate ortamı uyumsuz. Proxy olarak kullanılabilir |
Maliyet Modeli Karşılaştırması
| Cloud Run | Stape | Docker Self-host | |
|---|---|---|---|
| Maliyet modeli | Kullanıma göre (request+CPU) | Sabit aylık paket | Sunucu maliyeti (sabit) |
| Ölçeklenme | Otomatik, trafikle artar | Paket içinde sabit | Manuel |
| Kurulum zorluğu | Yüksek | Düşük | Çok yüksek |
| Bakım | Orta | Düşük (managed) | Yüksek |
| 1st-party cookie | Custom domain gerekli | Own CDN dahil | Manuel yapılandırma |
| sGTM güncellemeleri | Manuel redeploy | Otomatik (~1 hafta) | Manuel |
Hosting seçenekleri arasında karar verirken bakım kapasitesi, veri egemenliği ve trafik öngörülebilirliği eksenlerine dayalı detaylı karşılaştırma ve ajans multi-client kurulumu için sGTM Hosting Karar Matrisi yazısına bakabilirsin. sGTM’nin ajans marketing stack içindeki yerini (consent, analytics, attribution, governance katmanlarıyla birlikte) ele alan pillar: Ajanslar için Marketing Stack 2026.
Custom Domain ve 1st-Party Cookie Kurulumu
Safari ITP 2.1’den (2019) bu yana JavaScript ile oluşturulan cookie’lerin ömrü 7 günle sınırlı. Server-set cookie’ler (Set-Cookie header) bu kısıtlamadan muaf, ancak Safari CNAME cloaking tespiti yapıyor: tracking subdomain’inin IP adresi ana domain’den farklı bir subnet’e çözümleniyorsa, o cookie’ler de 7 güne düşürülüyor. Detaylı tarayıcı cookie davranışı tablosu için etkinlik verileri yazısına bakabilirsiniz.
DNS Yapılandırması
- sGTM için bir subdomain seçin (orn.
ss.siteadi.com). Daha önce kullanılmamış olmalı. - Subdomain için A ve AAAA kayıtlarını sGTM sunucusunun IP adresine yönlendirin.
- IP adresleri ana domain ile aynı subnet’te olmalı. Bu, Safari’nin CNAME cloaking tespitini bypass eder.
CNAME cloaking (tracking subdomain’ini üçüncü parti sunucuya yönlendirme) gri alan olarak değerlendirilir ve Safari tarafından tespit edilebilir. sGTM ve Stape bu yolu kullanmaz; aynı altyapı üzerinden 1st-party cookie set etmek tarayıcı politikalarıyla uyumlu bir yaklaşımdır.
SSL Sertifikası
DNS kayıtları yönlendirildikten sonra SSL sertifikası oluşturulmalı. Cloud Run otomatik sertifika sağlar. Stape’de bu süreç otomatiktir. Self-host senaryosunda Let’s Encrypt veya mevcut sertifika aktarılmalı.
Doğrulama
GTM Preview modunda custom domain’in çalışıyor olduğunu doğrulayın. Preview sayfası sorunsuz açılıyorsa DNS ve SSL yapılandırması tamamdır.
Tag Yapılandırması
GA4
sGTM v3.2.0 ile GA4 tag yapılandırması değişti. Eskiden GA4 Client doğrudan gtag.js’i yüklerken, artık tüm Google JS kütüphaneleri Web Container Client üzerinden yükleniyor8.
Kurulum:
- Sunucu container’inda Clients bölümünden GA4 istemcisini aktifleştirin
- Web Container Client oluşturun ve ilgili Google Tag Measurement ID’leri whitelistleyin
- “Automatically serve all dependent Google scripts” seçeneğini aktifleştirin
- Tags bölümünde GA4 etiketi oluşturun
- Tetikleyici olarak Client Name = GA4 değeri verin
Client-side GTM’de GA4 tag’indeki Send to server container seçeneğini aktifleştirip transport_url’i girin:
<script>
gtag("config", "G-XXXXXX", {
transport_url: "https://ss.siteadi.com",
first_party_collection: true,
});
</script>
Google Ads
Remarketing
Sunucu container’inda Google Ads Remarketing etiketi oluşturup Ads panelindeki dönüşüm kimliğini (Conversion ID) girin. Tetikleyici: All Pages9.
Conversion Tracking
Dönüşüm etiketi için ilgili event’in (orn. purchase) sunucu container’ina iletilmesi gerekir. Client-side GTM’de bu event için bir GA4 Event etiketi oluşturun, ardından sunucu container’inda Google Ads Conversion Tracking etiketini yapılandırın10.
Enhanced Conversions
Enhanced Conversions, dönüşüm anında toplanan müşteri verisini (e-posta, telefon, ad, adres) SHA-256 ile hash’leyerek Google’in oturum açmış kullanıcı veritabanıyla eşleştiriyor. Cookie olmadan cross-device dönüşüm takibi sağlıyor11.
Server-side kurulum:
- Google Ads’te Enhanced Conversions’i aktifleştirin (Settings > Conversions > ilgili dönüşüm > Enhanced Conversions)
- Client-side GTM’de GA4 tag’ine
user_datanesnesi ekleyin (email, phone, name, address) - Veri sGTM container’ina GA4 hit ile akar
- sGTM’deki Google Ads Conversion Tracking etiketi
user_data’yi Event Data’dan okur, hash’ler ve dönüşüm ile birlikte gönderir
// Client-side dataLayer push örneği
dataLayer.push({
event: "purchase",
user_data: {
email: "müşteri@ornek.com",
phone_number: "+905001234567",
address: {
first_name: "Ali",
last_name: "Yilmaz",
country: "TR",
},
},
});
Tüm PII verileri hash’lenmeden önce normalize edilmeli: küçük harf, boşluk temizleme, telefon için E.164 formatı.
Meta Conversions API (CAPI)
sGTM üzerinden Meta CAPI entegrasyonu, sunucudan sunucuya dönüşüm verisi gönderiyor12.
Kurulum:
- Meta Events Manager’da Partner Integrations > Google Tag Manager > “Set up with Google” seçeneğini kullanın
- GTM web ve server container’larınızı bağlayın
- Tagging server URL’inizi ve GA4 Measurement ID’nizi girin
- Meta otomatik olarak server-side tag’leri oluşturur
- Events Manager > Settings > Conversions API bölümünden access token oluşturun
Alternatif olarak, GTM Community Template Gallery’den Facebook Conversions API şablonu kullanılabilir.
Event Deduplication (Kritik):
Browser Pixel ve server CAPI event’leri aynı event_id ve aynı event_name göndermelidir. Meta bu iki alanı kullanarak event’leri eşleştirir ve tekilleştirir. Deduplication doğru yapılandırılmazsa dönüşümler çift sayılır, reklamların optimizasyonu bozulur13.
Event Match Quality (EMQ):
Meta’nin 0-10 ölçeğindeki eşleştirme kalitesi skorudur. Minimum 6, ideal 8+ hedeflenmeli. Optimize etmek için: hash’lenmiş e-posta, telefon, IP adresi, user agent, fbp cookie, fbc cookie ve external_id gönderilmeli14.
Scout ile Çoklu Platform Dağıtımı
sGTM tek başına GA4, Google Ads ve Meta CAPI için yeterli olsa da, e-ticaret sitelerinde TikTok, Pinterest, Klaviyo gibi birden fazla platforma veri dağıtmak gerektiğinde yönetim karmaşıklaşabiliyor. Bu noktada dnomia bünyesinde geliştirdiğim Scout, sGTM veya Zaraz’dan toplanan event’leri alıp batch olarak işliyor, profil verileriyle zenginleştiriyor ve birden fazla hedefe tek noktadan dağıtıyor.
sGTM Container
-> Scout Collector (batch işleme, zenginleştirme, tekilleştirme)
-> Meta CAPI, GA4 MP, Google Ads, Klaviyo, TikTok, Pinterest...
Bu yaklaşım özellikle çoklu reklam platformu kullanan e-ticaret siteleri için tek tek sGTM tag’i oluşturmak yerine merkezi bir dağıtım katmanı sağlıyor.
Consent Mode v2 Server-Side Yapılandırması
Consent Mode v2 Temmuz 2025’ten itibaren EEA trafiği için zorunlu. sGTM’de consent sinyalleri otomatik olarak taşınıyor15.
Nasıl çalışıyor:
- Client-side CMP (Cookiebot, Usercentrics vb.) sayfa yüklendiğinde
gtag('consent', 'default', {...})ile tüm sinyallerideniedolarak set eder - Kullanıcı consent banner’i ile etkileşir
- CMP
gtag('consent', 'update', {...})ile kullanıcının tercihlerini gönderir - Event’ler tetiklendiğinde consent durumu
gcsparametresi olarak request payload’ına gömülür - sGTM bu sinyalleri otomatik olarak alır
Dört consent sinyali:
| Sinyal | Kontrol ettiği alan |
|---|---|
ad_storage | Reklam cookie’leri (Google Ads, Floodlight) |
analytics_storage | Analitik cookie’leri (GA4) |
ad_user_data | Kullanıcı verisinin Google’a reklam amaçlı gönderilmesi |
ad_personalization | Kişiselleştirilmiş reklamcılık |
sGTM’deki Google GA4 ve Google Ads tag’leri consent sinyallerini native olarak anlar. Consent reddedildiğinde bile Google davranışsal modelleme ile kayıp dönüşümlerin bir kısmını tahmin eder.
Debug ve Hata Ayıklama
Preview Modu
sGTM debug süreci “Two-Tab Dance” olarak bilinen bir akış izler16:
- Server-side GTM container’inda Preview tıklayın (debug sekmesi açılır)
- Client-side GTM container’inda da Preview aktifleştirin
- Web sitenizi üçüncü bir sekmede açıp işlemleri gerçekleştirin
- Server-side preview sekmesinde gelen istekleri kontrol edin
Yaygın sorunlar:
- Preview cookie’leri engelleniyor: Tarayıcı eklentileri, VPN veya gizlilik ayarları preview cookie’lerini engelleyebilir
- “No Client Claimed the Request”: Hiçbir client şablonu gelen istek formatını eşleştiremiyor. Client yapılandırması kontrol edilmeli
- Load balancer timeout: 20 saniyeden kısa timeout ayarı preview modunu bozar
- Yayına alınmamış değişiklikler: Server-side container’daki tag değişiklikleri yayına alınmazsa client-side’dan gelen isteklere 404 dönecektir
X-Gtm-Server-Preview ile Web Dışı İstekleri Debug Etme
Preview modu yalnızca tarayıcının doğru cookie’lerle gönderdiği istekleri yakalar. Cookie kuramayan her şey için, Shopify, Paddle veya CRM webhook’ları, native mobil uygulama event’leri, server-to-server Measurement Protocol çağrıları, X-Gtm-Server-Preview HTTP header’ı köprü görevi görür17.
Header değerini nasıl alırsınız:
- sGTM Preview modunu açın
- Sağ üstteki menü, Send requests manually
X-Gtm-Server-Previewdeğerini kopyalayın (base64 kodlu token,env-XXX|...|...biçiminde)
curl ile kullanım (webhook payload’ı debug etmek için tipik):
curl -X POST https://ss.ornekdomain.com/mp/collect \
-H "X-Gtm-Server-Preview: ZW52LTI1NXx2RVNkYnBiSFdzTVRTZXB..." \
-H "Content-Type: application/json" \
-d '{"client_id":"test.1","events":[{"name":"purchase","params":{"value":49.9,"currency":"USD"}}]}'
Backend fetch çağrısından (Node, integration test):
await fetch(`${SGTM_URL}/events`, {
method: "POST",
headers: {
"X-Gtm-Server-Preview": process.env.SGTM_PREVIEW_HEADER,
"Content-Type": "application/json",
},
body: JSON.stringify(payload),
});
Dikkat edilmesi gerekenler:
- Token oturum ölçeklidir. Preview kapandığında, workspace değiştiğinde, cookie temizlendiğinde veya Preview başka tarayıcıda açıldığında yeniden üretilir.
- Asla kaynak koda commit etmeyin veya production client’lara gömmeyin. Bu yalnızca geliştirme zamanı debug aracıdır.
- Takım halinde paylaşılan debug oturumlarında, başka biri Preview açtığında token’ı yeniden kopyalamak gerekir; yalnızca en son oturum geçerlidir.
- Mobil uygulamalarda header’ı yalnızca debug build’lerine enjekte edin. Preview etkin binary’nin production’a çıkması, gerçek trafiği debug sekmenize gönderir.
Bu header, sGTM’i uçtan uca debug edilebilir kılan parçadır: yalnızca tarayıcı değil, tagging server’a veri besleyen her sistem dahil.
Debug Araçları
- Chrome Extension: “sGTM - add X-Gtm-Server-Preview Header” ile
X-Gtm-Server-Previewheader’i ve_dbg=1parametresi otomatik eklenir - Stape Debugger: Teknik olmayan kullanıcılar için kullanıcı dostu debug arayüzü
- GTM Preview + console: Client ve server container’ları aynı anda preview edilerek uçtan uca veri akışı doğrulanabilir
sGTM’in Sınırları: Gerçeklik Kontrolü
sGTM’i “her şeyi çözen tek altyapı” olarak pazarlayan içerik çok. Bietolini’nin 2026 tarihli karşılaştırma analizinin öne çıkardığı üç pratik gerçek, karmaşıklık ve aylık faturayı üstlenmeden önce görülmesi gereken ayrımları netleştiriyor18.
Adblocker bypass tek başına çalışmıyor
Sunucu tarafı konteyner trafiği custom subdomain üzerinden aksa da, adblocker listeleri subdomain kalıplarını, payload yapısını ve davranışsal sinyalleri yakalıyor. DataUnlocker’ın 2025 analizine göre yaygın adblocker yazılımının yaklaşık yüzde 80’i custom domain’li sGTM trafiğini hâlâ tespit edip engelleyebiliyor19. Asıl kazanç CAPI katmanında: Meta Conversions API, Google Ads Conversion API gibi sunucudan sunucuya entegrasyonlar blocker listelerinden tamamen bağımsız çalışıyor. Stape Analytics case study’lerinde raporlanan yüzde 24-93 conversion recovery rakamları bu katmandan geliyor, sGTM’in subdomain’e taşınmasından değil.
Performans iddiaları bağlama bağlı
Stape’in kendi sitesinde yaptığı benchmark mobil PageSpeed skorunda 56 vs 95, 39 puanlık fark gösteriyor20. Bu best case: GA4, Facebook Pixel, HubSpot, Klaviyo gibi ağır client-side tag’lerin tamamı sunucu tarafına taşındığında. Semetis’in WebPageTest ve PageSpeed Insights ile yaptığı kontrollü ölçümler sonucunu “anlamlı ama kesin değil” olarak yorumluyor: kazanç hangi tag’lerin ve kaç tanesinin taşındığına bağlı21. Yalnızca GA4 kullanan bir sitede PageSpeed farkı çoğu zaman 5 puanın altında kalıyor.
Safari ITP tam olarak kaybolmaz
Custom domain kurmak yetmiyor. Safari 16.4 (Nisan 2023) sonrası server-set cookie’ler de subdomain IP’si ile ana domain IP’si aynı ilk 16 bit’i paylaşmıyorsa 7 güne iniyor (WebKit cross-site IP check). Default bir Cloud Run kurulumu kendi IP aralığıyla geliyor ve Safari’de cookie’ler yine 7 güne düşüyor. Doğru IP alignment ile bu süre 400 güne çıkıyor, ama bu adım atlanırsa sGTM’in Safari üzerindeki temel satış argümanı gerçekleşmiyor22. GA4’teki Safari trafiği yüzde 15’in altındaysa bu kazanım tek başına yatırım gerekçesi olmuyor.
Taşınma eşiği
Üç kısıtı birleştirince pratik eşik ortaya çıkıyor: sGTM karmaşıklığı ve maliyeti aylık 5.000 dolar üzeri paid media harcayan, conversion sinyal kaybının gerçek bir bütçe kalemi olduğu siteler için anlamlı. Bu eşiğin altında, client-side GTM üstünde seçilmiş tag’ler için hibrit CAPI (Meta’nın kendi CAPI Gateway’i veya Google Tag Gateway) çoğu durumda yeterli oluyor.
Veri Egemenliği: “EU Şirketi” Garanti Değil
“Avrupalı sağlayıcı kullandığımız için ABD yasalarından etkilenmiyoruz” cümlesi satın alma süreçlerinde sıkça duyuluyor. Teknik gerçek farklı: sağlayıcının yasal kayıt ülkesi değil, altyapıyı işleten hosting provider’ın hangi yargıya tabi olduğu belirleyici23.
İki ABD yasası uzaktan erişim yaratıyor
- CLOUD Yasası (2018): ABD’li şirketleri dünya genelindeki verileri yerel mahkeme kararı olmadan ABD kolluk kuvvetlerine teslim etmeye zorluyor. Sunucu AB’de olsa da geçerli.
- FISA 702: ABD sahipli servislerden geçen veya bu servislerde depolanan ABD dışı kişilerin iletişimini warrant gerektirmeden izleme yetkisi veriyor.
Her iki düzenleme de altyapı sağlayıcısı ABD sahipli olduğunda aynı anda uygulanıyor, fiziki sunucu lokasyonundan bağımsız24.
sGTM hosting sağlayıcılarının güncel durumu
Bietolini’nin Codeberg’te açık tuttuğu eu-martech-sovereignty tablosundan 2026-04-12 tarihli veri25:
| Sağlayıcı | Yasal merkez | Altyapı | CLOUD Yasası / FISA 702 |
|---|---|---|---|
| Stape | Kıbrıs | GCP europe-west1 (Belçika) | Evet |
| Addingwell | Fransa | Dedicated EU altyapı (iddia) | Doğrulanamadı |
| Taggrs | Hollanda | Belgelenmemiş | Belirsiz |
| Self-host Hetzner, OVH | DE, FR | EU sahipli | Hayır |
Bugün itibarıyla doğrulanabilir ABD-dışı tek yol Hetzner, OVH ya da başka bir EU sahipli sağlayıcı üzerinde self-host. Stape’in Brüksel endpoint’i Google LLC IP’sine çözümleniyor; coğrafi konum AB olsa da sahiplik ABD.
Satın alma süreci için üç soru
Bir sGTM sağlayıcısı değerlendirirken KVKK ve GDPR data processing agreement’larının ötesinde şu üç soruyu sormanız gerekiyor:
- Altyapıyı işleten yasal varlığın sahibi kim? Şirket merkezi değil, hisse sahipliği ve ultimate beneficial owner.
- Hosting sağlayıcısı hangi yargılarda disclosure order zorunluluğu altında?
- ABD sahipli olmayan deployment seçeneği var mı, varsa doğrulanabilir mi?
Schrems II kararı sonrası transfer impact assessment için sağlayıcı zincirinin tamamını sorgulamak gerekiyor. Sadece sunucu ülkesini değil.
Sonuç
sGTM 2026’da veri toplama stratejisinin temel taşlarından biri haline geldi. Client-side tracking’in tarayıcı kısıtlamaları nedeniyle yetersiz kaldığı yeni dönemde, server-side yaklaşım veri kalitesi, gizlilik ve platform entegrasyonları açısından kaçınılmaz. Ancak karar vermeden önce eşiği doğru kurun: aylık 5.000 doların altında paid media harcayan ve Safari trafiği yüzde 15’in altında kalan siteler için sGTM’in getirdiği bakım yükü çoğu zaman hibrit bir CAPI kurulumundan daha pahalıya geliyor.
Altyapı seçimi bağınıza bağlı:
- Tam kontrol ve GCP deneyimi varsa: Cloud Run
- Hızlı kurulum ve öngörülebilir maliyet: Stape
- Kendi sunucu altyapısı: Docker self-host
- KVKK ve GDPR için doğrulanabilir egemenlik: Hetzner veya OVH üzerinde self-host
Hangi yolu seçerseniz seçin, custom domain ile IP alignment (1st-party cookie ve Safari için), Consent Mode v2 entegrasyonu, event deduplication (özellikle Meta CAPI) ve sağlayıcının yargı yetkisi sorgusu atlamanın çok pahalı olduğu dört kritik adım.
Footnotes
- sGTM v3.2.0 Release Notes ↩
- An Introduction to Server-Side Tagging. Google for Developers ↩
- Cloud Run Setup Guide. Google Tag Manager ↩
- Stape sGTM Hosting Documentation ↩
- Run Server-side Google Tag Manager On Localhost. Simo Ahava ↩
- Manual Setup Guide. Google Tag Manager ↩
- Using Google Tag Manager for Server-Side Analytics on AWS ↩
- How sGTM loads Google JavaScript libraries ↩
- Google Ads Remarketing. Google Tag Manager ↩
- Google Ads Conversions. Google Tag Manager ↩
- About Enhanced Conversions. Google Ads Help ↩
- Meta CAPI with Server-Side GTM ↩
- Event Deduplication for Meta Conversions ↩
- Event Match Quality Score ↩
- Implement Consent Mode with Server-Side Tag Manager ↩
- The Two-Tab Debugging Dance ↩
- Preview Requests In Server-side Google Tag Manager. Simo Ahava ↩
- Server-side vs Client-side GTM: 2026 Reality Check. Paolo Bietolini ↩
- Stop Thinking Server-Side GTM Protects You From Ad Blockers. DataUnlocker ↩
- Improving Website Page Speed With Server-Side Tracking. Stape ↩
- Does Server-Side Tagging Positively Impact Page Speed? Semetis ↩
- Safari ITP and Server-Side Tagging. Stape ↩
- sGTM Hosting Providers: Who Runs Where. Paolo Bietolini ↩
- European Company vs European Infrastructure. Paolo Bietolini ↩
- eu-martech-sovereignty public repository. Codeberg ↩
- 01 sGTM v3.2.0 ile GA4 Client artık gtag.js yüklemiyor; tüm Google JS kütüphaneleri Web Container Client üzerinden yükleniyor
- 02 Stape gibi managed hosting çözümleri Cloud Run'a göre kurulum ve bakım yükünü önemli ölçüde azaltıyor
- 03 Meta CAPI entegrasyonunda event deduplication (event_id + event_name) doğru yapılandırılmazsa dönüşümler çift sayılır
- 04 Enhanced Conversions ile hash'lenmiş müşteri verisi (e-posta, telefon) server-side gönderilerek cookie'siz cross-device attribution sağlanıyor
- 05 Custom domain ve same-origin yapılandırması Safari ITP'nin 7 günlük JS cookie limitini bypass ediyor
- 06 Consent Mode v2 sinyalleri GA4 hit'leriyle gcs parametresi olarak otomatik taşınıyor; server-side tag'ler consent durumuna göre ateşlenebiliyor
- 07 sGTM adblocker'ı tek başına bypass etmez: yaygın adblocker yazılımının yaklaşık %80'i custom domain'li sGTM trafiğini hâlâ tespit ediyor. Gerçek kazanç Meta ve Google'ın sunucudan sunucuya Conversion API katmanında yatıyor
- 08 Sağlayıcının yasal merkezinin AB olması veri egemenliği garantisi değil: altyapı ABD sahipli bulut üzerinde çalışıyorsa CLOUD Yasası ve FISA 702 geçerli kalıyor. Doğrulanabilir tek ABD-dışı yol Hetzner veya OVH gibi EU sahipli altyapıda self-host
+ sGTM ücretsiz mi?
sGTM yazılımı ücretsiz, ancak çalıştırmak için altyapı gerekiyor. Google Cloud Run kullanıma göre faturalandırır. Stape gibi managed hosting çözümleri sabit aylık ücretlendirme sunar.
+ Cloud Run mu Stape mi tercih etmeliyim?
Cloud Run tam kontrol ve GCP ekosistem entegrasyonu sunar ama kurulum ve bakım karmaşık. Stape kurulumu dakikalar içinde tamamlanır, otomatik güncelleme ve Own CDN özelliği ile 1st-party cookie yönetimini kolaylaştırır. Teknik ekip kapasitesi ve öngörülebilir maliyet ihtiyacı belirleyici.
+ sGTM ile Zaraz arasındaki fark nedir?
sGTM, GTM container'ini sunucu tarafında çalıştırır; tam veri kontrolü, CAPI entegrasyonları ve karmaşık trigger mantığı sunar. Zaraz, Cloudflare edge'inde çalışır; sıfır JS yükü ve kolay kurulum avantajı var ama entegrasyon çeşitliliği ve trigger esnekliği sınırlı.
+ Custom domain zorunlu mu?
Teknik olarak zorunlu değil ama Safari ITP'nin JS cookie'leri 7 günle sınırlaması nedeniyle strongly recommended. Custom domain ile server-set 1st-party cookie'ler bu kısıtlamadan muaf tutuluyor.
+ Meta CAPI sGTM olmadan kurulabilir mi?
Evet, Meta'nin kendi CAPI Gateway çözümü veya doğrudan API entegrasyonu ile kurulabilir. Ancak sGTM, tek bir container üzerinden birden fazla platforma (Meta, Google, TikTok) veri dağıtımı sağlayarak yönetim yükünü azaltır.
+ sGTM kurulumu ne kadar sürer?
Stape ile temel kurulum 30 dakika içinde tamamlanabilir. Cloud Run ile 2-4 saat (GCP deneyimine bağlı). Custom domain, CAPI entegrasyonları ve Consent Mode yapılandırması dahil tam kurulum 1-2 gün sürebilir.
+ sGTM adblocker'ı bypass eder mi?
Tek başına hayır. DataUnlocker'ın 2025 analizine göre yaygın adblocker yazılımının yaklaşık yüzde 80'i custom domain'li sGTM trafiğini bile tespit edip engelleyebiliyor. Adblocker'lar artık request kalıplarını, payload yapısını ve davranışsal sinyalleri inceliyor. Gerçek kazanım Meta Conversions API ve Google Ads Conversion API gibi sunucudan sunucuya entegrasyonlarda; Stape Analytics case study'lerindeki yüzde 24-93 dönüşüm kurtarma bu katmandan geliyor.
+ EU merkezli sGTM sağlayıcısı KVKK ve GDPR için yeterli mi?
Şirketin kayıt ülkesi değil, altyapıyı işleten hosting sağlayıcısının yargı yetkisi belirleyici. Stape örneğin GCP'nin Belçika bölgesi üzerinde çalışıyor ve bu ABD CLOUD Yasası kapsamında kalıyor. Addingwell dedike EU altyapısı iddia ediyor, Taggrs altyapısı belgelenmiş değil. Bugün itibarıyla doğrulanabilir tek ABD-dışı yol Hetzner veya OVH gibi EU sahipli altyapıda self-host. Schrems II sonrası transfer impact assessment için sağlayıcı zincirinin tamamını sorgulamak gerekiyor.
+ sGTM her site için gerekli mi?
Hayır. Pratik eşik aylık 5.000 dolar üzeri paid media harcayan, conversion sinyal kaybının gerçek bir bütçe kalemi olduğu siteler. Safari trafiği yüzde 15'in altındaysa IP alignment yatırımı tek başına yeterli gerekçe değil. Bu eşiğin altında client-side GTM üstünde seçilmiş tag'ler için hibrit CAPI çoğu durumda yeterli.