İçeriğe geç
ceaksan

Consent Mode Kapsamında Kişisel Veri Envanteri: GA4, CAPI, Newsletter ve Webhook Sızıntıları

Kişisel veri, ölçüm sisteminin her katmanında farklı formda dolaşır: raw email, hashed PII, pseudonymized ID, IP. Consent Mode v2 sinyalleri ile her veri tipinin eşlemesi ve pratik sızıntı önleme rehberi.

15 Eyl 2025 8 dk okuma Güncellendi: 22 Nis 2026
TL;DR

Kişisel veri, ölçüm sisteminde birden fazla katmanda dolaşır: client-side event parametreleri, server-side CAPI payload'ları, warehouse export'ları, webhook'lar, newsletter listesi. Consent Mode v2 dört sinyal taşısa da sızıntılar mimari seçimlere göre oluşur; her veri tipinin hangi sinyalle gate'lenmesi gerektiği mimari kararla belirlenir.

Kişisel veri, bir ölçüm sisteminde tek bir yerde durmaz. Client-side event parametrelerinde dolaşır, sGTM üzerinden server-side’a geçer, BigQuery export’unda kalıcı hale gelir, webhook payload’larıyla dış sistemlere akar, newsletter listelerinde ayrı bir amaç kapsamında saklanır. Consent Mode v2 dört sinyal taşır (ad_storage, analytics_storage, ad_user_data, ad_personalization); ancak sinyallerin gate’lediği veri ile sızdıran veri aynı değildir. Bu yazıda veri tipi bazında envanter çıkarılıp her tip için consent eşlemesi ve pratik sızıntı önleme noktaları ele alınıyor.

Consent Mode v2 kurulum mekaniği için Google Consent Mode v2 Kurulumu rehberi ayrı bir yazıda anlatıldı. Buradaki odak veri envanteri ve sızıntı yüzeyleri.

Kişisel Veride Üç Form

Ölçümde kişisel veri üç farklı formda taşınır:

1. Raw PII. Email, telefon, ad-soyad, adres bilgisi açık metin halinde. Form submission, login, abonelik payload’larında doğal olarak oluşur. Ölçüm platformlarına doğrudan gitmemelidir.

2. Hashed PII. Normalize edilmiş (lowercase, trim) email veya phone’un sha256 hash’i. Enhanced Conversions, Meta CAPI user_data, LinkedIn Insight Tag CAPI benzeri server-side match pattern’larında kullanılır. Platforma sunulan yapı bağlamında raw, hashlenmiş veya her ikisi birlikte gider, platform kendi tarafında match için kullanır.

3. Pseudonymized ID. GA4 client_id (_ga cookie), Meta _fbp ve _fbc, Google Ads gclid, gbraid, wbraid. Kullanıcıyı direkt tanımlamaz ama tutarlı bir pseudonymous identifier sağlar. Consent Mode v2 analytics_storage veya ad_storage denied olduğunda cookie oluşturulmaz, kullanıcı her event’te yeni random ID ile gelir (GA4 transient token).

IP ve User-Agent ayrı bir kategori; cihaz ve ağ seviyesinde toplanan bilgiler. Consent Mode v2 doğrudan bunları gate’lemez; kullanım analytics_storage veya ad_storage state’ine göre platform tarafında sınırlandırılır.

GA4 Tarafında PII Sızıntı Noktaları

GA4 kendisi PII beklemez, ama default event parametreleri içinde PII sızabilir. En yaygın üç yüzey:

page_location query string. Site içi arama veya form submission URL’lerinde email/phone parametresi kalırsa event olarak GA4’e düz gider. Örnek: /search?q=user@example.com. GTM seviyesinde page location’u işleyen bir variable ile PII pattern’ı redaction yapılmalı, temizlenmiş URL event’te kullanılmalı. Simo Ahava’nın yayınladığı Custom Task pattern’ı GTM’de bu iş için yaygın kullanılan çözüm1. GA4 property seviyesinde ise Admin > Data Collection and Modification > Data Redaction altında email pattern redaction toggle’ı açılabilir (2023 sonrası native özellik); Google tarafındaki regex [A-Z0-9.*%+-]+@[A-Z0-9.-]+\.[A-Z]{2,} (case-insensitive) ve temel tarama yüzeyleri: page_location, page_referrer, page_path, link_url, video_url, form_destination2. Özel event yapılandırmalarında kontrollerin ilgili parametreler üzerinden de yapılması gerekir.

