Veri Katmani (Data Layer)

window.selwiseLayer ve otomatik event takibi

Veri Katmanı, Google Tag Manager'a benzer bir push tabanlı event katmanıdır. window.selwiseLayer dizisine event nesneleri ekleyerek, kod yazmadan veya minimum kodla e-ticaret olaylarını Selwise'a bildirirsiniz.

İki çalışma modu vardır ve ikisi aynı anda kullanılabilir:

  1. Otomatik — Selwise sayfayı analiz eder ve sayfa/ürün/sepet event'lerini kendiliğinden yakalar.
  2. Manuel pushwindow.selwiseLayer.push({ ... }) ile event'i siz gönderirsiniz.

Ayrıca sitenizde zaten bir GA4/GTM window.dataLayer varsa, Selwise bunu dinleyip olayları kendi kanonik formatına çevirebilir (bkz. Harici dataLayer köprüsü).

Push API

window.selwiseLayer bir dizidir. Script yüklenmeden önce bile güvenle kullanmak için önce garanti altına alın, sonra push edin:

<script>
  window.selwiseLayer = window.selwiseLayer || [];
  window.selwiseLayer.push({
    event: 'product_view',
    product: {
      sku: 'SKU-123',
      title: 'Kırmızı Tişört',
      price: 149.90,
      category: 'Tişört',
      currency: 'TRY',
    },
  });
</script>

Her push nesnesinde event alanı zorunludur ve olay adını belirtir. Olaya özel veriler ilgili "zarf" (envelope) altında taşınır: page, product, basket, checkout, user, search, order, custom, common.

window.selwiseLayer vs Selwise.pushDataLayer

Aynı işi window.Selwise.pushDataLayer({ ... }) ile de yapabilirsiniz. window.selwiseLayer.push() script yüklenmeden önce çağrılabilir olması açısından avantajlıdır; kuyruğa alınıp Selwise hazır olduğunda işlenir.

Zarflar ve alanlar

product (ürün)

product_view, product_click, product_impression olaylarında kullanılır.

window.selwiseLayer.push({
  event: 'product_view',
  product: {
    sku: 'SKU-123',        // ZORUNLU — birincil ürün tanımlayıcısı (stok kodu)
    id: 'db-uuid',         // opsiyonel — dahili veritabanı kimliği
    title: 'Kırmızı Tişört',
    price: 149.90,
    category: 'Tişört',
    subCategory: 'Erkek',
    variant: 'M / Kırmızı',
    brand: 'Marka',
    quantity: 1,
    inStock: true,
    url: 'https://magaza.com/urun/sku-123',
    image: 'https://magaza.com/img/sku-123.jpg',
  },
});

sku birincil anahtardır

product.sku, Selwise'ın ürünü ürün beslemesiyle eşleştirdiği birincil anahtardır ve public API'deki productItemCode ile aynıdır. Ürün besleme (feed) içindeki stok koduyla birebir aynı olmalıdır. id yalnızca opsiyonel dahili kimliktir.

basket (sepet)

add_to_cart, remove_from_cart, update_cart olaylarında kullanılır.

window.selwiseLayer.push({
  event: 'add_to_cart',
  basket: {
    step: 'add', // 'add' | 'remove' | 'update'
    currency: 'TRY',
    total: 299.80,
    products: [
      {
        sku: 'SKU-123',   // ZORUNLU
        quantity: 2,      // ZORUNLU
        price: 149.90,    // birim fiyat
        totalPrice: 299.80,
        title: 'Kırmızı Tişört',
        category: 'Tişört',
        variant: 'M / Kırmızı',
      },
    ],
  },
});

checkout (ödeme adımı) ve order (sipariş)

checkout_begin, checkout_progress, checkout_option için checkout zarfı; purchase için order zarfı kullanılır.

// Ödeme başladı
window.selwiseLayer.push({
  event: 'checkout_begin',
  checkout: {
    step: 1, // 1=sepet, 2=müşteri, 3=ödeme, 4=satın alma
    currency: 'TRY',
    totalPrice: 299.80,
    products: [{ sku: 'SKU-123', quantity: 2, price: 149.90 }],
  },
});

// Satın alma tamamlandı
window.selwiseLayer.push({
  event: 'purchase',
  order: {
    id: 'ORDER-2026-0001', // ZORUNLU
    total: 319.80,
    subtotal: 299.80,
    shippingTotal: 20.00,
    discountTotal: 0,
    taxTotal: 0,
    currency: 'TRY',
    coupon: 'INDIRIM10',
    products: [{ sku: 'SKU-123', quantity: 2, price: 149.90 }],
  },
});

Satın alma için trackOrder'ı tercih edin

purchase event'ini veri katmanından gönderebilirsiniz; ancak sunucu tarafında güvenilir gelir ilişkilendirmesi için teşekkür sayfasında window.Selwise.trackOrder(...) kullanmanız önerilir. İkisini birden kullanıyorsanız çift sayımı önlemek için ayrıntılara bakın: Sipariş Takibi.

user (kullanıcı)

user_signup, user_login, user_logout, user_update için.

window.selwiseLayer.push({
  event: 'user_login',
  user: {
    step: 'signin', // 'signup' | 'signin' | 'signout' | 'update'
    id: 'user-42',
    email: 'HASHED_EMAIL', // e-postayı göndermeden önce hash'leyin
    loggedIn: true,
    newCustomer: false,
    segments: ['vip'],
  },
});

E-postayı hash'leyin

Kişisel veri göndermekten kaçının. user.email alanını göndermeden önce SHA-256 ile hash'leyin. Kullanıcı takip modülü varsayılan olarak kapalıdır ve yalnızca açıkça etkinleştirilirse çalışır.

