Kampanya Teslim Kuralları

Sunucu ve script kararlarının sırası; hangi kapı neden kapatır

Bir kampanyanın ziyaretçiye ulaşması iki aşamalı bir süzgeçten geçer: önce sunucu, sonra tarayıcıdaki script karar verir. Bu sayfa her kapıyı sırasıyla ve karar verdiği yerle listeler; "neden görünmüyor" sorusunun cevabı bunlardan biridir. Adım adım teşhis için Widget Görünmüyor sayfasını kullanın.

Sunucu: config yanıtına girer mi

GET /public/sites/KANAL_ANAHTARI/config yanıtındaki campaigns listesi bu süzgeçten çıkan kampanyalardır. Bir kampanya şu hepsini sağlıyorsa listededir:

  1. Kanal doğrulanmış ve istek kanalın alan adından (ya da takma adından) geliyor; hesabın teslimatı açık.
  2. Hesapta Onsite Experience modülü var (yoksa liste boş).
  3. Kampanya silinmemiş ve herkese açık teslim modunda (bir senaryonun kampanyası değil).
  4. Durumu Active ya da tarihi gelmiş Scheduled; başlangıç anı gelmiş, bitiş anı geçmemiş. Pencere saatleri Europe/Istanbul saatidir.
  5. Hedef çubuğuysa ve kanal eşiğine bağlıysa: eşik tanımlı.
  6. İstemci eski bir sürümse: kampanyanın ihtiyaç duyduğu protokol, istemcinin duyurduğu (?p=) protokolü aşmıyor. Sepet yer tutucuları 2, ürün yer tutucuları 3, ürün koşulları 4. protokoldür; eski bir client.js bu kampanyaları almaz — sayfayı sert yenileyin ya da CDN önbelleğinin dolmasını bekleyin.

Yanıt kanal başına en çok 5 dakika önbelleğe alınır. Kampanya kaydedildiğinde ya da durumu değiştiğinde önbellek temizlenir; tarih penceresi yaklaşıyorsa önbellek ömrü o ana göre kısalır (başlangıç tarihi geldiğinde kimse bir şey yazmaz, bu yüzden önbellek orada biter).

Tarayıcı: çizilir mi

Sırasıyla (ilki başarısızsa kampanya elenir ve sonrakilere bakılmaz):

#KapıNe soruyor
1Test moduKampanya testteyse tarayıcı test modunda mı?
2Sayfa ve ziyaretçi kurallarıURL, sayfa türü, cihaz, ülke, davranış
3DeneyZiyaretçinin kolu kampanyayı gösteriyor mu?
4Kitle (segment)Ziyaretçi uygun segmentte mi?
5İçerikÇizilecek bir içerik var mı?
6Sıklık sınırıHakkı doldu mu?
7ÇakışmaAynı konumda daha öncelikli bir kampanya var mı?
8Yerleşim ve tetikleyiciHedef öğe var mı, tetikleyici ateşlendi mi?

Kampanyalar önce 1–6'dan geçer, sonra çakışma çözümüne girer: test modundaki taslak ya da sıklık sınırına takılmış bir kampanya, aynı konumdaki canlı kampanyanın yerini tutmaz.

Sayfa ve ziyaretçi kuralları