Site arama (search event) parametresi. Kullanıcı email’i arama kutusuna yazarsa GA4 search_term parametresine düşer. Aynı redaction mantığı burada da geçerli. Ayrıca enhanced measurement otomatik site search tracking’i GA4 property ayarlarından kapatılıp custom event’le ikame edilebilir.

User property ve custom dimension. Geliştirici veya GTM tag’i user_properties veya custom event parameter olarak email/phone gönderirse GA4 bunu kullanıcı profiline ekler. GA4 UI tarafı bazı PII alanlarını reject eder ama otomatik denetim sınırlı; naming convention (customer_email yerine customer_hash) ve code review gerekli.

Property seviyesinde bir güvenlik katmanı: GA4 Data Redaction Settings (Admin > Data Collection and Modification > Data Redaction). Email pattern redaction burada açılabilir; event’lere yazılan URL ve parameter’lar property düzeyinde çıkışta filtrelenir. Bu son savunma; idealde veri GA4’e bile gelmeden temizlenmeli.

Enhanced Conversions ve Meta CAPI: Hashed PII Sorumluluğu

Enhanced Conversions (Google Ads) ve Meta CAPI, conversion match quality’yi artırmak için hashlenmiş user data kabul eder.

Enhanced Conversions iki modda kurulur:

  • Auto-collect (Google Tag): Google Tag sayfadaki form alanlarını otomatik okur, hash’ler ve gönderir. Hashleme sorumluluğu Google tarafında. Kalan görev, raw PII’nin Google’a gitmemesi için form alanlarının doğru attribute’larla işaretlenmesi ve Google’ın bu alanları tanıyabilmesidir.
  • Manual veya sGTM: Custom kod veya GTM tag’iyle user_data objesi oluşturuluyorsa hash’leme uygulayıcı tarafında kalır. Format: sha256, lowercase ve trim edilmiş değer üzerinden. Email için normalize: email.trim().toLowerCase() ardından sha256. Phone için E.164 format ardından sha256. Google Enhanced Conversions HTTPS üzerinden gönderildiğinde hashlenmemiş değer de kabul eder ve kendi tarafında normalize edip hash’ler3; ancak best practice client/sGTM katmanında pre-hash: browser console log’unda veya ağ inspector’da raw PII görünmez, compliance argümanı netleşir. Meta CAPI ise yalnızca hashlenmiş em/ph kabul eder, raw göndermek payload’ı red ettirir.

Meta CAPI user_data: Aynı hash’leme kuralları. em (email sha256), ph (phone sha256), fn/ln (isim sha256), db (doğum tarihi sha256), ge (cinsiyet tek harf sha256). Ek olarak client_ip_address ve client_user_agent raw olarak gönderilir; match quality için gerekli. event_id üzerinden Meta Pixel ile deduplication yapılır.

sGTM kurulumunda user_data payload’ını server tarafında oluşturmak yaygın pattern. Avantajı: hash’leme server’da standardize edilir, hashlenmemiş veri browser’dan sızmaz. Consent Mode v2 ad_user_data: denied ise hash’lenmiş PII bile payload’dan çıkarılmalı; sGTM custom template içinde bu kontrol yazılmalı. Meta’nın resmi sGTM CAPI Tag Template’i bu davranışı içerir.

Newsletter Abonelik: Amaç Kapsamı Genişletme

Newsletter formunda toplanan email, abonelik amacıyla işlenir. KVKK ve GDPR kapsamında bu tek bir amaç. Aynı email’i:

  • Google Customer Match audience’a eklemek
  • Meta Custom Audience’a yüklemek
  • Lookalike/Similar audience kaynağı olarak kullanmak

ayrı birer marketing amacıdır ve abonelik consent’i bunları kapsamaz. Compliance açısından newsletter formunda:

  • Abonelik için ayrı checkbox (zorunlu değilse opt-in)
  • Marketing iletişimi için ayrı checkbox (opt-in, newsletter’dan bağımsız)
  • Third-party audience sync için ayrı checkbox (opt-in, ayrı)

Pratikte çoğu e-ticaret platformu (Klaviyo, Omnisend) consent kategori yönetimini form seviyesinde destekler. Listmonk self-hosted tarafında ise List > Privacy ayarları ve çoklu kategori alanları (tags) ile yönetilir. Her kategoriye karşılık gelen opt-in ayrı timestamp ile saklanmalı; kanıt denetimi için kritik.

Abonelik listesi üzerinden remarketing yapılacaksa suppressed/unsubscribed email’lerin Customer Match / Custom Audience’dan anında çıkarılması için pipeline kurulmalı. Scout veya benzer custom routing platform’ları bu job’ı otomatize eder.

Webhook: Raw Data Transit Yüzeyi

Form submission, checkout event’i, user registration gibi trigger’larda webhook payload’ında raw email, phone ve diğer PII açık metin taşınır. Webhook alıcısı (CRM, ESP, custom endpoint) PII’yi storage’a alırken:

  • TLS 1.2+ zorunlu (transit encryption)
  • Storage’da column-level encryption (at-rest)
  • Payload log’unda PII mask’i (log aggregation servisleri PII’yi canlı saklamamalı)
  • PII’yi 3rd party destination’a forward ediyorsa hash’leme katmanı eklemeli

Shopify, WooCommerce, Paddle webhook’ları bu kategoride; checkout completed event’inde customer email raw gelir. Consent Mode v2 doğrudan webhook trafiğini etkilemez, ama webhook’tan türetilen data (örn. email → Customer Match) ad_user_data ve ad_personalization consent gate’ine tabi.

Webhook’tan Scout tipi pipeline’a forward edildiğinde PII Consent Mode v2 sinyalleriyle birlikte payload’a eklenmeli; destination’larda (Klaviyo, Meta CAPI, Google Customer Match) consent state’ine göre koşullu fire edilmeli.

IP Anonimizasyonu ve Trimming

IP adresi pseudonymized identifier sayılır (GDPR Recital 26); tek başına PII değil ama diğer veriyle kombine edilince kullanıcıyı tanımlayabilir.

GA4: IP adresini saklamaz ve raporlamaz. Eski UA’daki IP Anonymization (AIP) ayarı GA4’te default davranışa dönüştü. BigQuery export’unda da IP kolonu yoktur; sadece türetilen coğrafi bilgiler (country, city) bulunur.

Meta CAPI: client_ip_address parametresinde full IP bekler; match quality için gerekli. KVKK kapsamında IP’yi ham göndermek istenmiyorsa sGTM’de veya reverse proxy’de (Cloudflare Worker, Caddy) son oktet trim edilmiş form gönderilebilir (192.168.1.42192.168.1.0). Match quality hafifçe düşer ama compliance lehine.

Enhanced Conversions: Google Ads tarafında IP zorunlu değil, hash’lenmiş user_data yeterli match sağlar.

sGTM custom Transformation: Tüm outbound event’lere uygulanan IP trim veya mask kuralı bir Transformation ile yazılır. Meta’nın resmi Tag Template IP’yi olduğu gibi gönderir; Transformation katmanı bu varsayılan davranışı override eder. Stape’in Anonymizer power-up’ı veya topluluk IP Transformer / Anonymizer template’i bu iş için hazır çözümler sunar45.

GPC, TCF ve Uluslararası Sinyaller

Consent Mode v2’nin dört sinyali Google ekosistemi için; ancak tarayıcılar ve regülasyonlar ek sinyal katmanları ekliyor.

