Takip Sorunları
Event ve ciro teşhisi
Olaylar, siparişler ya da içerik beklediğiniz gibi gelmiyorsa bu sayfa sorunu sırayla daraltır: önce script'in yüklendiğini, sonra isteklerin gittiğini, sonra sunucunun ne cevap verdiğini, en sonda da panelde nerede görüneceğini doğrularsınız. Her adımda bakacağınız yer ve cevabın anlamı yazılıdır.
1. Debug modunu açın
Tarayıcı konsolunda, sorunlu sayfada:
localStorage.setItem('selwise_debug', 'true');
location.reload();
Konsolda [Selwise] önekli tanılama günlükleri görünür. Kapatmak için localStorage.removeItem('selwise_debug'). Test modunu (test işaretli kampanya ve kurallar) ayrıca ?selwise_test_mode=true ile açabilirsiniz: JavaScript API.
2. Script yüklendi mi
DevTools → Console:
typeof window.Selwise // "object" olmalı
window.Selwise.getVisitorId?.() // bir kimlik döndürmeli (vid_...)
| Sonuç | Anlamı |
|---|---|
undefined | Script sayfada yok, yüklenemedi ya da engellendi. Network sekmesinde client.js isteğini arayın |
object ama getVisitorId yok | Yalnızca komut kuyruğu taslağı var: client.js hiç çalışmadı |
Konsolda No site key — widget not started | data-site-key eksik ya da boş |
client.js isteği (blocked) / ERR_BLOCKED_BY_CLIENT | Reklam engelleyici ya da gizlilik eklentisi. Normal bir ziyaretçi için de aynı olur; test için eklentiyi kapatın |
Konsolda Refused to load the script ... Content Security Policy | Sitenizin CSP'si https://widget.selwise.com'a izin vermiyor: CSP |
client.js iki kez yüklenmiş | Script iki kez eklenmiş: çift olay ve çift çizim. Birini kaldırın |
3. Açılış istekleri
Network sekmesinde selwise ile süzün (Fetch/XHR). Sayfa yüklendikten hemen sonra şunları görmelisiniz:
| İstek | Beklenen |
|---|---|
GET .../public/sites/SITE_KEY/config?p=4 | 200. Kampanya, öneri, takip ayarı döner |
GET .../scripts?path=... | 200 |
GET .../integrations | 200 |
POST .../events/batch | 200, ilk olaylar gittiğinde (aşağıda) |
config isteği başarısızsa
| Durum | Neden ve çözüm |
|---|---|
404 Site not found | Site anahtarı yanlış ya da kanal silinmiş. Snippet'teki anahtarı panelden kopyaladığınızla karşılaştırın |
403 Site not verified | Kanalın alan adı doğrulanmamış: Alan Adı Doğrulama |
403 Origin '...' is not authorized for site '...' | İsteğin geldiği sayfanın hostu kanalın alan adı ya da doğrulanmış takma adı değil. İleti kabul edilen tüm alan adlarını sayar. www/apex ve ülke hostları için takma ad ekleyin. localhost üretimde kabul edilmez |
403 Delivery is switched off for this account. / This account is closed. | Hesabın teslimatı kapatılmış; hesap yöneticinizle konuşun. Widget selwise:subscription-inactive olayını yayınlar ve durur |
Konsolda blocked by CORS policy, durum 403 ya da (failed) | Doğrulanmamış kanal, bilinmeyen anahtar ya da yetkisiz köken için API tarayıcıya CORS izni vermez; tarayıcı gerçek durumu gizleyip CORS hatası gösterir. Aynı isteği curl ile (-H "Origin: https://magaza.com") yapıp gerçek cevabı görün |
429 | Hız sınırı (dakikada 100); Retry-After kadar bekleyin |
5xx ya da zaman aşımı | Geçici; widget birkaç saniye sonra yeniden dener. Sürerse destekle paylaşın |
Aynı isteği terminalden deneyin; yanıt gövdesi nedeni söyler:
curl -i "https://api.selwise.com/api/v1/public/sites/SITE_KEY/config?p=4" \
-H "Origin: https://magaza.com"
4. Olay isteği: events/batch
Olaylar hemen gitmeyebilir: widget olayları kuyruğa alır ve toplu gönderir (varsayılan ayarda yaklaşık bir saniye içinde; kanalda gelişmiş toplu gönderim açıksa ayarlı gönderim aralığına, varsayılan 30 saniyeye kadar). Sayfadan ayrılırken kalan olaylar sendBeacon ile gönderilir; bu istek DevTools'ta Preserve log açık değilse kaybolur.
POST .../events/batch yanıtını açın:
{ "success": true, "accepted": 3, "degraded": 1, "rejected": 0, "results": [ ... ] }
| Gördüğünüz | Anlamı ve çözüm |
|---|---|
HTTP 200, success: true | Olaylar kaydedildi |
HTTP 200, success: false, gövdede yalnızca { "success": false } | Site anahtarı bilinmiyor ya da kanal doğrulanmamış. Durum kodu 200 olsa da hiçbir şey kaydedilmedi |
HTTP 200, success: false, results[].error = consent not granted: event dropped | Ziyaretçi onay vermemiş ya da henüz cevap vermemiş: consentSnapshot.granted false. Onay denetimini ve banner'ı kontrol edin: Onay Yönetimi |
accepted > 0 ve degraded > 0 | Kaydedildi ama bir şey düzeltildi. results[].warnings nedeni söyler (aşağıda) |
rejected > 0 | results[].error olay başına nedeni söyler |
HTTP 400 Validation failed | errors[] hangi alanın sorunlu olduğunu söyler (events.0.name: ...); bilinmeyen alan tüm isteği düşürür. Kendi gönderdiğiniz bir olayda alan adını düzeltin |
HTTP 400 Batch size exceeds maximum of 200 events | Çok büyük batch; bölün |
HTTP 429 | Ziyaretçi başına dakikada 120 ya da IP başına dakikada 1200 olay sınırı: Retry-After kadar bekleyin |
| İstek hiç yok | Aşağıdaki "Hiç istek gitmiyor" bölümü |
results[].warnings içindeki sık görülen iletiler:
| İleti | Anlamı |
|---|---|
Missing productItemCode for event: ... | Ürün olayında ürün kodu yok; olay yine kaydedilir ama ürün raporlarına girmez |
Unsupported event name "x" mapped to custom_event | Olay adı kanonik listede yok: Event Referansı |
| Ürün doğrulama iletisi (ürünün katalogda bulunamadığını söyler) | Gönderilen ürün kodu katalogda yok: productItemCode beslemedeki item_code ile aynı değil |
eventId missing, generated fallback eventId | Kendi gönderdiğiniz olayda eventId yok; yeniden gönderim çift kayıt yaratır |
Hiç istek gitmiyor
Önce Script yüklendi mi adımını geçtiyseniz şunlara bakın:
- Onay bekleniyor. Panelde Cookie Consent → Policy içinde Require consent before tracking ve Hold events until the answer açıkken, ziyaretçi cevap verene kadar olaylar bellekte bekler ve hiçbir istek gitmez (
configisteği yine gider). Banner'ı gösterin ya dawindow.Selwise.grantConsent()çağırın; sorunun bu olup olmadığınıwindow.Selwise.getConsentState()söyler:nullise "henüz sorulmadı". - Olay üretilmiyor. Sayfa görüntüleme dışındaki olaylar veri katmanından ya da
Selwise.track()çağrısından gelir.window.selwiseLayerve Data Layer entegrasyonunun açık olduğunu kontrol edin: Veri Katmanı. - Abonelik pasif. Konsolda
Subscription inactiveuyarısı veconfigisteğinde403. - Depolama kapalı. Gizli sekmede ya da engelli depolamada widget bellek içi depolamaya düşer; yine çalışır ama ziyaretçi kimliği sayfa yenilenince sıfırlanır.
5. Sipariş gitmiyor ya da gelir yok
| Belirti | Sebep ve çözüm |
|---|---|
POST .../orders isteği yok | trackOrder çağrısı çalışmıyor: yalnızca ödeme başarıyla bittiğinde render edilen teşekkür sayfasında olmalı; orderId boşsa çağrı sessizce hiçbir şey yapmaz. Komut kuyruğu satırı snippet'te var mı kontrol edin |
İstek 200, created: false | Aynı orderId zaten kayıtlı (sayfa yenilendi). Normal ve güvenli |
İstek 400 deprecated field is not allowed: id | id alanı gönderiliyor; orderId kullanın |
İstek 400 placedAt must be a valid ISO date string | Tarih biçimi |
İstek 403 | Alan adı / anahtar sorunu (yukarıdaki tablo). Sunucudan gönderiyorsanız Origin göndermeyin, mobile_write anahtarı kullanın |
| Satın alma var ama gelir panelde yok | status iptal/iade gibi gelire sayılmayan bir değer, ya da total boş ve items yok: Sipariş API'si |
| Gelir var, ürün bazlı rapor boş | items[].productItemCode beslemeyle eşleşmiyor |
| Gelir kampanyaya/öneriye atfedilmiyor | Sunucudan gönderiyorsunuz ve visitorId/sessionId taşımıyorsunuz, ya da sipariş son etkileşimden 168 saatten sonra gelmiş: Sipariş Atfı Kuralı |
6. Panelde nerede görünür
Analitik → Event Tracking Analytics (Analytics) sekmesinde olaylar 1-2 dakika içinde görünür; aralık "son 24 saat" ise ve hiç olay yoksa "No tracking signal yet" yazar. Bu sekmenin sinyallerini ve olay kalitesini Olay Sağlığı sayfası açıklar. Rakamlar yerinde değilse yukarıdaki ağ kontrollerini tekrarlayın; ağ doğruysa sorun veri hattında değil, panelin zaman aralığı ya da kanal seçimindedir.
Sık karşılaşılan sorunlar
| Belirti | Sebep ve çözüm |
|---|---|
| Hiç olay gitmiyor | Alan adı doğrulanmamış (403) ya da onay verilmemiş. Doğrulamayı ve onay akışını kontrol edin |
Olay degraded | productItemCode, beslemedeki item_code ile aynı değil |
| Ürün olayları eksik | Otomatik tespit temanızda çalışmıyor; ilgili olayları window.selwiseLayer.push() ya da Selwise.track() ile manuel gönderin: Event Referansı |
| Aynı olay iki kez sayılıyor | Harici dataLayer köprüsü ve manuel push aynı olayı gönderiyor, ya da script iki kez eklenmiş. Tek kaynağı esas alın |
| Müşteriler birleşmiyor | identify çağrılmıyor ya da kimlik her girişte değişiyor: Kullanıcı Kimliklendirme |
| Sunucu taraflı render içeriği görünmüyor | Sunucu Taraflı Render sayfasındaki sorun giderme tablosu |
| İçerik görünmüyor | Widget Görünmüyor |
Test modu
Yalnızca "test" işaretli kampanya ve kuralları görmek için:
localStorage.setItem('selwise_test_mode', 'true');
location.reload();
ya da adrese ?selwise_test_mode=true ekleyin.
Son güncelleme: 14 Kasım 2026