search (arama)

search_query, search_filter, search_sort, search_page, search_results, search_instant_open için.

window.selwiseLayer.push({
  event: 'search_query',
  search: {
    query: 'kırmızı tişört',
    type: 'faceted',        // 'instant' | 'faceted'
    results: 42,
    filters: [{ facet: 'renk', values: ['kırmızı'] }],
    sortBy: 'price',
    sortOrder: 'asc',       // 'asc' | 'desc'
    page: 1,
    perPage: 24,
  },
});

page (sayfa) ve custom (özel)

// Otomatik sayfa takibi kapalıysa manuel sayfa görüntüleme:
window.selwiseLayer.push({
  event: 'page_view',
  page: { type: 'category', title: 'Tişörtler', path: '/kategori/tisort' },
});

// Tamamen özel bir olay:
window.selwiseLayer.push({
  event: 'custom_event',
  custom: { name: 'newsletter_signup', params: { source: 'footer' } },
});

Desteklenen veri katmanı olayları

Olay adıZarfAçıklama
page_viewpageSayfa görüntüleme
virtual_page_viewpageSPA sanal sayfa geçişi
product_viewproductÜrün detay görüntüleme
product_clickproductÜrün tıklama
product_impressionproductÜrün gösterimi (listede görünme)
add_to_cartbasketSepete ekleme
remove_from_cartbasketSepetten çıkarma
update_cartbasketSepet güncelleme
cart_abandon(dahili)Sepet terk (zaman aşımıyla otomatik)
cart_restorebasketTerk edilen sepetin geri gelmesi
checkout_begincheckoutÖdeme başladı
checkout_progresscheckoutÖdeme adımı ilerledi
checkout_optioncheckoutÖdeme/kargo seçeneği seçildi
purchaseorderSatın alma tamamlandı
user_signupuserKayıt
user_loginuserGiriş
user_logoutuserÇıkış
user_updateuserProfil güncelleme
search_instant_opensearchAnlık arama kutusu açıldı
search_querysearchArama yapıldı
search_filtersearchFiltre uygulandı
search_sortsearchSıralama değişti
search_pagesearchSonuç sayfası değişti
search_resultssearchSonuçlar döndü
custom_eventcustomÖzel olay

Tüm kanonik event listesi ve bunların analitikte nasıl kullanıldığı için bkz. Event Referansı.

Otomatik takip ve platform algılama

Selwise, kurulumda sayfayı analiz ederek platformunuzu otomatik algılar ve o platforma uygun sayfa tipi tespiti ile ürün seçicilerini uygular. Desteklenen platformlar:

ideasoft, ikas, ticimax, tsoft, akinon, shopify, woocommerce, magento, bigcommerce, opencart, prestashop, wix ve generic (jenerik).

Otomatik takip varsayılanları:

ModülVarsayılanAçıklama
pageAçıkSayfa görüntülemeleri otomatik yakalanır
productAçıkÜrün sayfaları ve dwell-time
basketAçıkSepet olayları
checkoutAçıkÖdeme adımları
userKapalıKullanıcı olayları (gizlilik nedeniyle)
searchKapalıArama olayları

Sayfa tipi tespiti için URL kalıpları (ör. /urun/... = ürün, /sepet = sepet) kullanılır; bu kalıplar Dashboard'daki takip yapılandırmasından özelleştirilebilir.

Otomatik yakalanmazsa manuel push edin

Temanız standart dışıysa (örneğin ürün SKU'su DOM'da bulunamıyorsa), ilgili event'i window.selwiseLayer.push() ile manuel gönderin. Manuel push her zaman otomatik tespitten önceliklidir ve en güvenilir yöntemdir.

Harici dataLayer köprüsü

Sitenizde GA4/GTM için zaten bir window.dataLayer varsa, Selwise bunu otomatik dinler (useExternalDataLayer varsayılan olarak açık) ve olayları kendi kanonik adlarına çevirir. Örnek GA4 eşlemeleri:

GA4 olayıSelwise olayı
view_itemproduct_view
view_item_listproduct_impression
select_itemproduct_click
add_to_cartadd_to_cart
remove_from_cartremove_from_cart
begin_checkoutcheckout_begin
add_payment_infocheckout_progress
purchasepurchase
searchsearch_query
loginuser_login
sign_upuser_signup

GA4 dışında Universal Analytics, Segment/Mixpanel, Facebook Pixel ve Türkiye'ye özel e-ticaret platformları için de hazır eşlemeler bulunur. Böylece mevcut GTM kurulumunuzu değiştirmeden Selwise'a veri akıtabilirsiniz.

Çift sayımı önleyin

Hem harici dataLayer köprüsünü hem de manuel window.selwiseLayer.push() kullanıyorsanız aynı olayı iki kez göndermemeye dikkat edin. Selwise kısa süreli (1 sn) bir throttle uygular, ancak en temiz yaklaşım tek bir kaynağı esas almaktır.

Yapılandırma

Veri katmanı yapılandırması Dashboard'daki takip ayarlarından yönetilir ve tracking-config ile istemciye iletilir. Öne çıkan seçenekler:

SeçenekVarsayılanAçıklama
variableNameselwiseLayerWindow değişken adı
platformotomatikE-ticaret platformu
autoPageTrackingtrueSayfa görüntülemelerini otomatik yakala
useExternalDataLayertrueSitenin window.dataLayer'ını dinle
externalDataLayerNamedataLayerDinlenecek harici değişken
cartAbandonmentTimeout30Sepet terk süresi (dakika)
cookieConsent.enabledfalseÇerez onayı denetimi (bkz. Onay Yönetimi)

Son güncelleme: 1 Temmuz 2026

Bu makale yardimci oldu mu?