İçeriğe geç
ceaksan
gtm

Server-Side GTM (sGTM) Kurulum Rehberi: Cloud Run, Stape ve Alternatifleri

Server-Side Google Tag Manager kurulumu, altyapı seçenekleri ve yapılandırma rehberi. Cloud Run, Stape ve Docker ile sGTM kurulumu, GA4 ve Google Ads tag yapılandırması, Meta CAPI entegrasyonu, Enhanced Conversions, Consent Mode v2 server-side yönetimi ve 1st-party cookie stratejisi.

15 Eyl 2025 13 dk okuma Güncellendi: 21 Nis 2026
TL;DR

Server-Side GTM (sGTM), etiket yönetimini tarayıcıdan sunucu tarafına taşıyarak veri kalitesini, gizliliği ve performansı artırıyor. Bu rehberde Cloud Run, Stape ve Docker ile kurulum, GA4/Google Ads/Meta CAPI tag yapılandırması, Enhanced Conversions, 1st-party cookie stratejisi, Consent Mode v2 server-side yönetimi ve debug süreçlerini ele aldım.

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...
not

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ı:

  1. GTM’de yeni bir Server tipinde container oluşturun
  2. Otomatik seçeneği ile GCP projenizi bağlayıp ödeme yöntemini seçin
  3. Container oluşturulduğunda size transport_url verilir
  4. 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ı:

  1. Stape hesabı oluşturun
  2. sGTM container’inizi bağlayıp DNS yapılandırması yapın
  3. 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ır
  • GA4_PROPERTY, GA4 Measurement ID’niz (örn. G-ABC123XYZ)
öneri

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çenekUygunlukNot
AWS ECSEvetResmi rehber mevcut, ECS + API Gateway + Kinesis mimarisi7
Cloudflare WorkersHayırsGTM Docker/Node.js uygulaması, Workers V8 isolate ortamı uyumsuz. Proxy olarak kullanılabilir

Maliyet Modeli Karşılaştırması

Cloud RunStapeDocker Self-host
Maliyet modeliKullanıma göre (request+CPU)Sabit aylık paketSunucu maliyeti (sabit)
ÖlçeklenmeOtomatik, trafikle artarPaket içinde sabitManuel
Kurulum zorluğuYüksekDüşükÇok yüksek
BakımOrtaDüşük (managed)Yüksek
1st-party cookieCustom domain gerekliOwn CDN dahilManuel yapılandırma
sGTM güncellemeleriManuel redeployOtomatik (~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.

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ı

  1. sGTM için bir subdomain seçin (orn. ss.siteadi.com). Daha önce kullanılmamış olmalı.
  2. Subdomain için A ve AAAA kayıtlarını sGTM sunucusunun IP adresine yönlendirin.
  3. IP adresleri ana domain ile aynı subnet’te olmalı. Bu, Safari’nin CNAME cloaking tespitini bypass eder.
not

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:

  1. Sunucu container’inda Clients bölümünden GA4 istemcisini aktifleştirin
  2. Web Container Client oluşturun ve ilgili Google Tag Measurement ID’leri whitelistleyin
  3. “Automatically serve all dependent Google scripts” seçeneğini aktifleştirin
  4. Tags bölümünde GA4 etiketi oluşturun
  5. 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>

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:

  1. Google Ads’te Enhanced Conversions’i aktifleştirin (Settings > Conversions > ilgili dönüşüm > Enhanced Conversions)
  2. Client-side GTM’de GA4 tag’ine user_data nesnesi ekleyin (email, phone, name, address)
  3. Veri sGTM container’ina GA4 hit ile akar
  4. 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:

  1. Meta Events Manager’da Partner Integrations > Google Tag Manager > “Set up with Google” seçeneğini kullanın
  2. GTM web ve server container’larınızı bağlayın
  3. Tagging server URL’inizi ve GA4 Measurement ID’nizi girin
  4. Meta otomatik olarak server-side tag’leri oluşturur
  5. 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 Temmuz 2025’ten itibaren EEA trafiği için zorunlu. sGTM’de consent sinyalleri otomatik olarak taşınıyor15.

Nasıl çalışıyor:

  1. Client-side CMP (Cookiebot, Usercentrics vb.) sayfa yüklendiğinde gtag('consent', 'default', {...}) ile tüm sinyalleri denied olarak set eder
  2. Kullanıcı consent banner’i ile etkileşir
  3. CMP gtag('consent', 'update', {...}) ile kullanıcının tercihlerini gönderir
  4. Event’ler tetiklendiğinde consent durumu gcs parametresi olarak request payload’ına gömülür
  5. sGTM bu sinyalleri otomatik olarak alır

Dört consent sinyali:

SinyalKontrol ettiği alan
ad_storageReklam cookie’leri (Google Ads, Floodlight)
analytics_storageAnalitik cookie’leri (GA4)
ad_user_dataKullanıcı verisinin Google’a reklam amaçlı gönderilmesi
ad_personalizationKiş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:

  1. Server-side GTM container’inda Preview tıklayın (debug sekmesi açılır)
  2. Client-side GTM container’inda da Preview aktifleştirin
  3. Web sitenizi üçüncü bir sekmede açıp işlemleri gerçekleştirin
  4. 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:

  1. sGTM Preview modunu açın
  2. Sağ üstteki menü, Send requests manually
  3. X-Gtm-Server-Preview değ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-Preview header’i ve _dbg=1 parametresi 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 merkezAltyapıCLOUD Yasası / FISA 702
StapeKıbrısGCP europe-west1 (Belçika)Evet
AddingwellFransaDedicated EU altyapı (iddia)Doğrulanamadı
TaggrsHollandaBelgelenmemişBelirsiz
Self-host Hetzner, OVHDE, FREU sahipliHayı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:

  1. Altyapıyı işleten yasal varlığın sahibi kim? Şirket merkezi değil, hisse sahipliği ve ultimate beneficial owner.
  2. Hosting sağlayıcısı hangi yargılarda disclosure order zorunluluğu altında?
  3. 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

  1. sGTM v3.2.0 Release Notes
  2. An Introduction to Server-Side Tagging. Google for Developers
  3. Cloud Run Setup Guide. Google Tag Manager
  4. Stape sGTM Hosting Documentation
  5. Run Server-side Google Tag Manager On Localhost. Simo Ahava
  6. Manual Setup Guide. Google Tag Manager
  7. Using Google Tag Manager for Server-Side Analytics on AWS
  8. How sGTM loads Google JavaScript libraries
  9. Google Ads Remarketing. Google Tag Manager
  10. Google Ads Conversions. Google Tag Manager
  11. About Enhanced Conversions. Google Ads Help
  12. Meta CAPI with Server-Side GTM
  13. Event Deduplication for Meta Conversions
  14. Event Match Quality Score
  15. Implement Consent Mode with Server-Side Tag Manager
  16. The Two-Tab Debugging Dance
  17. Preview Requests In Server-side Google Tag Manager. Simo Ahava
  18. Server-side vs Client-side GTM: 2026 Reality Check. Paolo Bietolini
  19. Stop Thinking Server-Side GTM Protects You From Ad Blockers. DataUnlocker
  20. Improving Website Page Speed With Server-Side Tracking. Stape
  21. Does Server-Side Tagging Positively Impact Page Speed? Semetis
  22. Safari ITP and Server-Side Tagging. Stape
  23. sGTM Hosting Providers: Who Runs Where. Paolo Bietolini
  24. European Company vs European Infrastructure. Paolo Bietolini
  25. eu-martech-sovereignty public repository. Codeberg
Önemli Noktalar
  • 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
Sık Sorulan Sorular (FAQ)
+ 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.