Buyukweb
E-Ticaret Analitik: GA4 Enhanced Ecommerce, WooCommerce Entegrasyon, Funnel ve ROAS

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.

Büyükweb Editör EkibiHosting, Sunucu ve Sistem Yönetimi Editörü35 dakika okuma

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

  1. Hafta 1purchase event'ı doğru tetikleniyor mu, currency TRY mı, transaction_id biricik mi?
  2. Hafta 2add_to_cart, begin_checkout event'ları funnel için aktif mi?
  3. Hafta 3 — Google Ads conversion import GA4'ten yapıldı mı?
  4. Hafta 4 — Consent Mode v2 banner KVKK uyumlu mu?
  5. Ay 2 — Looker Studio dashboard, haftalık otomatik mail?
  6. Ay 3 — sGTM (server-side tagging) ihtiyacı var mı, kurulum?
  7. 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ıyorgtag('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_id her 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).

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

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.

KVKK pratiği için banner üç seçenek sunmalıdır:

  1. Tümünü Kabul Et — Tüm consent granted
  2. Reddet / Sadece Zorunlu — Tüm consent denied (analytics_storage dahil)
  3. Tercihleri Yönet — Kullanıcı tek tek seçer

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'
  });
}

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 bypassgtag.js, google-analytics.com engellenirse 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 kampanyalarının optimize edilmesi için GA4 conversion'larının Ads'a import edilmesi kritik.

Adımlar

  1. Google Ads → Tools → Conversions → New conversion action
  2. "Import" → "Google Analytics 4 properties" seç
  3. GA4 property + conversion event seç (örn. purchase)
  4. "Count" → Every (her conversion tek tek sayılır)
  5. "Click-through conversion window" → 30 gün
  6. "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.trexample.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.

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

  1. Gelir, AOV, conversion rate gibi temel KPI'ları doğru raporlar
  2. Funnel drop-off analizi ile nerede para kaybedildiğini gösterir
  3. ROAS, CPA, LTV hesaplamaları ile reklam bütçesi optimizasyonu sağlar
  4. Cohort + RFM ile müşteri sadakatini ölçer
  5. Consent Mode v2 ile KVKK uyumlu veri toplama yapar
  6. sGTM (opsiyonel) ile ad blocker bypass ve veri kontrolü verir
  7. 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

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:

#google analytics 4#e-ticaret analitik#dönüşüm izleme#enhanced ecommerce#ga4

Bu yazıyı paylaş