Global Privacy Control (GPC). 1 Ocak 2026’dan itibaren CA, CO, CT başta olmak üzere 12 ABD eyaletinde yasal binding opt-out sinyali. Firefox, Brave, DuckDuckGo tarafından header seviyesinde (Sec-GPC: 1) gönderilir. Banner üzerinden kullanıcı “accept all” dese bile GPC detect edildiğinde ad_storage, ad_user_data, ad_personalization sinyalleri otomatik denied olur, Shopify Customer Privacy API’de sale_of_data otomatik false olur6. Tractor Supply 2025’te GPC sinyalini yok saydığı için CA AG tarafından $1.35M ceza aldı. CMP tarafında GPC detection varsayılan olarak açık olmalı.

TCF 2.2 ve Google Additional Consent (AC string). IAB Europe’un TCF 2.2 framework’ü yayıncı/programmatic tarafta yaygın. Google IAB GVL’de olmayan kendi ad-tech partner’ları (ATPs) için ek addtl_consent string’i kullanır. Publisher site’larında GAM/AdSense kullanılıyorsa TCF + AC string’i birlikte iletmek zorunlu; aksi halde Google eligibility düşer7. E-ticaret storefront’larında genelde gerekmez.

Hashed PII: Anonymization Değil, Pseudonymization

GDPR Recital 26 ve EDPB guidance’ı net: sha256 hash’lenmiş email “anonymous” değil, pseudonymous bir veridir. Hash tersinmez olsa da aynı email her zaman aynı hash’e dönüşür; dictionary attack, brute-force (email rainbow table) veya cross-reference ile re-identification teorik ve pratik olarak mümkün8.

Operasyonel sonuçlar:

  • Hashed PII hâlâ consent gerektirir; ad_user_data: denied iken hashed email’i Meta CAPI’ye göndermek ihlaldir.
  • Hashed PII hâlâ DSAR (subject access request) kapsamındadır; kullanıcı “veri silme” talep ettiğinde hashed kolon da silinmeli.
  • Hashed PII’yi “anonim veri” olarak ajans raporunda pazarlamamak gerek. Regülatör bunu kabul etmiyor.

Offline Conversion Uploads

CRM veya call center verisinden Google Ads’e conversion upload’u (ConversionUploadService) da kişisel veri transfer noktası. Per-conversion max 5 user_identifiers (hashed email, hashed phone, mailing address) gönderilir9. Web/tag akışından farklı olduğu için Consent Mode v2 matrisinde genelde gözden kaçar; ancak aynı consent principle geçerli: ilgili kullanıcının ad_user_data consent’i olmalı, aksi halde upload edilmemeli. Pipeline tarafında consent state’i CRM’de saklanmalı ve upload sırasında filter olarak kullanılmalı.

VeriPrimary Consent SinyaliTransitNotlar
Raw email (form)yok (consent gate API seviyesinde)Client or serverGA4’e gitmemeli; Meta/Google’a hash’lenmiş gider
Hashed email (CAPI em)ad_user_datasGTM veya clientNormalize + sha256; denied ise payload’dan çıkar
Hashed phone (ph)ad_user_datasGTM veya clientE.164 + sha256
GA4 client_id (_ga cookie)analytics_storageClient cookieDenied: transient token
Meta _fbp / _fbcad_storageClient cookieDenied: cookieless
gclid / gbraid / wbraidad_storageURL → cookieDenied: url_passthrough ile aktarılabilir, cookie yok
Newsletter subscriber emailFirst-party (amaç: abonelik)ServerRemarketing için ayrı opt-in
Webhook payload emailFirst-party (amaç: işlem)Server-to-server3rd-party forward için consent gate
IP (GA4)analytics_storage (default masked)Client → Google edgeSadece coğrafi türetme
IP (Meta CAPI, client_ip_address)ad_storagesGTM → MetaBilerek raw; sGTM/proxy’de trim opsiyonel
User-Agent (Meta CAPI)ad_storagesGTM → MetaBilerek raw; match quality için gerekli
GA4 user_property customanalytics_storageClient → GA4PII yazmamak naming convention
GA4 page_locationanalytics_storageClient → GA4Query PII redaction şart
Offline conversion uploadad_user_dataServer → Google APICRM’de consent state saklanmalı, upload’da filter
GPC sinyalioverride: ad_* = deniedBrowser headerCMP banner kararını geçersiz kılar

