İş Olayları
Kendi sisteminizden senaryo başlatma
İş olayı, mağazanın tarayıcıda gözleyemediği bir şeyin sizin sisteminiz tarafından Selwise'a bildirilmesidir: kargo depodan çıktı, iade onaylandı, fatura kesildi. Bildirim bir senaryoyu başlatır; senaryo da kişiye e-posta, SMS ya da sitede bir kampanya gösterir. Bu sayfa, Your system reports an event (Kendi sisteminiz bir olay bildirir) başlangıcını kuran senaryonun gönderen tarafını anlatır.
Önkoşullar
- Selwise panelinde bir senaryo, Your system reports an event başlangıcıyla yayında olmalıdır (Başlangıç adımları). Başlangıçtaki Event name (Olay adı), isteğinizdeki
keyile birebir aynı olmalıdır; büyük küçük harf ayırt edilir. - Kanalın bir public API anahtarı ve bu anahtarda
mobile_writeyetkisi gerekir (POSTisteği yazma yetkisi ister). Anahtarı kanal ekranında oluşturursunuz: API Anahtarları. - Kanal doğrulanmış olmalıdır; sunucudan gelen istek tarayıcı başlığı taşımadığı için kimlik doğrulama yalnızca anahtarla yapılır (Kimlik Doğrulama ve Erişim).
İş olayı bir takip olayı değildir
İş olayı events/batch ile gönderilmez. Olaylar takip tablosuna yazılır, 90 gün sonra silinir ve her analitik ekran onları sayar; bir kargo bildirimi ne alışverişçi davranışıdır ne de huninizde görünmelidir. İş olayı yalnızca senaryo motoruna gider; huniye, dönüşüm sayılarına ve olay geçmişine girmez. Anahtar adı da ayrı bir ad alanındadır: purchase adını verseniz bile satın alma tetikleyicili senaryolarınızı ele geçirmez.
İstek
POST https://api.selwise.com/api/v1/public/sites/SITE_KEY/business-events
x-selwise-api-key: swpk_live_...
Content-Type: application/json
| Alan | Zorunlu | Açıklama |
|---|---|---|
key | Evet | Sizin seçtiğiniz olay adı. Harf, rakam, nokta, tire, alt çizgi; en çok 60 karakter |
siteUserId | Biri zorunlu | Kişinin identify ile gönderdiğiniz üye kimliği, en çok 64 karakter. E-posta gönderebilmek ve kişiyi tanımak için bunu kullanın |
visitorId | Biri zorunlu | Kişinin tarayıcı ziyaretçi kimliği (selwise_vid), en çok 64 karakter. Sitede kampanya göstermek ve A/B ayrımı için gerekir |
payload | Hayır | Olayla ilgili sizin bildiğiniz her şey; bir nesne |
testMode | Hayır | true ise olay test olarak gider; yalnızca test modundaki senaryoları açar |
siteUserId ya da visitorId verilmezse alınacak kimse yoktur: istek 200 döner ama accepted değeri false olur. Bilinmeyen bir alan göndermek isteği 400 ile reddeder.
curl -X POST "https://api.selwise.com/api/v1/public/sites/SITE_KEY/business-events" \
-H "x-selwise-api-key: swpk_live_..." \
-H "Content-Type: application/json" \
-d '{
"key": "shipment_dispatched",
"siteUserId": "member-42",
"payload": { "orderNumber": "A-10293", "carrier": "Yurtici", "trackingUrl": "https://kargo.example/A-10293" }
}'
await fetch(`https://api.selwise.com/api/v1/public/sites/${SITE_KEY}/business-events`, {
method: 'POST',
headers: {
'x-selwise-api-key': process.env.SELWISE_API_KEY!,
'content-type': 'application/json',
},
body: JSON.stringify({
key: 'shipment_dispatched',
siteUserId: order.memberId,
payload: { orderNumber: order.number, carrier: order.carrier },
}),
});
Yanıt
{ "accepted": true, "scenarios": 1 }
| Alan | Anlamı |
|---|---|
accepted | true: istek alındı. false: kimlik verilmemiş, kimse alınmadı |
scenarios | Bu key ile başlayan yayındaki senaryo sayısı. Kişinin senaryoya girdiği anlamına gelmez: giriş sınırı, yeniden giriş, ek segment ve olay filtreleri kuyrukta ayrıca uygulanır |
Yanıt hemen döner; giriş kararı kuyrukta verilir, yani kişi birkaç saniye içinde senaryoya girer. Yeni yayınlanan bir senaryo, sunucu önbelleği yüzünden bir dakikaya kadar görünmeyebilir. scenarios değeri 0 ise key hiçbir yayındaki senaryoyla eşleşmiyor: yazımı ve büyük küçük harfi kontrol edin.
Payload nerede kullanılır
payload senaryonun o koşusunun tetikleyici verisi olur:
- Olay filtreleri: başlangıçtaki Event filters alanındaki yollar
payloadalanlarına bakar (carriereşittirYurtici). Filtreyi sağlamayan olay kişiyi içeri almaz; raporda Did not match the starter's audience (Başlangıcın kitlesine uymadı) olarak sayılır. - Mesajlar: e-posta, SMS ve bildirimde
${custom.orderNumber}gibi yer tutucularpayloadalanlarını basar. Nesne ve dizi değerleri basılmaz (boş kalır); düz değerler gönderin (Mesajlar ve ürün bloğu). - Sağlayıcınıza devret: adım isteği,
triggeralanında bu veriyi taşır (Aksiyon adımları).
Hata durumları
| Kod | Sebep |
|---|---|
400 | Bilinmeyen alan, key kalıba uymuyor ya da 60 karakteri aşıyor, siteUserId ya da visitorId 64 karakteri aşıyor |
403 | Kanal doğrulanmamış, API anahtarı geçersiz, iptal edilmiş ya da mobile_write yetkisi yok |
404 | siteKey bilinmiyor |
429 | Dakikada 300 istek sınırı aşıldı; Retry-After kadar bekleyin |
Toplu işlerde (gece çalışan bir kargo aktarımı gibi) istekleri sınırın altında tutun; her satır için ayrı bir istek atılır, toplu gönderim yoktur.
Doğrulama
- Senaryoyu test modunda yayına alın ve isteğe
"testMode": trueekleyin. Test modundaki senaryo yalnızca test olayını alır ve sağlayıcıya hiçbir şey göndermez (Kimler girebilir). - Automation → Scenarios → senaryo → Shoppers sayfasında kişinin satırı birkaç saniye içinde görünür; Test mode yazar.
- Kişi görünmüyorsa Report sayfasında Who did not get in bölümüne bakın: sebep orada sayılır (Kimler girebilir).
- Hazır olunca test modunu kapatıp yayına alın ve
testModealanını göndermeyi bırakın.
Sık yapılan hatalar
keyyanlış yazıldı. Başlangıçtaki ad ile istekteki ad birebir aynı olmalıdır;Shipment_Dispatchedileshipment_dispatchedfarklı olaylardır.- Kimlik yok.
siteUserIdvevisitorIdikisi de yoksaaccepted: falsedöner ve hata fırlatılmaz; yanıtın gövdesini okuyun. - Üye kimliği
identifyile aynı değil.siteUserId, mağazadaidentifyile gönderdiğiniz üye kimliğidir; dahili bir sipariş numarası değildir. Eşleşmeyen kimlik, profil ve izin kaydı bulunamadığı için e-posta adımında Not reachable (Ulaşılamadı) olarak atlanır (Kimlik tanıma). - Sitede kampanya göstermek için
visitorIdyok. Sitede göster adımı bir tarayıcıya hak bırakır; yalnızca üye kimliğiyle gelen kişide atlanır. - Yayında olmayan senaryo. Taslak ya da duraklatılmış senaryoyu
scenariossayısı saymaz.
Son güncelleme: 10 Ekim 2026