Aşağıdakilerin hepsi sağlanmalıdır; boş bırakılan kural herkese uyar.

  • URL kuralları — tam adres (location.href, sorgu dahil) üzerinde, büyük/küçük harf duyarsız aranır. Desen düz metinse adresin içinde alt dize olarak geçmesi yeter (/kadin hem /tr/kadin/ayakkabi hem /kadin-giyimi yakalar). * joker karakteri tüm adresle eşleştirir (https://magaza.com/urun/*). regex: ile başlayan desen düzenli ifadedir (büyük/küçük harf duyarlı).
  • Dışlanan URL'ler her zaman kazanır.
  • Show on all pages kapalıyken dahil edilen adres yoksa kampanya hiçbir yerde çıkmaz; dahil edilenlerden en az biri eşleşmelidir.
  • Sayfa türü — home, product, category, search, checkout, cart, account, other. Tür, URL'den ve sayfanın DOM'undan (platformun bilinen işaretleri) çözülür; çözülemediyse kural geçer (kampanya hiç çıkmasın diye kapalı değil açık yönde başarısız olur).
  • Cihaz — desktop, tablet, mobile.
  • Ülke — ziyaretçinin IP'sinden. Ülke bilinmiyorsa kural geçer.
  • Davranış — sepet tutarı, oturumdaki sayfa görüntüleme, giriş yapmış mı, dönen ziyaretçi mi, UTM kaynağı gibi sinyallerle kurulan koşullar (all ya da any). Sinyal ölçülemiyorsa varsayılan değer (0, false, direct) kullanılır; ürün sinyalleri (productPrice, productStock…) ürün sayfası dışında hiç yoktur ve ona bağlı kural her operatörde false döner.

Kitle

Segment hedeflemesi dahil et ya da hariç tut modundadır. Üyelik sunucudan sorulur, yanıt 5 dakika önbelleklenir ve önbellek kimliğe bağlıdır (giriş yapınca yeniden sorulur). Üyelik sorulamıyorsa kampanya gösterilmez. Bkz. Segment Hedefleme.

Sıklık sınırı

Sınırlar tarayıcının localStorage anahtarı selwise_frequency_caps içinde sayılır: oturum başına, gün, hafta, toplam ve iki gösterim arası en az süre. Oturum bir izleme oturumudur (30 dakika hareketsizlik), sekme değil. Gösterim, yüzey gerçekten ekrandayken sayılır; hazırlanmış ama tetiklenmemiş bir modal hakkı harcamaz. Sıfırlamak için anahtarı silin.

Çakışma

Aynı konum için yarışan kampanyalar çözülür. Konum, CSS seçicisi (varsa) ya da sabit konumdur (top, bottom…). Varsayılan davranış en yüksek öncelik kazanır; kampanyalardan biri all seçtiyse hepsi gösterilir; hepsi random ise oturuma sabitlenmiş rastgele biri. Kaybeden kampanya hiçbir iz bırakmadan elenir.

Yerleşim ve tetikleyici

  • Seçiciyle yerleşen kampanya öğe sayfada belirene kadar izlenir; hiç belirmezse çizilmez.
  • Çıkış niyeti yalnızca masaüstünde imleç pencerenin üstünden çıkınca (telefonda belirli bir yukarı kaydırma) tetiklenir; özel olay document üzerinde dinlenir.
  • Gösterim ve sıklık sayacı, yüzey gerçekten ekrana geldiğinde yazılır.

Sayfa kapsamı: tek sayfa uygulamaları

Rota değişince tarayıcı kampanyaları yeni sayfa için baştan değerlendirir (kurallar ve sıklık sınırları dahil). Özel scriptler bunun dışındadır — bkz. Özel Scriptler.

Konsol mesajları

Debug modunu açın (localStorage.setItem('selwise_debug', 'true'); kapatmak için removeItem). Test modu da (selwise_test_mode) aynı ayrıntılı günlüğü açar. Günlükler [Selwise] ile başlar.

MesajAnlamıDebug gerekir mi
No site key — widget not starteddata-site-key eksikHayır (her zaman)
Skipping test mode campaignTest kampanyası, tarayıcı test modunda değilHayır (uyarı)
Skipping empty campaignİçerik alanları boşHayır (uyarı)
Subscription requiredHesabın teslimatı kapalı ya da sözleşme geçersizHayır (uyarı)
Skipping campaign due to targeting rulesSayfa/cihaz/ülke/davranış kuralıEvet
Skipping … (excluded by experiment)Deney kolu kampanyayı göstermiyorEvet
Skipping … due to segment targetingSegment kapısıEvet
Frequency cap (…) holdsSıklık sınırıEvet
its live content hides it hereİçerik durumu gizliyor ya da yer tutucu ölçülemiyorEvet
Failed to render entities after navigationRota değişiminde bir hataEvet

Debug modu sayfada bir panel çizmez; yalnızca konsol günlüğünü açar. Kanalın hangi modüllere sahip olduğunu config yanıtının modules alanından okuyabilirsiniz.

Sırada ne var

Son güncelleme: 10 Ekim 2026