İlgili Yazılar

Footnotes

  1. Remove PII from Google Analytics hits. Simo Ahava
  2. Data redaction. Google Analytics Help
  3. Set up Enhanced Conversions. Google Ads Help
  4. Anonymizer power-up. Stape
  5. Using the IP Transformer / Anonymizer server-side GTM template. dumbdata
  6. Global Privacy Control 2026. Clym
  7. About Additional Consent Mode. Google Ad Manager Help
  8. GDPR alert: Are your Enhanced Conversions legal? Optimize Smart
  9. Upload offline conversions. Google Ads API
Önemli Noktalar
  • 01 Kişisel veri, ölçümde üç formda taşınır: raw (email, phone), hashed (sha256 PII for Enhanced Conversions/CAPI) ve pseudonymized ID (client_id, fbp, gclid). Her formun consent gereksinimi farklı.
  • 02 GA4'te en sık PII sızıntısı page_location ve site arama parametresinde olur. Query string'de email veya phone olan URL'ler GA4'e düz gider; event scrub script'i zorunlu.
  • 03 Enhanced Conversions ve Meta CAPI user_data'nın hash'leme sorumluluğu client veya sGTM tarafında; hashlenmemiş PII gönderimi GDPR/KVKK ihlali.
  • 04 Newsletter abonelik email'ini remarketing audience'ına eklemek opt-in kapsam genişletmesi; consent base'i ayrıca kurulmalı (double opt-in marketing amacı).
  • 05 IP, GA4 tarafında default masklı; Meta CAPI ve server-to-server çağrılarda ise full IP gider, sGTM veya reverse proxy katmanında trim opsiyonel.
Sık Sorulan Sorular (FAQ)
+ Consent Mode v2'nin dört sinyali hangi veri tiplerini kapsıyor?

ad_storage reklam çerezlerini (_fbc, _fbp, _gcl), analytics_storage GA4 birinci taraf çerezlerini (_ga), ad_user_data hashlenmiş email/phone'un Google'a/Meta'ya iletimini, ad_personalization remarketing audience'larına eklenmeyi kontrol eder. IP ve pseudonymized ID'ler bu sinyallere düşmez; ayrı bir layer.

+ GA4 page_location'da email varsa ne yapmalı?

Event scrub: GTM variable ile page_location'dan hashlenebilir PII pattern (email, phone regex) çıkarılıp temizlenmiş URL gönderilir. Alternatif olarak GA4 Data Redaction Settings üzerinden property bazında email pattern redaction açılabilir (Admin > Data Collection > Redact Data).

+ Enhanced Conversions için email'i kim hash'liyor?

Client-side Enhanced Conversions auto-collect açıksa Google Tag form alanından yakalayıp kendisi hash'ler. Manual veya sGTM üzerinden kuruluyorsa hash'leme sorumluluğu uygulayıcıdadır; sha256 normalize edilmiş formda (lowercase, trim) gönderilir. Hashlenmemiş PII gönderimi compliance ihlali.

+ Newsletter abonelik email'i remarketing için kullanılabilir mi?

Abonelik kapsam consent'i newsletter içerik alımıyla sınırlıdır. Google Customer Match veya Meta Custom Audience'a aynı email'i eklemek ayrı bir marketing amacıdır ve consent base'i ayrıca kurulmalıdır. Abonelik formunda 'marketing iletişimi için kullanılabilir' checkbox'ı ayrı tutulmalı.

+ sGTM IP anonimizasyonu nasıl yapılır?

sGTM container içinde custom Transformation veya variable ile IP son oktet maskelenebilir (örn. 192.168.1.42 → 192.168.1.0). Transformation tüm outbound event'lere uygulanabilir; böylece CAPI, Enhanced Conversions ve diğer destinations tutarlı bir IP davranışı taşır.