Tercih merkezi: herkese açık opt-in/opt-out sayfası
İngilizce asıl: Preference center: the public opt-in/opt-out page (bu sayfanın İngilizce sürümü).Tercih merkezi, bir kişinin kendi kanal opt-in’lerini, abonelik konularını, mesaj sıklığını ve (etkinleştirirseniz) veri silme talebini yönettiği herkese açık bir sayfadır — hesap yok, giriş yok. Her kişi sayfaya imzalı bir bağlantı üzerinden ulaşır: URL, 30 gün sonra süresi dolan bir HMAC-SHA256 jetonu (
v1.<payload>.<signature>) taşır; böylece sayfa self-servis kalır ama yine de tam olarak bir organizasyonda tam olarak bir kişiyle sınırlıdır.
Özetlenmiş uç nokta yüzeyi ayrıca Send Gates içinde de yer alır; bu kılavuz tam gezinmedir: her yapılandırma alanı, bağlantının nereye konacağı, herkese açık sayfa API’sinin ne döndürdüğü ve bir opt-out veya opt-in’in hangi uyumluluk yüzeylerine yazdığı.
Aşağıdaki tüm uç noktaların kökü
https://api.orbit.devotel.io/api/v1/compliance altındadır.
Tercih merkezi tenant’ın sahip olduğu bir kontroldür: kanalları, konuları ve markayı siz seçersiniz, onay kanıtlarını organizasyonunuz saklar. Orbit platformu işletir; onay kararı kişiye aittir. Bu kılavuz hukuki tavsiye değildir — yükümlülüklerinizi hukuk danışmanınızla doğrulayın.
1. Bir kez yapılandırın: POST/GET /preference-center
YapılandırmayıPOST /preference-center ile kurun (owner/admin API anahtarı). Uç nokta, yapılandırmayı organizasyonunuzun ayarlarına yazar (upsert) ve kaydedilen nesneyi döndürür — güncellemek için yeniden çalıştırın. GET /preference-center mevcut yapılandırmayı okur; yapılandırma öncesi enabled: false ile bir ipucu mesajı döndürür.
Yapılandırma alanları
Her alan sunucu tarafında doğrulanır — reddedilen bir POST, hangisinin başarısız olduğunu anlamanız için alan bazlı sorunlarla (field, message) birlikte 422 döndürür.
Abonelik konuları
Konu; bir kişinin, kanalın tamamına dokun madan katılabileceği veya çıkabileceği adlandırılmış bir gruptur — Bülten, Ürün Güncellemeleri, Fatura Uyarıları. Konuid’leri benzersiz olmalı ve slug desenine uymalıdır ([a-z0-9][a-z0-9_-]{0,63}); her girdide şunlar vardır:
name(1–120 karakter) — sayfadaki görünen ad.description(isteğe bağlı, ≤500) — anahtarın yanında gösterilen bir satırlık bağlam.defaultOptIn(varsayılanfalse) — kayıtlı tercihi olmayan bir kişinin nasıl ele alınacağı.archived(isteğe bağlı) — arşivlenen konular denetim izinde kalır ama artık sayfada görünmez.
http(s) şema incelmesini geçemeyen URL’ler önden reddedilir ve yinelenen konu id’leri sessizce üzerine yazılmak yerine “Topic ids must be unique” ile başarısız olur.
2. Kişi başına bağlantı üretin
Yapılandırdıktan sonra, her seferinde bir kişi içinPOST /preference-center/link ile bağlantı üretin:
link döndürür — ${DEVOTEL_WEB_URL}/preferences?token=v1… biçiminde bir URL. Dikkat edilecek noktalar:
- Bağlantı JSON uç noktasını değil, barındırılan sayfayı hedefler. Altbilgi/gönderen şablonlarınıza olduğu gibi kopyalayın; sayfa, veri uç noktasını kaputun altında kendisi çeker.
- 30 günlük TTL. Bundan sonra jeton süresi dolmuş olarak doğrulanır ve kişi yeni bir bağlantı istemelidir (yenisini üretmek tek API çağrısıdır).
- Sayfa, üretim anında locale’den bağımsızdır. Web uygulaması,
?token=sorgusunu koruyarak bir yönlendirme çözer; böylece kişinin locale’ini tahmin etmeniz gerekmez.
Nereye konur
- Serbest metin gövdeli pazarlama gönderileri: sizin için eklenir. Bağlantıyı yerleştirmeniz gerekmez. Tercih merkeziniz etkin olduğu sürece Orbit, serbest metin gövdeli her pazarlama gönderisine bir
{optOutMessage}: {link}satırı ekler —smsvewhatsapp’ta markalı kısa alan adınız üzerinden,emailve diğer serbest metin kanallarında ham jetonlu bağlantı olarak — ve şablon gönderileri atlanır. Aynı sayfa altbilginin ne zaman göründüğünü, eklenen tıklamanın ne yazdığını ve operatörün “Reply STOP” ifadesiyle nasıl ilişkili olduğunu anlatır: bkz. Preference center: when Orbit appends the opt-out footer for you. - İşlemsel ve şablon gönderiler: kendiniz yerleştirin. Bu gönderiler eklenen altbilgiyi asla taşımaz; bu yüzden yukarıda üretilen bağlantı, onların tek dokunuşla abonelikten çıkma yoludur: e-posta şablonlarınızın abonelikten çıkma alanına olduğu gibi kopyalayın ve istediğiniz yerde şablon metinlerine veya işlemsel gövdelere yazın. Bir yerleşim için kısa izlenen bağlantı üretmek isteğe bağlıdır; kısa bağlantı üretimi başarısız olursa ham bağlantı yine çalışır — yedek, ek niteliktedir ve uyumluluk için asla yük taşıyıcı değildir.
- Baskılama kaynaklı yeniden opt-in. Bir kişi başka bir akışla yeniden katıldığında, aynı self-servis sayfayı alması için ona yeni bir bağlantı verebilirsiniz.
3. Herkese açık jeton sayfası
Barındırılan sayfa, imzalı jetonla korunan iki kimliksiz uç nokta üzerinden okur ve yazar:GET /preferences/:token— sayfa yükünü döndürür.PUT /preferences/:token— güncellemeleri uygular.
400 INVALID_TOKEN döndürür; süresi dolmuş veya kurcalanmış jetonlar “Please request a new link.” ile 401 TOKEN_EXPIRED döndürür.
GET yanıtı
Yük, kişinin mevcut durumunu ve organizasyonun yapılandırmasını bir araya getirir:consentHistory, kişinin en yeniden en eskiye opt-in/opt-out denetim izidir, 20 satırla sınırlıdır ve operatörlerinizin panoda gördüğüyle aynı onay defterinden çizilir.
PUT istek gövdesi
channelPreferences— kısmi haritaya izin verilir (Zod partial-record); en az bir kanal zorunludur.frequencyPreference— isteğe bağlı,all,important_only,weekly_digest,monthly_digest’ten biri.topicPreferences— isteğe bağlı{ topicId: opted_in | opted_out }haritası, yapılandırdığınız konulara karşı doğrulanır; bilinmeyen id’ler yok sayılır.requestDataDeletion— opt-out ile birlikte bir GDPR silme talebi kurar (bkz. bölüm 6).
4. Güncellemeler nasıl akar
Buraya yazılan bir opt-in/opt-out yalnızca bir arayüz bayrağı değildir — bir STOP anahtar sözcüğünün yazdığı dört uyumluluk yüzeyinin aynıları güncellenir:- Onay defteri. Kanal başına (veya konu başına)
source: preference_centerile birconsent_recordssatırı eklenir — GDPR Art 7 ispat yükü denetim iziniz. - Baskılama listesi. Opt-out olunmuş her kanalda, kişinin normalize edilmiş telefonu/e-postası
allkapsamıyla eklenir — her gönderi kapısının okuduğu kanallar arası bir blokaj. - STOP çiti. Opt-out’ta bir Redis hızlı yol çiti kurulur (ve tam yeniden opt-in’de temizlenir); böylece devam eden kampanya partileri, daha yavaş veritabanı baskılaması yayılmadan değişikliği görür.
- Denetim kaydı. Yapılandırmayı değiştirdiğinizde
compliance.preference_center_updatedkaydedilir ve kişi düzeyindeki opt-in/out olayları onay defterinde yakalanır.
opted_in), kişinin telefonu için etkin baskılama satırlarını yürürlükten kaldırır ve STOP çitini temizler; onay defteri ise tersine çevrilmiş girdiyi kazanır.
Konu ve kanal. Kanal düzeyinde bir opt-out her zaman kazanır — bir konu anahtarı, onayı kişinin hâlâ kabul ettiği kanallar içinde daraltır. PUT’taki bilinmeyen konu id’leri kalıcılaştırılmak yerine yok sayılır; böylece bayat bir form keyfi öznitelik anahtarları yazamaz.
5. GDPR silme anahtarının semantiği
showGdprDelete etkin olduğunda ve kişi PUT’ta requestDataDeletion: true işaretlediğinde, API, opt-out ile birlikte eski tarz bir GDPR silme talebi kaydeder — veri silme süreciniz için işaretlenmiş bir pending satırı. Bu işaretleme bilinçlidir: tercih merkezinin silme anahtarı kişiyi işaretler; izlenen DSAR hattını başlatmaz.
6. Test etme
Bir duman betiğine yapıştırabileceğiniz iki hazır curl örneği: Yapılandırmayı kaydedin:201.
Bağlantı üretin ve herkese açık uç noktaları deneyin:
updated: true ile uygulanan tercihleri ve istendiğinde bir gdprRequest girdisini döndürür.
Sık rastlanan hatalar: 400 INVALID_TOKEN (bozuk jeton), 401 TOKEN_EXPIRED (TTL aşıldı veya imza uyuşmazlığı — yeni bir bağlantı üretin), 422 VALIDATION_ERROR (yapılandırma veya güncelleme gövdesinde alan düzeyinde sorunlar) ve tercih merkezi devre dışıyken veya kişi id’si yokken 404 NOT_FOUND.
Related
- Send gates ve ön gönderi korumaları — tercih merkezi özetinin sessiz saatler, acil durdurma ve hız sınırlayıcılarla birlikte yaşadığı yer.
- Opt-Out ve Baskılama Listeleri —
allkapsamının ve toplu CSV içe aktarımlarının bu yüzeyle ilişkisi. - Onay yönetimi — aynı onay defterini saklayan operatör tarafı API.
- DSAR referansı —
requestDataDeletiontaleplerinin yönlendirileceği izlenen silme hattı.