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:
- Otomatik — Selwise sayfayı analiz eder ve sayfa/ürün/sepet event'lerini kendiliğinden yakalar.
- Manuel push —
window.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ı | Zarf | Açıklama |
|---|---|---|
page_view | page | Sayfa görüntüleme |
virtual_page_view | page | SPA sanal sayfa geçişi |
product_view | product | Ürün detay görüntüleme |
product_click | product | Ürün tıklama |
product_impression | product | Ürün gösterimi (listede görünme) |
add_to_cart | basket | Sepete ekleme |
remove_from_cart | basket | Sepetten çıkarma |
update_cart | basket | Sepet güncelleme |
cart_abandon | (dahili) | Sepet terk (zaman aşımıyla otomatik) |
cart_restore | basket | Terk edilen sepetin geri gelmesi |
checkout_begin | checkout | Ödeme başladı |
checkout_progress | checkout | Ödeme adımı ilerledi |
checkout_option | checkout | Ödeme/kargo seçeneği seçildi |
purchase | order | Satın alma tamamlandı |
user_signup | user | Kayıt |
user_login | user | Giriş |
user_logout | user | Çıkış |
user_update | user | Profil güncelleme |
search_instant_open | search | Anlık arama kutusu açıldı |
search_query | search | Arama yapıldı |
search_filter | search | Filtre uygulandı |
search_sort | search | Sıralama değişti |
search_page | search | Sonuç sayfası değişti |
search_results | search | Sonuçlar döndü |
custom_event | custom | Ö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ül | Varsayılan | Açıklama |
|---|---|---|
page | Açık | Sayfa görüntülemeleri otomatik yakalanır |
product | Açık | Ürün sayfaları ve dwell-time |
basket | Açık | Sepet olayları |
checkout | Açık | Ödeme adımları |
user | Kapalı | Kullanıcı olayları (gizlilik nedeniyle) |
search | Kapalı | 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_item | product_view |
view_item_list | product_impression |
select_item | product_click |
add_to_cart | add_to_cart |
remove_from_cart | remove_from_cart |
begin_checkout | checkout_begin |
add_payment_info | checkout_progress |
purchase | purchase |
search | search_query |
login | user_login |
sign_up | user_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çenek | Varsayılan | Açıklama |
|---|---|---|
variableName | selwiseLayer | Window değişken adı |
platform | otomatik | E-ticaret platformu |
autoPageTracking | true | Sayfa görüntülemelerini otomatik yakala |
useExternalDataLayer | true | Sitenin window.dataLayer'ını dinle |
externalDataLayerName | dataLayer | Dinlenecek harici değişken |
cartAbandonmentTimeout | 30 | Sepet terk süresi (dakika) |
cookieConsent.enabled | false | Çerez onayı denetimi (bkz. Onay Yönetimi) |
Son güncelleme: 1 Temmuz 2026