Geliştirici Notları

Atama, anahtarlar, QA parametreleri, sipariş

Bu sayfa, deneylerle çalışan geliştiriciye göre: atamanın nasıl hesaplandığı, tarayıcıdaki anahtarlar, QA parametreleri ve bir siparişin bir deneye nasıl yazıldığı. Uçların istek ve yanıt şekilleri Widget ve SDK Uçları sayfasındadır.

İki ayrı atama yolu

A/B Test (varlık deneyi)Sayfa ve Split URL deneyi
Atamayı kim yaparSunucu: GET /public/experiments/assignTarayıcı: mağaza açılışındaki yapılandırmadan (/public/sites/SITE_KEY/config) paylarla birlikte gelir
HashMD5, 100 kovaFNV-1a, 10.000 kova
assign yanıtında görünür müEvetHayır: sunucu bu uçta sayfa deneyi döndürmez
Selwise.getActiveExperiments()DönerDönmez

İki yol aynı ziyaretçi için farklı kovalar üretir; bu bilinçlidir, çünkü ikisi farklı deneylerdir.

Atamayı yeniden hesaplamak (hata ayıklama)

A/B Test'te ziyaretçi kimliği (selwise_vid) ve deney kimliğinden:

import { createHash } from 'node:crypto';

const bucket = (seed) =>
  parseInt(createHash('md5').update(seed).digest('hex').slice(0, 8), 16) % 100;

// 1) Trafik kapısı: deneye giriyor mu?
const inTraffic = bucket(`experiment_traffic:${experimentId}:${visitorId}`) < trafficPercent;

// 2) Kol: kolları oluşturulma sırasıyla (eşitlikte id) gezip payları topla
let cumulative = 0;
const arm = variants.find((v) => bucket(`${experimentId}:${visitorId}`) < (cumulative += v.trafficSplit));

Kollar için sıra, atamanın bir parçasıdır: kol payları sırayla toplanır. Sayfa ve Split URL deneyleri için aynı mantık FNV-1a ile onsite_traffic: ve onsite: önekleriyle çalışır. İki hesap bağımsızdır; bu yüzden aynı ziyaretçi bir deneyin trafiğinde olup bir başkasının dışında kalabilir.

Tarayıcıdaki anahtarlar

Anahtar (localStorage)İçerik
selwise_vidZiyaretçi kimliği. Silinirse yeni ziyaretçi olursunuz.
selwise_experimentsSunucunun verdiği son atamalar; yalnızca hız için. Her sayfada sunucunun cevabı geçerlidir, silmek kolu değiştirmez.
selwise_experiment_conversionsBu ziyaretçinin hangi kollarda zaten dönüştüğü (tekrar tıklamalar yeniden sayılmasın diye)
selwise_experiment_exposuresHangi kolların kaydı zaten gönderildi (yalnızca istek tasarrufu; asıl tekilleştirme sunucuda)
selwise_test_modetrue ise test modu açık

Sunucu bir ziyaretçiyi bir deneyde yalnızca bir kez sayar (experiment_id ile visitor_id birincil anahtardır); yerel anahtarlar kapalı olsa da sayım tekildir.

QA parametreleri

  • ?selwise_test_mode=1: test modunu açar, adres çubuğundan silinir; =0 kapatır. Test modunda deneyin olayları iki tarafta da atılır. Bkz. Kitle ve Test Modu.
  • ?selwise_variant=DENEY_ID:KOL_ID: o kolu zorlar. Birden çok deney için tekrarlanır. Sunucu kolu bütün içeriğiyle verir (isForced: true); hash'i, trafik yüzdesini ve kitleyi atlar; hiçbir şey saklanmaz ve hiçbir şey sayılmaz.

Deney kimliği sonuç sayfasının adresindedir (/dashboard/experiments/DENEY_ID/results). Kol kimliklerini görmek için tarayıcı konsolunda Selwise.getActiveExperiments() çağırın ya da assign yanıtına bakın; yanıt kol başına variantId ve variantName taşır. window.Selwise yardımcıları: getVariant(experimentId), getExperimentVariant(experimentId), getActiveExperiments() (JavaScript API). Bunlar yalnızca bu sayfada girilmiş deneyleri döndürür: kitlesi sayfayı kabul etmeyen bir deney listede yoktur.

Sipariş bir kola nasıl yazılır

Bir sipariş, mağazanızın Sipariş Takibi uçlarından biriyle Selwise'e ulaşınca, kolda kaydı olan ziyaretçi dönüşür ve sipariş tutarı kolun gelirine eklenir. Bunun için üç şart vardır:

  1. Siparişte visitorId olmalı (selwise_vid değeri). Olmazsa sipariş yine alınır ama hiçbir deneyin istatistiğine giremez.
  2. Ziyaretçinin o deneyde bir kaydı (exposure) olmalı ve deney Running ya da Paused olmalı. Completed ya da Draft deneye sipariş yazılmaz.
  3. Sipariş kanalın para biriminde olmalı. Başka bir para biriminde ziyaretçi dönüşür ama tutar eklenmez.

Sipariş gövdesine experimentAssignments eklerseniz ({ "DENEY_ID": { "experimentId": "...", "variantId": "..." } }) o kollara yazılır; eklemezseniz sunucu ziyaretçinin kayıtlarından türetir. Siparişi yalnızca bir kez yazar: aynı externalId ikinci kez gelirse tekrar sayılmaz. Geçmişten içe aktarılan siparişler deney sayaçlarına girmez.

Sınırlar

GET /public/experiments/assign IP başına dakikada 60, POST /public/experiments/track ve track-event dakikada 120 isteğe sınırlıdır. Doğrulanmamış ya da var olmayan kanal anahtarı 403 alır. Ayrıntı: Kimlik Doğrulama ve Erişim.

Son güncelleme: 10 Ekim 2026