
E-Ticaret Analitik: GA4 Enhanced Ecommerce, WooCommerce Entegrasyon, Funnel ve ROAS
WooCommerce için GA4 Enhanced Ecommerce event şeması, GTM data layer, conversion funnel, ROAS/ROI/CPA/LTV hesaplama, cohort + RFM analizi, Consent Mode v2 (KVKK), server-side tagging (sGTM), Looker Studio raporlama ve sık yapılan hatalar — bir KOBİ e-ticaret operatörünün ihtiyaç duyduğu uçtan uca analitik rehberi.
E-Ticaret Analitik: GA4 Enhanced Ecommerce, WooCommerce Entegrasyon, Funnel ve ROAS
Bir e-ticaret operatörünün sabah panele girip baktığı 3 sayı varsa o günkü kararları belirler: bugün kaç sipariş, ortalama sepet tutarı (AOV) ne, ve hangi kanaldan geldi? Bu sorulara doğru cevap verebilmek için arka planda iyi kurulmuş bir analitik altyapısı gerekir. Yanlış event şeması ile çalışan bir mağazada add_to_cart ile purchase arasındaki dönüşüm oranı yanlış görünür, reklam bütçesi yanlış kanala akar, ROAS rakamı abartılı veya düşük çıkar, ve sonuçta kararlar rastgele verilir.
Bu rehber, WooCommerce e-ticaret sitesi işleten bir KOBİ operatörünün karşılaştığı analitik kararlarını sırasıyla işliyor: GA4'ün UA'dan farkı, Enhanced Ecommerce event şemasının her bir adımı (view_item_list → purchase), WooCommerce hook'ları ile data layer push, Google Tag Manager (GTM) container yapısı, conversion funnel görselleştirme, ROAS/ROI/CPA/LTV hesaplama formülleri, attribution modeli seçimi, cohort + RFM segmentasyonu, KVKK için Consent Mode v2, server-side tagging (sGTM) konsepti, Looker Studio raporlama, ve sahada en sık karşılaşılan hatalar.
Bu yazı tek başına GA4'e giriş rehberi değil — Buyukweb'in GA4 + GTM rehberi konsepti baştan işliyor. Buradaki odak e-ticaret ölçümünün derinliği: ROAS hesaplama, item parametre şeması, funnel drop-off analizi ve WC entegrasyon.
Buyukweb perspektifi: Buyukweb cPanel paketlerimiz WooCommerce için optimize edilmiştir (PHP 8.x, OPcache, LiteSpeed Cache, MariaDB). Büyük mağazalar (10.000+ ürün, 1.000+/gün sipariş) için VDS E5-V4 sunucularımız Redis + WooCommerce + sGTM (server-side GTM) self-host'a uygun mimari sunar. Bursa Tier 3 datacenter — KVKK uyumlu veri yerelliği, TL faturalama (KDV dahil), 0850 302 60 70 kurumsal destek. WooCommerce + GA4 entegrasyon danışmanlığı için iletişim kurabilirsiniz.
E-Ticaret Veri Stratejisi: Ne Ölçmeliyiz, Neden?
"Ölçmediğin şeyi yönetemezsin." Bu Peter Drucker klişesi e-ticarette tam karşılığını bulur. Ama her şeyi ölçme tuzağı da vardır — sayfa scroll yüzdesi, mouse hareketi, her butona tık... Bunların hepsi veri ama hepsi iş kararına dönüşmez. Doğru analitik stratejisi sınırlı ama doğru KPI seti belirlemek ile başlar.
Kuzey Yıldız Metrikleri (North Star)
Her e-ticaret işinin tek bir kuzey yıldız metriği olmalı. KOBİ mağazalar için bu genelde aylık net gelir veya aylık tekrar eden müşteri sayısı olur. Reklam-bağımlı mağazalar için ROAS (Return on Ad Spend) kuzey yıldız olabilir. Bu metrik tek başına bütün diğer metrikleri açıklar.
KPI Hiyerarşisi
Kuzey yıldızın altında destekleyici metrikler vardır. Tipik bir KOBİ e-ticaret KPI tablosu:
| Katman | KPI | Tipik Aralık | Anlam |
|---|---|---|---|
| Üst | Net Gelir (ay) | KOBİ: ₺50K-500K | İşin sağlığı |
| Üst | Sipariş Sayısı (ay) | KOBİ: 100-2.000 | Hacim |
| Üst | AOV (Ortalama Sipariş) | ₺200-2.000 | Sepet kalitesi |
| Orta | Conversion Rate | %1-3 (iyi: %3+) | Trafik → satış verimliliği |
| Orta | Bounce/Disengaged | <%40 (GA4) | Sayfa kalitesi |
| Orta | Cart Abandonment | %60-80 | Sepet → ödeme kaybı |
| Orta | ROAS (toplam) | 3:1 minimum | Reklam verimliliği |
| Alt | View → Cart oranı | %5-15 | Ürün sayfası ikna |
| Alt | Cart → Checkout | %30-60 | Sepet → ödeme niyeti |
| Alt | Checkout → Purchase | %50-80 | Ödeme tamamlama |
| Alt | LTV | ₺500-5.000 | Müşteri uzun vadeli değeri |
| Alt | CPA (kanal) | ₺50-300 | Müşteri başına maliyet |
| Alt | LTV : CAC | 3:1 sağlıklı | Sürdürülebilirlik |
Bu KPI hiyerarşisi e-ticaret yöneticisinin her gün baktığı 3 üst, her hafta gözden geçirdiği 3 orta, ve aylık planlama yaptığı alt seviyedeki metriklere ayrılır. Her metriğin GA4'te nereden okunduğunu aşağıdaki bölümlerde tek tek işliyoruz.
Ölçüm Önceliği: Önce Doğru, Sonra Detaylı
Yeni bir mağaza için tipik kurulum sırası:
- Hafta 1 —
purchaseevent'ı doğru tetikleniyor mu, currency TRY mı, transaction_id biricik mi? - Hafta 2 —
add_to_cart,begin_checkoutevent'ları funnel için aktif mi? - Hafta 3 — Google Ads conversion import GA4'ten yapıldı mı?
- Hafta 4 — Consent Mode v2 banner KVKK uyumlu mu?
- Ay 2 — Looker Studio dashboard, haftalık otomatik mail?
- Ay 3 — sGTM (server-side tagging) ihtiyacı var mı, kurulum?
- Ay 6 — Cohort + RFM segmentasyonu, retention analizi?
Her bir adımı atlamadan ilerlemek, "veri sahibi olduğum ama anlamlandıramadığım" tipik tuzağa düşmeyi engeller.
GA4 vs Universal Analytics: 2023 Sonrası Geçiş
Google Analytics 4 (GA4), Google Analytics dünyasının kırılma noktasıdır. Eski Universal Analytics (UA) 2023 Temmuz 1'de standart mülk için, 2024 Temmuz 1'de 360 mülk için tamamen kapatıldı. UA tabanlı tüm raporlar erişilemez durumda. Eğer hâlâ "Universal Analytics tracking code'um var, çalışıyor mu?" diye soruyorsanız cevap çalışmıyor — gtag('config', 'UA-XXXXX-X') çağrısı sessizce yok sayılıyor.
UA vs GA4 Veri Modeli — Temel Fark
| Boyut | Universal Analytics (UA) | Google Analytics 4 (GA4) |
|---|---|---|
| Birim | Session (oturum) | Event (olay) |
| Veri kaynağı | Sadece web | Web + Uygulama (Firebase) |
| Hit limiti | Property başına 10M / ay | Event başına 25 parametre, sınırsız hit |
| Custom dimension | 20 + 200 (360) | 50 event + 25 user scope |
| Bounce | Bounce rate | Engagement rate (>%55 iyi) |
| Conversion | Goal (max 20) | Event mark as conversion (sınırsız) |
| Reporting | Standart raporlar | Explore + ML insights |
| BigQuery export | 360 (paid only) | Free + paid |
| Cookieless tracking | Yok | Consent Mode + modeling |
| Retention | 14-50 ay | 2-14 ay (default 2) |
En kritik fark: GA4 her şeyi event olarak tutar. UA'da bir kullanıcı geldiği zaman "session" başlar, içinde "pageview", "event", "transaction" hit'leri olur. GA4'te ise her şey event: page_view bir event, scroll bir event, add_to_cart bir event, purchase bir event. Session, kullanıcı ve oturum bilgileri event'lerin parametreleri olarak tutulur.
Bu mimari değişiklik, GA4'ün mobile-first, cross-platform (web + iOS + Android), ve cookieless future (Consent Mode + modeling) için tasarlandığını gösterir.
GA4 Account Hierarchy
Account (Google Analytics)
└─ Property (GA4) örn: G-E8BNBFNV8H (Buyukweb)
├─ Data stream Web stream
├─ Data stream iOS app (Firebase)
├─ Data stream Android app (Firebase)
└─ Reporting / Explore / Admin
Bir property birden fazla data stream barındırır (web + app birleşik analytics). Her stream'in measurement ID'si farklıdır (web için G-XXXXXXXXXX, app için Firebase project ID üzerinden).
Buyukweb'in kendi GA4 property ID'si G-E8BNBFNV8H, GTM container ID'si GTM-PC4ZC5DS. Bu örnek değerleri rehber boyunca pattern olarak göreceksiniz.
GA4 E-Commerce Event Şeması — Standart 11 Event
GA4'te e-ticaret ölçümü standart event isimleri üzerine kurulu. Google bu isimleri spec olarak tanımladı; GA4 raporları bu event isimlerini otomatik tanır ve "E-commerce" sekmesinde gösterir. Yanlış isim verirseniz (örn. add-to-cart veya AddToCart) GA4 bu event'ı tanımaz ve standart e-ticaret raporunda görünmez.
Aşağıda 11 standart e-commerce event'ın tek tek anlamı, ne zaman tetiklendiği, ve örnek data layer push kodu yer alıyor:
1. view_item_list — Kategori / Liste Sayfası Görüntüleme
Kullanıcı bir kategori sayfasına (örn. /kategori/giyim) veya arama sonuçları sayfasına geldiğinde tetiklenir. Hangi ürünlerin görünür olduğunu söyler.
dataLayer.push({
event: 'view_item_list',
ecommerce: {
item_list_id: 'giyim_kategori',
item_list_name: 'Giyim Kategori Sayfası',
items: [
{
item_id: 'SKU_001',
item_name: 'Erkek Mavi Tişört',
item_category: 'Giyim',
item_category2: 'Tişört',
item_brand: 'MarkaA',
item_variant: 'Mavi-L',
price: 299.90,
currency: 'TRY',
quantity: 1,
index: 0
},
{
item_id: 'SKU_002',
item_name: 'Kadın Siyah Pantolon',
item_category: 'Giyim',
item_category2: 'Pantolon',
item_brand: 'MarkaB',
item_variant: 'Siyah-38',
price: 499.90,
currency: 'TRY',
quantity: 1,
index: 1
}
]
}
});
2. select_item — Listede Ürün Tıklama
Kullanıcı kategori sayfasında bir ürüne tıkladığında tetiklenir. Hangi ürünün dikkat çektiğini gösterir.
dataLayer.push({
event: 'select_item',
ecommerce: {
item_list_id: 'giyim_kategori',
item_list_name: 'Giyim Kategori Sayfası',
items: [{
item_id: 'SKU_001',
item_name: 'Erkek Mavi Tişört',
item_category: 'Giyim',
price: 299.90,
currency: 'TRY',
index: 0
}]
}
});
3. view_item — Ürün Detay Sayfası
Kullanıcı ürün detay sayfasına geldiğinde tetiklenir. Funnel'in ilk önemli adımı burası.
dataLayer.push({
event: 'view_item',
ecommerce: {
currency: 'TRY',
value: 299.90,
items: [{
item_id: 'SKU_001',
item_name: 'Erkek Mavi Tişört',
item_category: 'Giyim',
item_brand: 'MarkaA',
price: 299.90,
quantity: 1
}]
}
});
4. add_to_cart — Sepete Ekleme
Kullanıcı "Sepete Ekle" butonuna bastığında tetiklenir. En önemli intent sinyalidir; remarketing kampanyaları için kritik.
dataLayer.push({
event: 'add_to_cart',
ecommerce: {
currency: 'TRY',
value: 599.80,
items: [{
item_id: 'SKU_001',
item_name: 'Erkek Mavi Tişört',
item_category: 'Giyim',
item_variant: 'Mavi-L',
price: 299.90,
quantity: 2
}]
}
});
5. remove_from_cart — Sepetten Çıkarma
Kullanıcı sepetten ürün silindiğinde tetiklenir. Hangi ürünün sepete eklenip vazgeçildiğini gösterir.
dataLayer.push({
event: 'remove_from_cart',
ecommerce: {
currency: 'TRY',
value: 299.90,
items: [{
item_id: 'SKU_001',
item_name: 'Erkek Mavi Tişört',
price: 299.90,
quantity: 1
}]
}
});
6. view_cart — Sepet Sayfası Görüntüleme
Kullanıcı /cart veya sepet sayfasına geldiğinde tetiklenir. Toplam sepet tutarını event value olarak gönderir.
dataLayer.push({
event: 'view_cart',
ecommerce: {
currency: 'TRY',
value: 899.70,
items: [
{ item_id: 'SKU_001', item_name: 'Erkek Mavi Tişört', price: 299.90, quantity: 2 },
{ item_id: 'SKU_003', item_name: 'Kemer', price: 299.90, quantity: 1 }
]
}
});
7. begin_checkout — Ödeme Adımı Başladı
Kullanıcı /checkout sayfasına geldiğinde tetiklenir. Funnel'in kritik kapısı — buradan sonra ya satın alır ya da terk eder.
dataLayer.push({
event: 'begin_checkout',
ecommerce: {
currency: 'TRY',
value: 899.70,
coupon: 'ILK10',
items: [
{ item_id: 'SKU_001', item_name: 'Erkek Mavi Tişört', price: 299.90, quantity: 2 },
{ item_id: 'SKU_003', item_name: 'Kemer', price: 299.90, quantity: 1 }
]
}
});
8. add_shipping_info — Kargo Bilgisi Girildi
Kullanıcı kargo adresi/yöntemi seçtiğinde tetiklenir. Multi-step checkout için önemli.
dataLayer.push({
event: 'add_shipping_info',
ecommerce: {
currency: 'TRY',
value: 899.70,
shipping_tier: 'Standart Kargo',
items: [
{ item_id: 'SKU_001', item_name: 'Erkek Mavi Tişört', price: 299.90, quantity: 2 }
]
}
});
9. add_payment_info — Ödeme Bilgisi Girildi
Kullanıcı kredi kartı / havale / kapıda ödeme seçtiğinde tetiklenir.
dataLayer.push({
event: 'add_payment_info',
ecommerce: {
currency: 'TRY',
value: 899.70,
payment_type: 'Kredi Kartı',
items: [
{ item_id: 'SKU_001', item_name: 'Erkek Mavi Tişört', price: 299.90, quantity: 2 }
]
}
});
10. purchase — Satın Alma Tamamlandı (Primary Conversion)
Kullanıcı ödemeyi tamamladığında (thankyou / sipariş başarılı sayfasında) tetiklenir. Bu e-ticaret analitiğin en kritik event'idir — gelir, ROAS, dönüşüm oranı hep bunun üzerinden hesaplanır.
dataLayer.push({
event: 'purchase',
ecommerce: {
transaction_id: 'WC-12345',
currency: 'TRY',
value: 899.70,
tax: 137.30,
shipping: 49.90,
coupon: 'ILK10',
items: [
{
item_id: 'SKU_001',
item_name: 'Erkek Mavi Tişört',
item_category: 'Giyim',
item_brand: 'MarkaA',
item_variant: 'Mavi-L',
price: 299.90,
quantity: 2
},
{
item_id: 'SKU_003',
item_name: 'Kemer',
item_category: 'Aksesuar',
item_brand: 'MarkaC',
price: 299.90,
quantity: 1
}
]
}
});
Kritik:
transaction_idher sipariş için biricik olmalı. WooCommerce order ID'sini kullanın. Aynı transaction_id ile iki kez purchase event'ı gönderilirse GA4 duplicate tespit eder ve ikincisini sayar (veya bağlama göre saymaz — sürüm bağlı). Çift conversion tipik olarak şu durumda yaşanır: thankyou sayfasını yenileme (F5).
11. refund — İade
Sipariş iade edildiğinde tetiklenir. Genelde admin panelinde manuel veya cron ile.
dataLayer.push({
event: 'refund',
ecommerce: {
transaction_id: 'WC-12345',
currency: 'TRY',
value: 299.90,
items: [
{ item_id: 'SKU_003', item_name: 'Kemer', price: 299.90, quantity: 1 }
]
}
});
Refund event'ı GA4 raporlarında negatif gelir olarak görünür. Net gelir = purchase - refund hesabı otomatik yapılır.
Item Parameters Şeması — Standart Alanlar
Her item objesinde kullanılabilecek standart parametreler:
| Parametre | Tip | Örnek | Açıklama |
|---|---|---|---|
item_id |
string | "SKU_001" | Biricik ürün kodu (SKU) |
item_name |
string | "Erkek Mavi Tişört" | Ürün adı |
item_category |
string | "Giyim" | Ana kategori |
item_category2 |
string | "Tişört" | Alt kategori |
item_category3-5 |
string | - | Daha alt kategoriler |
item_brand |
string | "MarkaA" | Marka |
item_variant |
string | "Mavi-L" | Varyant (renk-beden) |
price |
number | 299.90 | Birim fiyat (TRY) |
quantity |
number | 2 | Adet |
discount |
number | 30.00 | İndirim tutarı |
currency |
string | "TRY" | Para birimi |
coupon |
string | "ILK10" | Kullanılan kupon |
item_list_name |
string | "Anasayfa Öne Çıkan" | Liste adı |
item_list_id |
string | "homepage_featured" | Liste ID |
index |
number | 0 | Liste içinde sıra |
affiliation |
string | "Buyukweb Ana Mağaza" | Mağaza/ortak |
Pro ipucu: item_category alanlarını mağazanızın kategori ağacına göre tutarlı tutun. GA4 Explore'da "Sales by category" raporu bu alandan beslenir. Tutarsız kategorilendirme (örn. "tisort" / "T-shirt" / "Tişört") farklı satır olarak görünür.
WooCommerce + GA4 Entegrasyon Yöntemleri
WooCommerce ile GA4 entegrasyonunda üç ana yol vardır:
Yöntem 1: GTM Data Layer + Custom Snippet (Önerilen)
En esnek ve kontrol veren yöntem. WooCommerce hook'larına dataLayer.push() JavaScript kodu ekler, GTM container event'ları yakalar ve GA4'e gönderir.
Adım 1: GTM Container Kurulumu
WooCommerce sitenizin functions.php veya bir custom plugin dosyasında:
// GTM head snippet (theme functions.php veya custom plugin)
add_action('wp_head', function() {
?>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-PC4ZC5DS');</script>
<!-- End Google Tag Manager -->
<?php
});
// GTM body noscript (theme header.php sonrası — fallback)
add_action('wp_body_open', function() {
?>
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PC4ZC5DS"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<?php
});
Adım 2: view_item Event — Ürün Detay Sayfası
// WC product detail page — view_item event
add_action('wp_footer', function() {
if (is_product()) {
global $product;
if (!$product) return;
$item = [
'item_id' => $product->get_sku() ?: 'WC_' . $product->get_id(),
'item_name' => $product->get_name(),
'item_category' => wp_get_post_terms($product->get_id(), 'product_cat', ['fields' => 'names'])[0] ?? '',
'price' => floatval($product->get_price()),
'currency' => get_woocommerce_currency(),
'quantity' => 1
];
?>
<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({ ecommerce: null });
dataLayer.push({
event: 'view_item',
ecommerce: {
currency: '<?php echo esc_js($item['currency']); ?>',
value: <?php echo floatval($item['price']); ?>,
items: [<?php echo wp_json_encode($item); ?>]
}
});
</script>
<?php
}
});
Adım 3: add_to_cart Event — WC Hook
// WC add to cart hook — server-side trigger via session
add_action('woocommerce_add_to_cart', function($cart_item_key, $product_id, $quantity) {
$product = wc_get_product($product_id);
if (!$product) return;
$item = [
'item_id' => $product->get_sku() ?: 'WC_' . $product_id,
'item_name' => $product->get_name(),
'item_category' => wp_get_post_terms($product_id, 'product_cat', ['fields' => 'names'])[0] ?? '',
'price' => floatval($product->get_price()),
'quantity' => intval($quantity)
];
WC()->session->set('ga4_add_to_cart', $item);
}, 10, 3);
// WC cart page or AJAX response — push to dataLayer
add_action('wp_footer', function() {
if (function_exists('WC') && WC()->session) {
$item = WC()->session->get('ga4_add_to_cart');
if ($item) {
WC()->session->__unset('ga4_add_to_cart');
?>
<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({ ecommerce: null });
dataLayer.push({
event: 'add_to_cart',
ecommerce: {
currency: '<?php echo esc_js(get_woocommerce_currency()); ?>',
value: <?php echo floatval($item['price'] * $item['quantity']); ?>,
items: [<?php echo wp_json_encode($item); ?>]
}
});
</script>
<?php
}
}
});
Adım 4: purchase Event — Thankyou Hook
// WC order received page — purchase event (en kritik)
add_action('woocommerce_thankyou', function($order_id) {
if (!$order_id) return;
$order = wc_get_order($order_id);
if (!$order) return;
// Çift conversion önleme — sayfa yenileme kontrol
if (get_post_meta($order_id, '_ga4_purchase_sent', true)) return;
update_post_meta($order_id, '_ga4_purchase_sent', '1');
$items = [];
foreach ($order->get_items() as $item) {
$product = $item->get_product();
if (!$product) continue;
$items[] = [
'item_id' => $product->get_sku() ?: 'WC_' . $product->get_id(),
'item_name' => $item->get_name(),
'item_category' => wp_get_post_terms($product->get_id(), 'product_cat', ['fields' => 'names'])[0] ?? '',
'price' => floatval($order->get_item_total($item, false, false)),
'quantity' => intval($item->get_quantity())
];
}
?>
<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({ ecommerce: null });
dataLayer.push({
event: 'purchase',
ecommerce: {
transaction_id: '<?php echo esc_js($order->get_order_number()); ?>',
currency: '<?php echo esc_js($order->get_currency()); ?>',
value: <?php echo floatval($order->get_total()); ?>,
tax: <?php echo floatval($order->get_total_tax()); ?>,
shipping: <?php echo floatval($order->get_shipping_total()); ?>,
coupon: '<?php echo esc_js(implode(',', $order->get_coupon_codes())); ?>',
items: <?php echo wp_json_encode($items); ?>
}
});
</script>
<?php
}, 10, 1);
Bu snippet'ler bir custom plugin içinde tutulmalı (theme functions.php yerine), aksi takdirde theme güncellemesinde kayıp olur. Plugin örnek isim: buyukweb-ga4-ecommerce.php.
Yöntem 2: Resmi GA4 WooCommerce Eklentisi (Automattic)
WordPress.org repository'sinde Automattic (WC sahibi şirket) tarafından geliştirilen resmi GA4 eklentisi var. Kurulum kolay, ama esneklik sınırlı:
- WP Admin → Plugins → Add New → "Google Analytics for WooCommerce" arama
- Kurulum + Activate
- Settings → Google → Measurement ID gir (G-XXXXXXXXXX)
- Çoğu event otomatik tetiklenir (view_item, add_to_cart, purchase)
Avantaj: 5 dakikada çalışır, kod yazmaya gerek yok.
Dezavantaj: GTM kullanmaz, doğrudan gtag.js çağrısı yapar. sGTM'e (server-side) geçiş zorlaşır. Custom event'lar veya farklı tag (Meta Pixel, Google Ads) eklemek için yine GTM gerekir.
Yöntem 3: GA4 Pro WC Eklentisi (Üçüncü Parti)
Üçüncü parti freemium eklentiler GTM data layer push'ları otomatik yapar. Genel olarak Yöntem 1 ile aynı sonucu otomatize ederek verir. KOBİ'ler için pratik; tek dezavantajı premium versiyon ücreti (yıllık $59-$99 tipik).
Tavsiye Edilen Yaklaşım
- 5-10 ürünlü mikro mağaza → Yöntem 2 (resmi Automattic eklentisi)
- 100-1.000 ürünlü standart KOBİ → Yöntem 3 (GA4 Pro tarzı eklenti) veya Yöntem 1 (manuel kod)
- 1.000+ ürün, custom event'lar, sGTM ihtiyacı → Yöntem 1 (tam manuel kontrol)
GTM Container Yapısı — Tags, Triggers, Variables
Google Tag Manager (GTM) container'ı üç ana bileşenden oluşur: Tags (ne gönderilecek), Triggers (ne zaman), Variables (hangi veri).
Tags — GA4 Event Tags
Her GA4 event için ayrı bir tag tanımlanır. Tipik tag listesi:
1. GA4 Configuration Tag — Page load
2. GA4 Event - view_item — Custom Event "view_item"
3. GA4 Event - add_to_cart — Custom Event "add_to_cart"
4. GA4 Event - begin_checkout — Custom Event "begin_checkout"
5. GA4 Event - purchase — Custom Event "purchase"
6. GA4 Event - view_cart — Custom Event "view_cart"
7. GA4 Event - remove_from_cart — Custom Event "remove_from_cart"
8. GA4 Event - select_item — Custom Event "select_item"
9. GA4 Event - view_item_list — Custom Event "view_item_list"
10. GA4 Event - add_shipping_info — Custom Event "add_shipping_info"
11. GA4 Event - add_payment_info — Custom Event "add_payment_info"
12. GA4 Event - refund — Custom Event "refund"
Triggers — Custom Events
Trigger Type: Custom Event, Event Name: purchase (data layer event'ın adı). Her event için ayrı trigger gerekir.
Variables — Data Layer Variables
Tag içinde değişkenleri data layer'dan okumak için:
DLV - transaction_id → ecommerce.transaction_id
DLV - currency → ecommerce.currency
DLV - value → ecommerce.value
DLV - tax → ecommerce.tax
DLV - shipping → ecommerce.shipping
DLV - coupon → ecommerce.coupon
DLV - items → ecommerce.items
GA4 Event tag içinde:
Event Name: purchase
Event Parameters:
transaction_id: {{DLV - transaction_id}}
currency: {{DLV - currency}}
value: {{DLV - value}}
tax: {{DLV - tax}}
shipping: {{DLV - shipping}}
coupon: {{DLV - coupon}}
items: {{DLV - items}}
Built-in Variables
GTM Variables → Configure ile aktif edilen built-in:
- Page URL
- Page Path
- Page Hostname
- Click Element
- Click URL
- Click Text
- Click ID
- Form ID
- Scroll Depth Threshold
- Referrer
Bunlar custom kod yazmadan trigger'larda kullanılabilir.
GTM Preview Mode — Test
GTM admin → Preview butonu → site URL'sini gir → Tag Assistant açılır. Site'de işlem yap, hangi tag'ın ne zaman tetiklendiğini görürsün. Production'a publish etmeden önce tüm event'ları preview mode'da test et.
GA4 Admin Conversion Configuration
Bazı event'lar conversion olarak işaretlenmelidir (Google Ads, raporlar, audiences için).
GA4 Admin → Events → Mark as conversion toggle:
purchase → Conversion (otomatik işaretli)
begin_checkout → Conversion (manuel — funnel optimizasyon için)
add_to_cart → Conversion (opsiyonel — Meta Ads / Google Ads ad recall)
generate_lead → Conversion (form submit)
sign_up → Conversion (üyelik)
Conversion olarak işaretlenmiş event'lar:
- Google Ads conversion import için kullanılabilir
- GA4 Reports → Engagement → Conversions sayfasında gösterilir
- Audience tanımlamada kullanılabilir (örn. "purchase yapmış kullanıcılar")
- Looker Studio raporlarda öncelikli metrik olur
Conversion Funnel Analizi
E-ticaret funnel'ı tipik olarak şu adımlardan oluşur:
View Item (Ürün görüntüleme)
↓ (-%70-90 drop)
Add to Cart (Sepete ekleme)
↓ (-%20-40 drop)
Begin Checkout (Ödeme başlatma)
↓ (-%30-50 drop)
Add Shipping/Payment Info
↓ (-%10-30 drop)
Purchase (Satın alma)
Tipik dönüşüm oranı çarpımı: 100 kullanıcı view_item → 15 add_to_cart → 6 begin_checkout → 4 add_payment_info → 3 purchase. Yani %3 toplam dönüşüm.
GA4 Explore → Funnel Exploration
GA4 → Explore → "Funnel exploration" template:
- Step 1: view_item
- Step 2: add_to_cart
- Step 3: begin_checkout
- Step 4: purchase
Her adımda drop-off yüzdesi görselleşir. En büyük drop hangi adımda? Tipik bulgular:
- View → Cart düşük (%5-10) → Ürün sayfası ikna problemi. Görsel kalitesi, fiyat görünürlüğü, açıklama, sosyal kanıt eksik olabilir.
- Cart → Checkout düşük (%30 altı) → Sepet sayfası kafa karıştırıcı, kargo ücreti şok ediyor, kupon alanı yanıltıcı.
- Checkout → Purchase düşük (%40 altı) → Ödeme adımları çok, kart bilgisi girme güven sorunu, beklenmedik ücret.
Her drop-off için ayrı bir optimizasyon hipotezi kurulur ve A/B test edilir (aşağıda).
Funnel Tablo Örneği — Tipik KOBİ
| Step | Users | Conversion (cumulative) | Drop Off |
|---|---|---|---|
| view_item | 10.000 | %100 | - |
| add_to_cart | 1.500 | %15 | -%85 |
| begin_checkout | 600 | %6 | -%60 (cart sayfası problem) |
| add_payment_info | 400 | %4 | -%33 |
| purchase | 300 | %3 | -%25 |
Bu tabloya bakan operatör öncelikle "view_item → add_to_cart" oranını yükseltmeye odaklanır (%15 → %25 hedef). %25'e çıkarmak gelirin %67 artmasını sağlar.
ROAS, ROI, CPA, LTV Hesaplama
E-ticaret analitiğin sayısal omurgası finansal metriklerdir. En önemli dört formül:
ROAS — Return On Ad Spend
ROAS = Reklam Geliri / Reklam Harcaması
Örnek:
Reklam Harcaması (Google Ads): ₺10.000
Reklam Kaynaklı Gelir: ₺40.000
ROAS = 40.000 / 10.000 = 4 (yani 4:1)
ROAS değerlendirmesi:
- ROAS < 1:1 → Zarar, kampanya durdur
- ROAS 1:1 - 2:1 → Marjinal, optimize et
- ROAS 2:1 - 3:1 → Genel kabul edilebilir (kar marjına bağlı)
- ROAS 3:1+ → Sağlıklı, ölçeklendirilebilir
- ROAS 5:1+ → Mükemmel, daha çok bütçe pompalanabilir
Önemli: ROAS sadece reklam metriğidir. Net kar değildir. Ürün maliyeti, sabit giderler, vergi düşülmediği için "ROAS pozitif ama şirket zarar ediyor" mümkün.
ROI — Return On Investment
ROI = (Gelir - Toplam Maliyet) / Toplam Maliyet × 100
Örnek:
Toplam Gelir: ₺100.000
Reklam Harcaması: ₺10.000
Ürün Maliyeti (COGS): ₺50.000
İşletme Gideri: ₺20.000
Toplam Maliyet: ₺80.000
ROI = (100.000 - 80.000) / 80.000 × 100 = %25
ROI net kar üzerinden hesaplanır; sürdürülebilirlik göstergesidir.
CPA — Cost Per Acquisition
CPA = Reklam Harcaması / Sipariş Sayısı
Örnek:
Reklam Harcaması (Google Ads, ay): ₺10.000
Sipariş Sayısı: 200
CPA = 10.000 / 200 = ₺50
CPA kanal başına ayrı hesaplanır. Hedef CPA, müşterinin LTV'sinin 1/3'ünden düşük olmalı.
LTV — Lifetime Value
LTV = AOV × Satın Alma Sıklığı (yıl) × Müşteri Ömrü (yıl) × Kar Marjı
Örnek:
AOV: ₺500
Yıllık satın alma: 3 sipariş
Ortalama müşteri ömrü: 2 yıl
Brüt kar marjı: %40
LTV = 500 × 3 × 2 × 0.40 = ₺1.200
GA4'te LTV hesabı için User Lifetime tekniği var: User-scoped custom dimension'lar + audience'lar ile uzun vadeli takip.
LTV : CAC Oranı
LTV : CAC = LTV / CAC
Örnek:
LTV: ₺1.200
CAC: ₺300 (CPA + onboarding maliyeti)
LTV : CAC = 4:1 (sağlıklı)
Sektör kabul edilen sağlıklı oran 3:1. 1:1 altında her müşteri zarar; 5:1+ üzerinde "büyütme bütçesini artır" sinyali (LTV yüksek, daha çok müşteri kazanmak için bütçe pompalanabilir).
Attribution Modeling — Hangi Kanal Krediyi Alacak?
Müşteri tipik olarak satın alma öncesi birden fazla kanal ile temas eder: Google Ads tıklar, Instagram'da görür, organik arama yapar, email açar. Hangi kanal dönüşüm kredisini alır?
Attribution Modelleri
| Model | Kredi Dağılımı | Ne Zaman? |
|---|---|---|
| Last click | %100 son tıklamaya | Eski varsayılan, basit ama yanıltıcı |
| First click | %100 ilk tıklamaya | Brand awareness odaklı |
| Linear | Eşit dağılım her tıklamaya | Adil ama detay yok |
| Time decay | Son tıklama daha çok | Performance pazarlama |
| Position-based | İlk ve son %40, orta %20 | Hibrit |
| Data-driven (DDA) | ML tabanlı, GA4 default | En adil — yeterli veri gerekir |
GA4'ün varsayılanı 2024'ten itibaren Data-driven attribution (DDA). GA4 ML modeli, hangi kanalın ne kadar krediyi hak ettiğini geçmiş veriye bakarak hesaplar. KOBİ mağazalar için yeterli veri (aylık 300+ conversion) varsa DDA kullanılmalı; yoksa Linear veya Last click.
Channel Grouping — Kanal Gruplaması
GA4 default channel grouping:
- Direct — Tarayıcıya URL yazılarak gelen
- Organic Search — Google/Bing organik
- Paid Search — Google Ads, search
- Display — Google Display Network
- Paid Social — Meta / TikTok reklam
- Organic Social — Sosyal medya post (utm yoksa)
- Email — utm_medium=email işaretli
- Affiliates — Affiliate partner
- Referral — Diğer site referans
UTM kullanmadan trafik gelirse "Direct" veya "Referral" görünür. Tüm kampanya linklerine UTM eklemek zorunludur:
https://example.com.tr/kampanya?utm_source=facebook&utm_medium=cpc&utm_campaign=indirim_haftasi
Cohort Analizi ve Retention
Cohort analizi, aynı dönemde edinilen kullanıcıların zaman içinde davranışını karşılaştırır.
Cohort Tablo
GA4 → Explore → Cohort exploration:
Dönem Hafta 0 Hafta 1 Hafta 2 Hafta 3 Hafta 4
Ocak'ta 1000 %30 %20 %15 %12
Şubat'ta 1200 %35 %25 %18 %14
Mart'ta 900 %28 %18 %14 %11
Her satır = "o ay siteye gelen yeni kullanıcılar". Sütunlar = "kaçı sonraki haftalarda geri döndü". Yüzde düşüşü = retention curve.
Cohort'lar arasında karşılaştırma:
- Şubat 2024 cohort Ocak'tan daha iyi retention → Şubat'taki ürün/kampanya değişikliği olumlu etki yaptı
- Mart cohort düşük → Marttaki kampanya kalitesiz trafik getirdi (sayı yüksek ama tutmuyor)
Repeat Purchase Rate
Cohort'un işe yaradığı en somut metrik: kaç kullanıcı 2. siparişi verdi?
Repeat Purchase Rate = Tekrar Sipariş Veren / Toplam Müşteri × 100
Örnek:
Toplam müşteri (1 yıl): 5.000
2+ sipariş veren: 1.500
Repeat Purchase Rate = 30%
%30 sağlam, %50+ mükemmel. Düşük (<%20) ise müşteri kazanma maliyeti her zaman yüksek olacak demektir; retention/CRM çalışmasına yatırım yapılmalı.
RFM Segmentasyonu — Müşteri Sınıflandırma
RFM = Recency (en son ne zaman aldı), Frequency (kaç kez aldı), Monetary (ne kadar harcadı).
Her boyut 1-5 arası puanlanır, sonuçta müşteri 3 haneli skor alır (örn. 5-5-5 = en iyi, 1-1-1 = en kötü):
RFM Segmentleri
| Segment | RFM Skoru | Strateji |
|---|---|---|
| Champions | 555 / 545 | VIP, sadakat ödülü |
| Loyal Customers | 543 / 534 | Cross-sell, referans iste |
| Potential Loyalists | 535 / 525 | Upgrade teklif |
| New Customers | 513 / 512 | Onboarding email |
| Promising | 414 / 313 | Engagement push |
| Need Attention | 333 / 343 | Yeniden aktive et |
| About to Sleep | 232 / 233 | Win-back kampanya |
| At Risk | 134 / 234 | Acil indirim teklifi |
| Cannot Lose Them | 145 / 245 | Kişiselleştirilmiş teklif |
| Hibernating | 122 / 123 | Düşük öncelik |
| Lost | 111 / 112 | Sil / agresif win-back |
RFM segmentasyonu GA4 Audience olarak veya WooCommerce database üzerinde SQL ile yapılabilir. CRM/email pazarlama için altın değerinde bir tekniktir (bkz. E-ticaret email pazarlama rehberi).
Consent Mode v2 ve KVKK Uyumu (2024 Zorunlu)
KVKK ve GDPR uyumlu çalışan bir mağaza, kullanıcının explicit consent vermeden kişisel veri toplamamalı. Google bu için Consent Mode v2 spec'ini yayınladı (2024 Mart itibarıyla AB'de zorunlu).
Granular Consent Sinyalleri
Consent Mode v2'de dört consent türü var:
| Sinyal | Anlamı | Default |
|---|---|---|
ad_storage |
Reklam cookie'leri (DoubleClick, Conversion Linker) | denied |
ad_user_data |
Reklam için kullanıcı verisi | denied |
ad_personalization |
Kişiselleştirilmiş reklam | denied |
analytics_storage |
Analytics cookie'leri | denied |
Tüm sinyaller default olarak denied olmalı. Kullanıcı banner'da "Tümünü Kabul Et"e basınca granted olarak güncellenir.
Consent Banner — KVKK 3 Buton
KVKK pratiği için banner üç seçenek sunmalıdır:
- Tümünü Kabul Et — Tüm consent granted
- Reddet / Sadece Zorunlu — Tüm consent denied (analytics_storage dahil)
- Tercihleri Yönet — Kullanıcı tek tek seçer
Consent Management Platform (CMP) Seçenekleri
KOBİ için ücretsiz veya ucuz CMP çözümleri:
- Cookiebot — Free tier (50 sayfa altı), pro $7/ay
- Cookiehub — Free tier, premium €15/ay
- Iubenda — Free tier sınırlı, pro $19/ay
- Klaro! (open source) — Free self-host
- Custom JS — Kendi banner'ınızı yazmak (geliştirici saatleri)
Banner çalışırken GTM Consent Mode v2 entegrasyonu:
// CMP banner consent callback
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
// Default — denied (banner gösterilmeden önce)
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied',
'wait_for_update': 500
});
// Kullanıcı "Tümünü Kabul Et" bastıktan sonra
function userAcceptedAll() {
gtag('consent', 'update', {
'ad_storage': 'granted',
'ad_user_data': 'granted',
'ad_personalization': 'granted',
'analytics_storage': 'granted'
});
}
// Kullanıcı "Reddet" bastıktan sonra
function userRejectedAll() {
gtag('consent', 'update', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied'
});
}
Consent Mode v2 Modeling
Kullanıcı consent reddederse GA4 modeling ile eksik veriyi tahmin eder. Pinged + redacted sinyaller GA4'e gönderilir; GA4 ML ile "muhtemelen kaç dönüşüm oldu" hesaplar. Doğruluk %70-90 arası, ama tamamen bilinmezden iyidir.
Detay rehber: KVKK uyumlu cookie banner (bu rehber içinde Consent Mode v2 derinlemesine işleniyor).
Server-Side Tagging (sGTM) — Veri Kontrolü ve Ad Blocker Bypass
Geleneksel GTM tarayıcıda çalışır (client-side). Server-side GTM (sGTM) Google Cloud Run veya kendi VDS'inizde çalışan bir GTM container server'ı'dır.
sGTM Mimari
[Browser] → [GTM JS] → [sGTM (sirket.com.tr)] → [GA4 Measurement Protocol]
→ [Google Ads]
→ [Meta Pixel]
→ [Custom CRM]
Tarayıcı doğrudan google-analytics.com'a istek atmaz; istek sGTM'inize gider, oradan GA4'e proxy edilir.
Faydalar
- Ad blocker bypass —
gtag.js,google-analytics.comengellenirse client-side veri kaybolur. sGTM kendi domaininizde çalıştığı için ad blocker'lar engellemez. Tipik kazanım: %10-30 daha fazla event yakalama. - First-party data — Cookies kendi domaininize set edilir. ITP (Intelligent Tracking Prevention) ve cookie expiration kısıtlamaları rahatlar.
- Veri kontrolü — Hassas veri (email, telefon) sGTM'de hash'lenip GA4'e gönderilir. KVKK için ek katman.
- Performans — Tarayıcıdan az JS çalışır, Core Web Vitals iyileşir.
- Custom event'lar — sGTM içinde JavaScript ile event manipüle edilebilir.
sGTM Hosting Seçenekleri
- Google Cloud Run — Resmi rehber, $40-120/ay tipik
- AWS App Runner / Fargate — Benzer maliyet
- Self-host VDS — Buyukweb VDS E5-V4 üzerinde Docker ile sGTM çalıştırma (kavramsal anlat). 2 vCPU + 4 GB RAM VDS, ₺250-400/ay, KOBİ trafiği için yeterli.
sGTM VDS Self-Host Kavramsal Mimari
[Buyukweb VDS E5-V4 (Bursa Tier 3)]
Docker
└─ sGTM Container (Node.js, Google preview image)
Domain: sgtm.example.com.tr (subdomain)
SSL: Let's Encrypt (certbot auto-renew)
Nginx reverse proxy → sGTM:8080
Firewall: ufw allow 443, deny diğer
Sunucu üzerinde sGTM container çalışırken, GTM admin panelinizde server container tanımlarsınız ve client GTM'inizi sGTM'e yönlendirirsiniz.
Buyukweb perspektifi: sGTM kurulumu VDS sunucu veya bare-metal'da self-host olarak yapılır. Buyukweb VDS paketlerinde root erişim tam olduğu için Docker + sGTM container kurulumu serbesttir. Bursa Tier 3 datacenter çıkışlı sGTM, KVKK için veri yerelliği sağlar — Google bulutu yerine kendi domaininiz altında çalışır.
Looker Studio (eski Data Studio) Raporlama
Looker Studio (eski adıyla Google Data Studio), GA4 verisini dashboard olarak görselleştirir. Ücretsiz, GA4 ile direk entegre.
Tipik Dashboard Yapısı
Sayfa 1 — Genel Bakış
- Net gelir (bu ay vs geçen ay) — scorecard
- Sipariş sayısı trend — line chart
- AOV trend — line chart
- Conversion rate — gauge
- Top 10 ürün — table
Sayfa 2 — Kanal Performansı
- Channel grouping × Sipariş — table
- ROAS by channel — bar chart
- CPA by channel — bar chart
- Attribution by channel — pie chart
Sayfa 3 — Funnel
- View item → Add cart → Checkout → Purchase — funnel
- Drop-off oranları — table
Sayfa 4 — Audience
- Yeni vs tekrar müşteri — pie
- Demographics (age, gender) — bar
- Geographic (Türkiye il) — heat map
- Device (mobile vs desktop) — bar
GA4 Connector
Looker Studio → Create → Data source → Google Analytics → Property seç (G-E8BNBFNV8H tipi ID) → Connect.
GA4 metric ve dimension'lar otomatik gelir. Calculated field ile özel formüller eklenir (örn. ROAS = Revenue / Ad Spend).
Otomatik Mail Raporu
Looker Studio dashboard → Share → Schedule email delivery → "Her Pazartesi 09:00, yöneticilere PDF gönder". Operatörler her hafta otomatik raporu inbox'larında görür.
BigQuery Export (İleri Seviye)
GA4 Property → Admin → BigQuery Linking → "Link to BigQuery project". Aktif edildikten sonra GA4 her event'ı raw data olarak BigQuery'ye gönderir.
BigQuery'de SQL ile sınırsız analiz:
-- En çok satan ürünler, son 30 gün
SELECT
items.item_name,
SUM(items.quantity) AS toplam_adet,
SUM(items.price * items.quantity) AS toplam_gelir_tl
FROM
\`buyukweb-analytics.analytics_999999.events_*\`,
UNNEST(items) AS items
WHERE
event_name = 'purchase'
AND _TABLE_SUFFIX BETWEEN '20260401' AND '20260430'
GROUP BY items.item_name
ORDER BY toplam_gelir_tl DESC
LIMIT 20;
BigQuery'nin ilk 10 GB ücretsiz (storage) + 1 TB sorgu/ay ücretsiz. KOBİ ölçeği için yeterli.
Buyukweb perspektifi: BigQuery bir Google Cloud servisidir, Buyukweb'de doğrudan barındırılmaz. Ama VDS'ler üzerinde PostgreSQL veya ClickHouse ile benzer event-level analiz mimarisi kurulabilir. Daha fazlası için BigQuery resmi dökümantasyonuna bakılabilir. Bu rehberde sadece kavramsal olarak işliyoruz.
A/B Testing — Optimizasyon
E-ticaret optimizasyonunun motoru A/B test'tir. Hipotez kur → test et → karar ver döngüsü.
Google Optimize Kapandı
Google'ın ücretsiz A/B test aracı Optimize, 2023 Eylül 30'da kapandı. GA4 entegrasyonu kalktı. Alternatifler:
Mevcut Alternatifler
- GA4 + Firebase A/B Testing — Sadece app için
- VWO (Visual Website Optimizer) — $199-$999/ay
- Optimizely — Enterprise, $50K+/yıl
- Convert.com — $99-$649/ay
- AB Tasty — Enterprise tier
- Custom server-side — Kendi backend'inizde flag tabanlı split (en uygun maliyet)
KOBİ için VWO Free Plan veya custom backend split test önerilir. Hipotez şablonu:
Hipotez: Ürün sayfasında "Hemen Al" CTA butonu yerine
"Sepete Ekle" yazılı yeşil buton kullanılırsa
add_to_cart oranı %15'ten %20'ye çıkar.
Test: 14 gün, %50 trafik split
Sonuç: Variant B (Sepete Ekle yeşil) %18.5 vs Variant A (Hemen Al) %15.2
Sonuç: Variant B win, statistical significance %95+
A/B test her zaman tek bir değişiklik üzerine kurulmalı. Aksi takdirde hangi değişikliğin etki ettiği bilinemez.
Google Ads + GA4 Conversion Import
Google Ads kampanyalarının optimize edilmesi için GA4 conversion'larının Ads'a import edilmesi kritik.
Adımlar
- Google Ads → Tools → Conversions → New conversion action
- "Import" → "Google Analytics 4 properties" seç
- GA4 property + conversion event seç (örn.
purchase) - "Count" → Every (her conversion tek tek sayılır)
- "Click-through conversion window" → 30 gün
- "Attribution model" → Data-driven
Buyukweb örnek Google Ads ID: AW-989092069. Conversion label biricik ID'dir (örn. AW-989092069/abc123XYZ).
Enhanced Conversions
GA4 + Google Ads Enhanced Conversions, kullanıcının email/telefon'unu hash'leyip Ads'a gönderir. Conversion oranı %10-30 artar çünkü cookie-less kullanıcılar da matchlenir.
KVKK için Enhanced Conversions kullanırken explicit consent alınmalıdır (Consent Mode v2 ad_user_data: granted).
Türk PSP Entegrasyon ve Conversion Tracking
Türk pazarında popüler ödeme sağlayıcıları:
- iyzico — En yaygın PSP, başvuru kolay
- PayTR — Komisyon rekabetçi
- Param — Çoklu para birimi destekli
WooCommerce + bu PSP'lerin resmi eklentileri var. Conversion tracking için kritik adım: success_url ile thankyou sayfasına dönüş.
[Ödeme PSP] → Kullanıcı ödeme tamam
→ Redirect: https://example.com.tr/checkout/order-received/12345/?key=wc_xxx
[Thankyou sayfası]
→ `woocommerce_thankyou` hook → dataLayer.push purchase event
→ GA4 conversion kaydedildi
Yaygın hata: PSP iframe modunda kalırsa (popup olmazsa) thankyou hook tetiklenmeyebilir. Test order ile her PSP × tarayıcı (Chrome, Safari mobile) kombinasyonu doğrulanmalıdır.
Cross-Domain Tracking
Mağazanız example.com.tr ve subdomain alisveris.example.com.tr veya farklı domain (örn. ödeme pay.example.com) kullanıyorsa cross-domain tracking gerekir.
GA4 admin → Data stream → "Configure tag settings" → "Configure your domains" → Tüm domain'leri ekle:
example.com.tr
www.example.com.tr
alisveris.example.com.tr
pay.example.com
Bu sayede GA4 aynı kullanıcının iki domain arasındaki yolculuğunu tek session olarak tutar. Aksi takdirde alisveris.example.com.tr → example.com.tr geçişi "Referral" görünür ve attribution bozulur.
Sahada En Sık Yapılan Hatalar
10+ WooCommerce + GA4 entegrasyonunda görülen tipik hatalar:
1. Çift Conversion (Hem GTM Hem gtag.js Aktive)
Bazı kullanıcılar GTM kurarken eski gtag.js snippet'ı (window.gtag('config', 'G-XXXX')) sayfada bırakır. Sonuç: aynı event hem GTM hem gtag.js tarafından gönderilir → 2 katı purchase.
Çözüm: GTM kurulduktan sonra eski gtag.js snippet'larını sayfadan tamamen kaldır.
2. Currency Yanlış (USD veya Belirtilmemiş)
WooCommerce native TRY ile çalışırsa default currency: 'TRY' gönderilir. Ama bazı eklentiler USD set'liyor veya boş bırakıyor. GA4 default USD kabul ediyor → tüm tutarlar bozuk para biriminde raporlanıyor.
Çözüm: Her ecommerce push'ta currency: 'TRY' explicit olarak gönder. GA4 admin → Data stream → Currency: TRY ayar.
3. Add-to-Cart Tetiklenmiyor (Mini Cart Slide-in)
Modern theme'lerde sepete ekleme sayfa yenilemeden mini-cart slide-in olarak çalışır (AJAX). Klasik woocommerce_add_to_cart hook'u tetiklenir ama wp_footer zaten render edildiği için dataLayer.push yapılmaz.
Çözüm: AJAX response'una hook gir, woocommerce_add_to_cart_fragments filter ile dataLayer push JS'i fragment olarak gönder. Veya JS event listener ile added_to_cart jQuery event'ını dinle.
4. Test Order'lar Production View'da
QA sırasında yapılan test sipariş'leri GA4 production property'de görünür → gerçek raporları kirletir.
Çözüm: GA4 Admin → Data stream → "Internal traffic" → IP filter ekle (ofis IP'si). Internal traffic event'larında traffic_type=internal parametresi gelir, raporlardan filtrelenebilir.
5. transaction_id Tekrarlı (Refresh Conversion)
Müşteri thankyou sayfasını F5 ile yenilerse purchase event ikinci kez gönderilir. Aynı transaction_id ile.
Çözüm: WooCommerce thankyou hook'unda _ga4_purchase_sent post_meta flag set et (yukarıdaki kodda var). İkinci kez tetiklenmez.
6. Item Category Tutarsız
"Giyim" / "giyim" / "Giyim/Tisort" / "tisort" gibi farklı kategori string'leri GA4'te ayrı satır olarak görünür.
Çözüm: WC kategori taksonomisinden wp_get_post_terms ile standart kategori adı çek. Manuel hardcode yapma.
7. value Field Net Mi Gross Mu?
purchase event'da value parametresi kargo ve KDV dahil (gross) gönderiliyor mu, yoksa subtotal (net) mı? GA4 standart gross (toplam ödenen) bekler. Ama bazı eklentiler subtotal gönderiyor → revenue eksik raporlanıyor.
Çözüm: $order->get_total() kullan (KDV + kargo + her şey dahil). Subtotal değil.
8. Item Price Tax Inclusive vs Exclusive
items[].price alanı KDV dahil mi hariç mi? WooCommerce settings "Display prices including tax" ayarı bu noktayı belirler. Tutarlı olmalı:
$item_total = $order->get_item_total($item, false, false); // tax hariç
$item_total = $order->get_item_total($item, true, false); // tax dahil
$item_total = $order->get_item_total($item, true, true); // tax dahil + rounded
Çözüm: Site genelinde tutarlı bir kural seç. Tax inclusive (Türkiye'de standart) tavsiye edilir.
9. Multi-Currency Yetersiz Dönüşüm
Site multi-currency ise (TRY + USD + EUR), currency alanı doğru gönderilmiyor → GA4 her sipariş USD sanıyor.
Çözüm: $order->get_currency() ile o siparişin gerçek currency'sini al, hardcode 'TRY' yazma.
10. Consent Denied Olduğunda Veri Sıfırlanıyor
Consent Mode v2 olmadan, kullanıcı banner'ı reddederse veri tamamen kaybolur. GA4 boş kalır.
Çözüm: Consent Mode v2 implementasyonu yap (yukarıda anlatıldı). Modeling devreye girer, eksik veri ML tahmin edilir.
Sık Sorulan Sorular (SSS)
"GA4 zor mu, kuruluşu ne kadar sürer?"
Standart bir WooCommerce + GA4 entegrasyonu, resmi WC eklentisi kullanılırsa 30 dakika. Manuel GTM + custom hooks kullanılırsa 4-8 saat (test dahil). sGTM + Consent Mode v2 + Looker Studio dashboard dahil tam profesyonel kurulum 16-40 saat. KOBİ tek seferlik yatırım olarak değerli.
"GTM kullanmak zorunlu mu, doğrudan gtag.js ile olmaz mı?"
GTM kullanmak zorunlu değil ama önerilir. Doğrudan gtag.js ile başlayabilirsiniz; her event için ayrı kod yazmak gerekir. GTM kullanırsanız: (1) UI'da event yönetimi, (2) versioning ve rollback, (3) preview mode ile test, (4) Meta Pixel/Google Ads gibi ek tag'ları kolay ekleme, (5) gelecekte sGTM'e geçiş esnekliği. Uzun vadede GTM çok daha pratik.
"Universal Analytics hâlâ çalışıyor mu?"
Hayır. Standart UA mülk 2023 Temmuz 1'de, 360 UA mülk 2024 Temmuz 1'de tamamen kapatıldı. gtag('config', 'UA-XXX') çağrıları sessizce yok sayılıyor. Eski UA raporlarına erişim de kalktı. Hâlâ UA snippet'ı varsa siteden temizleyin ve GA4'e geçin.
"Server-side tagging (sGTM) zorunlu mu?"
KOBİ için zorunlu değil, gelişmiş bir adım. Ölçek (aylık 100.000+ session) veya KVKK için veri yerelliği gerektiren regüle sektörler için anlamlı. Buyukweb VDS üzerinde sGTM self-host kurulumu aylık ₺250-400 maliyet getirir; karşılığında ad blocker bypass ve ITP koruması sağlar. KOBİ ay 30K+ session'a çıktığında değerlendirilmeli.
"KVKK denetimde GA4 sorgulanıyor mu?"
Evet. KVKK Kurulu denetimlerinde çerez/analytics altyapısı kontrol edilir. Banner var mı, granular consent veriyor mu, denied'da gerçekten veri toplanmıyor mu, üçüncü ülkelere veri aktarımı (Google ABD) için açık rıza var mı. Consent Mode v2 + KVKK uyumlu 3-buton banner + aydınlatma metninde GA4 detaylı olarak yazılmalıdır. Veri yerelliği için VERBİS bildiriminde Google'ın veri işleyen olarak listelenmesi gerekir.
"Refund event nasıl tetiklenir?"
WooCommerce admin → Sipariş → Refund butonu → Refund tutarı gir. WC order status refunded veya partially-refunded olur. woocommerce_order_status_refunded hook'una bağlanıp dataLayer.push refund event tetikleyebilirsiniz. Otomatik cron veya manuel admin trigger seçeneği vardır.
"Mobile uygulama yaparsam GA4 nasıl entegre olur?"
iOS/Android native uygulama için Firebase SDK kullanılır. Firebase project + GA4 property otomatik bağlı. iOS Swift / Android Kotlin'de Firebase Analytics SDK ile aynı event isimleri (purchase, add_to_cart) gönderilir. Web + mobile birleşik analytics GA4'ün en güçlü özelliklerinden biridir.
"BigQuery export ücretli mi?"
BigQuery storage ilk 10 GB ücretsiz, sorgu ilk 1 TB/ay ücretsiz. KOBİ ölçeği için aylık $0-$5 tipik maliyet. Yüksek hacim siteler için $20-$100/ay. Veri analizi şirket içinde sysadmin / data analyst varsa son derece güçlü bir araç.
Sonuç ve Sonraki Adımlar
E-ticaret analitiği, veriye dayalı karar verebilen bir KOBİ'nin altyapısının temel taşıdır. Doğru kurulmuş GA4 + GTM + Enhanced Ecommerce setup'ı:
- Gelir, AOV, conversion rate gibi temel KPI'ları doğru raporlar
- Funnel drop-off analizi ile nerede para kaybedildiğini gösterir
- ROAS, CPA, LTV hesaplamaları ile reklam bütçesi optimizasyonu sağlar
- Cohort + RFM ile müşteri sadakatini ölçer
- Consent Mode v2 ile KVKK uyumlu veri toplama yapar
- sGTM (opsiyonel) ile ad blocker bypass ve veri kontrolü verir
- Looker Studio otomatik raporlar ile yöneticilere her hafta görünürlük sağlar
Buyukweb perspektifinden: cPanel paketlerimiz standart KOBİ WC mağazaları (100-1.000 ürün, 100-500 sipariş/gün) için yeterli; VDS E5-V4 sunucularımız ise yüksek trafik mağazalar + sGTM self-host + Redis cache + custom analytics altyapısı için ideal. Bursa Tier 3 datacenter KVKK için veri yerelliği sağlar.
İlgili Büyükweb Hizmetleri
- WordPress + WooCommerce Hosting — Performans optimize cPanel ve VDS paketleri
- GA4 + GTM Kurulum Rehberi — GA4 mülk açma, GTM container, temel event'lar
- E-Ticaret Email Pazarlama — Abandoned cart, RFM, KVKK İYS uyum
- E-Ticaret Ürün/Kategori SEO — Product + CollectionPage schema, faceted nav
- VDS Sunucu — sGTM self-host, Redis, yüksek trafik WC altyapısı
- cPanel Web Hosting — WC için optimize PHP 8 + LiteSpeed paketleri
E-ticaret analitik kurulum, GA4 Enhanced Ecommerce entegrasyon, Consent Mode v2 KVKK uyum veya sGTM self-host VDS danışmanlığı için 0850 302 60 70 numaralı destek hattımıza veya iletişim sayfamıza yazabilirsiniz. Bursa Tier 3 veri merkezimizden TR datacenter, TL faturalama, kurumsal destek.
E-Ticaret İlgili Hizmetlerimiz
Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin
Etiketler:

