Müşteri Onayı ve Tercihlerini Yönetmek İçin Bir Web Uygulaması Oluşturun
Net bir UX, denetim günlükleri, API'ler ve güçlü güvenlikle onay ve tercihleri yönetmek için bir web uygulaması tasarlama, inşa etme ve dağıtma adım adım rehberi.

Hedefleri, Kapsamı ve Onay Türlerini Belirleyin
Ekranları tasarlamadan veya kod yazmadan önce ne inşa ettiğiniz—ve neyi yapmadığınız—konusunda net olun. “Onay” ve “tercihler” benzer seslense de genellikle yasal ve operasyonel olarak farklı anlamlara sahiptir. Bu tanımları erken doğru yapmak, daha sonra kafa karıştıran UX ve kırılgan entegrasyonların önüne geçer.
Onay vs. tercihler (basitçe)
Onay daha sonra kanıtlayabileceğiniz bir izindir (kim kabul etti, neye, ne zaman ve nasıl). Örnekler: pazarlama e-postası almayı kabul etmek veya izleme çerezlerine izin vermek.
Tercihler deneyimi veya sıklığı şekillendiren kullanıcı seçimleridir (haftalık vs aylık güncellemeler, ilgilenilen konular). Bunları da güvenilir şekilde saklamalısınız, ama genellikle hukuki bir onayla aynı değildir.
Kapsamı kararlaştırın: kanallar, konular ve toplama noktaları
İlk günde neyi yöneteceğinizi yazın:
- Kanallar: email, SMS, push bildirimleri, uygulama içi mesajlar, telefon aramaları
- Konular: ürün güncellemeleri, bültenler, promosyonlar, etkinlik davetleri, ortak teklifleri
- Seçimlerin toplandığı yerler: kayıt, ödeme, lead formları, hesap ayarları, uygulama içi istemler, destek etkileşimleri
Yaygın bir tuzak pazarlama onayı ile işlemsel mesajları (fişler veya şifre sıfırlamalar gibi) karıştırmaktır. Bunları tanımlarınızda, veri modelinizde ve arayüzünüzde ayrı tutun.
Paydaşları ve sorumluluğu belirleyin
Bir onay yönetimi web uygulaması birçok ekibi etkiler:
- Pazarlama (kampanya kuralları, abonelik tercihleri)
- Ürün (uygulama içi istemler, tercih merkezi)
- Destek (değişiklikleri işleme, sorun giderme)
- Hukuk/uyumluluk (tanımlar, saklama, kanıt gereksinimleri)
Kararlar için net bir sahip atayın ve kurallar, satıcılar veya mesajlaşma değiştiğinde güncellemeler için hafif bir süreç tanımlayın.
Ölçülebilir başarı metrikleri belirleyin
Birkaç ölçülebilir sonuç seçin; örneğin daha az spam şikayeti, kafa karışıklığından kaynaklanan daha az abonelik iptali, GDPR onay kayıtlarına daha hızlı erişim, abonelik tercihleriyle ilgili daha az destek bileti ve istenildiğinde onay kanıtı sağlama süresinin kısalması.
Gereksinimleri Gizlilik Kurallarına Eşleyin (GDPR/CCPA Temel)
Gizlilik kurallarını pratik ürün gereksinimlerine çevirin. Bu bölüm yüksek düzey bir yönlendirmedir, yasal tavsiye değildir—özellikleri şekillendirmek için kullanın, sonra ayrıntılar için hukuki danışmanla doğrulayın.
Uygulamanızın desteklemesi gerekenler (asgari uyumluluk)
Fonksiyonel olarak bir onay yönetimi web uygulaması genellikle şunları ele almalıdır:
- Opt-in (ör. pazarlama e-postaları, SMS, gerekli yerlerde çerezler)
- Opt-out (ör. “Kişisel bilgilerimin satılmamasını/ paylaşılmamasını iste”)
- Ayrıntılı seçimler (kanallar, konular, sıklık)
- Kanıt (kullanıcının neyi kabul ettiğine dair savunulabilir kayıt)
- Kolay geri çekme (fikrinizi değiştirmek, opt-in kadar kolay olmalı)
Bölgesel farklar (basitleştirilmiş)
- GDPR (AB/İngiltere) geçerli bir “hukuki dayanak”a odaklanır. Birçok pazarlama ve çerez kullanım senaryosu için bu, açık, onaylayıcı rıza ve geri çekme imkânı anlamına gelir.
- ePrivacy kuralları (ülkeye göre değişir, genellikle AB rehberliğiyle uyumlu) çoğunlukla çerezler ve benzeri izlemeyi etkiler; önemsiz izleme için açık seçimler gerektirir.
- CCPA/CPRA (California) kişisel bilgilerin “satılması” veya “paylaşılması” için opt-out haklarına vurgu yapar, hassas veriler ve güçlü şeffaflık gereksinimleri etrafında ek sınırlamalar getirir.
Ne kaydetmelisiniz: kim, ne, ne zaman, nasıl ve neden
Onay kayıtlarınız şunları yakalamalıdır:
- Kim: kullanıcı kimliği (ve/veya email/telefon), ayrıca hesap/tenant bağlamı
- Ne: amaç(lar) ve kanallar (örn. “ürün güncellemeleri via email”)
- Ne zaman: zaman damgası, saat dilimi ve yürürlülük tarihi
- Nasıl: UI kaynağı (tercih merkezi, ödeme), yöntem (onay kutusu, çift onay) ve gösterilen bildirim/politika sürümü
- Neden: hukuki dayanak/amaç etiketi ve bölgesel işaret (GDPR onayı vs CCPA opt-out gibi)
Saklama ve denetlenebilirlik
Onay kayıtları ve denetim günlüğü için veri saklama politikalarını tanımlayın (genellikle pazarlama verilerinden daha uzun tutulur). Yalnızca gerektiği kadarını saklayın, koruyun ve saklama sürelerini belgeleyin. Emin değilseniz “hukuki karar gerekiyor” yer tutucusu ekleyin ve dahili politika dökümanlarınıza (veya /privacy eğer kamuysa) bağlayın.
Son politika kararları—özellikle “satış/paylaşma”nın ne sayıldığı, çerez sınıflandırması ve saklama—hukuki danışmanla gözden geçirilmelidir.
Veri Modelini ve Onay Kayıt Şemasını Tasarlayın
Bir onay yönetimi web uygulaması veri modeline bağlıdır. Şema “kim neye, ne zaman ve nasıl onay verdi?” sorusunu cevaplayamıyorsa, uyumluluk, müşteri desteği ve entegrasyonlarla zorlanırsınız.
Modellemeniz gereken temel varlıklar
Birkaç net yapı taşıyla başlayın:
- Müşteri/Kimlik: sizi tanıyan kişi (veya hesap)
- Tanımlayıcı: email, telefon, dahili kullanıcı ID, cihaz ID—bunları desteklemek için ayrı satırlar olarak saklayın
- Amaç: veriyi neden işlediğiniz (örn. “pazarlama e-postaları”, “sipariş güncellemeleri”, “analitik”)
- Kanal: email, SMS, push, telefon
- Tercih: amaç/kanal başına kullanıcının seçimleri (örn. abone/abonelikten çıkma, frekans)
- Onay kaydı: izin veren veya geri çeken hukuki olay
Bu ayrım tercih merkezini esnek tutar ve temiz GDPR onay kayıtları ile CCPA opt-out sinyalleri üretmeyi sağlar.
Sürümleme: hangi metni kabul ettiler?
Her karara bağlı olarak gösterilen bildirim/politika sürümünü saklayın:
notice_idvenotice_version(veya içerik hash'i)- gösterilen metnin locale'i (EN/FR)
- gösterilen onay kutusu etiketi veya bildirim snippet'i
Böylece metin değiştiğinde eski onaylar kanıtlanabilir kalır.
Kanıt (delil) alanları
Her onay olayı için risk seviyenize uygun delil kaydedin:
- zaman damgası (UTC) ve gerekliyse saat dilimi
- kaynak (web, iOS, destek elemanı), ayrıca kaynak sayfa/yolu
- kullanıcı ajanı
- IP adresi yalnızca açık bir ihtiyaç ve saklama politikası varsa
Kimlik birleştirmeleri ve geri çekme bayrakları
İnsanlar iki kere kayıt olur. Birden çok tanımlayıcıyı bir müşteriye bağlayarak ve birleştirme geçmişi kaydederek birleştirmeleri modelleyin.
Geri dönüşleri açıkça temsil edin:
status: granted / withdrawnwithdrawn_atve sebep (kullanıcı eylemi, admin talebi)- CCPA opt-out desteklemek için geri çek-onay ve satış/paylaşma isteme için özel bayraklar
Kullanıcıların Anlayacağı Bir Tercih Merkezi UX'i Oluşturun
Bir tercih merkezi, insanların “Bana ne göndereceksiniz ve bunu nasıl değiştiririm?” sorusuna hızlıca cevap verebilmelidir. Zekâdan çok açıklık hedefleyin ve kararların geri alınabilir olmasını sağlayın.
Doğru giriş noktalarını seçin
Kullanıcıların sizi her etkileşimde kolayca bulmasını sağlayın:
- Önemli sayfalarda (ödeme, hesap ayarları) gömülü widget
- Her e-posta altbilgisinden ve SMS yardım akışından link verilen barındırılan tercih merkezi sayfası (ör.
/preferences) - Giriş yapılmış kullanıcılar için uygulama içi ekran (Ayarlar → Bildirimler / Gizlilik)
Aynı ifade ve yapıyı tüm üç yerde kullanın ki kullanıcılar farklı bir yerde olduklarını hissetmesin.
Seçimleri sade dilde yazın (ve tuzaklardan kaçının)
“Konu güncellemeleri” veya “İpuçları ve rehberler” gibi kısa etiketler kullanın ve gerektiğinde tek satırlık açıklama ekleyin. Hukuki dilden kaçının.
Yasal düzenlemeler veya platform kuralları açıkça zorunlu kılmadıkça önce işaretlenmiş kutular kullanmayın. Birden fazla izin istiyorsanız, bunları net şekilde ayırın (örn. pazarlama e-postaları vs SMS vs ortaklarla veri paylaşımı).
Ayrıntılı tercihler ile basit bir çıkış sunun
İnsanların konu bazında ve gerekli ise kanal bazında (Email, SMS, Push) tercih seçmelerine izin verin. Ayrıca her zaman görünür olan bir global abonelik iptali sağlayın.
İyi bir desen:
- “Tüm pazarlamadan çık” (tek adımla)
- Konu toggles (ince ayar)
- Kanal toggles (uygunsa)
Niyeti doğrulayın (sürtünme eklemeden)
Email kayıtları için gerekliyse çift onay (double opt-in) kullanın: kullanıcı tercihleri seçtikten sonra, aboneliği etkinleştiren bağlantıya tıklanana kadar abonelik aktif olmasın. Sayfada sonraki adımın ne olduğunu açıklayın.
Başından itibaren erişilebilirliği destekleyin
Her şey klavye ile kullanılabilir, net odak durumları olsun, yeterli kontrast sağlayın ve ekran okuyucuların yorumlayabileceği etiketler kullanın (örn. “Haftalık özet e-postası al: Açık/Kapalı”).
Onay ve Tercihler İçin Backend API'sini İnşa Edin
Backend API, müşterinin neyi kabul ettiğinin ve ne almak istediğinin tek kaynağıdır. Temiz, öngörülebilir bir API tercih merkezini email, SMS ve CRM araçlarına bağlamayı kolaylaştırır ve çelişkili durumları önler.
Temel endpointleri tanımlayın
Yüzeyi küçük ve açık tutun. Tipik bir set:
- Tercihleri oku:
GET /api/preferences(veya admin kullanımı içinGET /api/users/{id}/preferences) - Tercihleri güncelle:
PUT /api/preferences(mevcut seti değiştirmek için; kısmi güncellemeden daha net) - Onayı geri çek:
POST /api/consents/{type}/withdraw(kazayla olmaması için “güncelle”den ayrı)
Her onay türünün açıkça adlandırıldığından emin olun (örn. email_marketing, sms_marketing, data_sharing).
Güncellemeleri idempotent yapın (yeniden denenebilir)
Tarayıcılar ve entegrasyonlar istekleri yeniden deneyebilir. Bir yeniden deneme ikinci bir “abonelik iptali” olayı yaratırsa denetim izi karmaşıklaşır. Idempotency-Key başlığı (veya request_id alanı) kabul ederek aynı isteğin aynı sonucu üretmesini sağlayın ve sonucu saklayın.
Girdileri ve izin verilen durumları doğrulayın
Savunamayacağınız hiçbir şeyi kabul etmeyin:
- Sadece bilinen alanları kabul edin; hiçbir şeyi sessizce yoksaymayın
- İzin verilen değerleri (
granted,denied,withdrawn) ve geçişleri zorunlu kılın - Anlamı değiştiren gizli alanlardan kaçının (ör. bir onay kutusu aynı anda “veri paylaşımı”nı da değiştiriyorsa)
Tutarlı hata biçimleri ve hız sınırlama
Tahmin edilebilir hata biçimleri döndürün (örn. code, message, field_errors) ve ayrıntı sızdırmaktan kaçının. Onay geri çekme ve hesap arama gibi hassas endpointleri kötüye kullanımı azaltmak için hız sınırlayın.
Örneklerle belgelendirin
Frontend ve entegrasyonlar için kopyala-yapıştır istek ve yanıtlarla iç API referansı yayınlayın. Versiyonlamayı koruyun (örn. /api/v1/...) ki değişiklikler mevcut istemcileri boğmasın.
Uygulamayı Güvende Tutun: Kimlik, Yetkilendirme ve Veri Koruma
Güvenlik onayın parçasıdır: biri hesabı ele geçirirse veya isteği taklit ederse tercihleri izinsiz değiştirebilir. Önce kimliği koruyun, sonra onay değiştiren her eylemi kilitleyin.
Kullanıcıları sürtünme eklemeden kimliklendirin
Hedef kitlenize ve risk seviyenize uyan bir yaklaşım kullanın:
- Oturum girişi (email + parola) güçlü parola kuralları ve isteğe bağlı MFA ile
- Magic link düşük sürtünce için (zaman sınırlı, tek kullanımlık, cihaz farkındalıklı)
- SSO/SAML/OIDC B2B portalları için
Ayrıca hesap ele geçirme koruması ekleyin: giriş denemelerini hız sınırlayın, hassas değişikliklerde kullanıcıyı bilgilendirin ve tüm kanallar için kritik ayar değişikliklerinde ek doğrulama düşünün.
Her endpointte yetkilendirmeyi zorunlu kılın
UI'yi güvensiz kabul edin. Backend doğrulamalıdır:
- İsteği yapanın kimlik doğruladığı
- İsteği yapanın o spesifik kullanıcı/konu üzerinde işlem yapmaya yetkili olduğu (email ile düzenleme gibi kısayollar olmasın)
- Eylemin daha önce tanımladığınız onay kurallarıyla uyumlu olduğu
Tarayıcıya açık endpointleri CSRF koruması, sıkı CORS ve kimliklerin yatay ayrıcalık yükseltmesini önleyen açık kontrollerle sertleştirin.
Veriyi şifreleyin ve minimize edin
Veriyi taşınırken (HTTPS) ve saklanırken şifreleyin. Tercih merkezini çalıştırmak için gereken en küçük alan setini toplayın—çoğu durumda ham tanımlayıcıları saklamamak için dahili ID'ler veya hash'li arama anahtarları kullanılabilir. Eski loglar ve inaktif hesaplar için veri saklama politikalarını ayarlayın ve uygulayın.
Loglama ve herkese açık formları koruyun
Denetim kaydı şarttır ama logları güvenli tutun: tam oturum tokenları, magic-link tokenları veya gereksiz kişisel verileri saklamayın. Genel abonelik formlarına karşı bot kayıtlarını ve tercih manipülasyonunu azaltmak için CAPTCHA veya throttling ekleyin.
Denetim Günlükleri ve Onay Kanıtını Uygulayın
Denetim günlükleri, bir kişinin izin verip vermediğinin makbuzudur. Şikayet, düzenleyici soruşturma veya iç incelemede ne olduğunu açıklamanın yoludur.
Her değişiklik için ne kaydedilmeli
Her onay veya tercih güncellemesi, eklenebilir-tek yönlü bir denetim olayı üretmelidir ve şunları yakalamalıdır:
- Önceki ve yeni değer (örn. marketing_email: true → false)
- Aktör türü ve kimliği: kullanıcı, admin, otomatik senkron, API anahtarı/hizmet hesabı
- Zaman damgası (UTC) ve kaynak (tercih merkezi, ödeme, webhook, destek aracı)
- Kanıtı destekleyen bağlam: politika/sürüm gösterimi, yakalama yöntemi (onay kutusu, çift onay) ve o zamanki kullanıcı kimliği
Bu ayrıntı seviyesi tam geçmişi yeniden kurmanıza izin verir—sadece son durumu değil.
Kanıtı güvenilir tutun: operasyonel loglardan ayrı tutun
Operasyonel loglar (debug, performans, hatalar) hızlı döner ve filtrelenip düşürülebilir. Denetim logları kanıt olarak ele alınmalıdır:
- Uygulama loglarından ayrı saklayın
- Append-only (güncelleme yok; sadece yeni olay) yapın
- Bütünlük kontrolleri ekleyin (kısıtlı yazma yolları, saklama kuralları, isteğe bağlı hashing/zincirleme metadataları)
Denetimleri kullanılabilir yapın: arama ve dışa aktarma
Denetim izi yalnızca erişilebilir ise faydalıdır. Kullanıcı ID, email, olay türü, tarih aralığı ve aktör ile aranabilir görünümler sağlayın. İncelemeler için dışa aktarma (CSV/JSON) destekleyin—ancak dışa aktarmaları filigranlı ve izlenebilir tutun.
Erişim ve dışa aktarmaları kilitleyin
Denetim verileri genellikle tanımlayıcılar ve hassas bağlam içerir. Katı erişim kontrolleri belirleyin:
- Sadece onaylı roller denetim olaylarını görebilir veya dışa aktarabilir
- Yönetici görünümleri erişim gerekçesini göstermeli (bilet/referans alanı)
- Her dışa aktarma kendi denetim olayı olarak kaydedilmeli (kim, hangi kapsam, ne zaman)
İyi yapıldığında denetim günlükleri onay yönetimini “doğru yaptığımızı düşünüyoruz”dan “işte kanıt”a çevirir.
Email, SMS ve CRM Sistemleriyle Entegre Edin
Onay yönetimi web uygulamanız, her aşağı akış sisteminin (email, SMS, CRM, destek araçları) müşterinin en son tercihlerini güvenilir şekilde ihlal etmemesi durumunda işe yarar. Entegrasyon, sadece “API bağlamak” değil, tercihlerin zaman içinde kaymamasını sağlamaktır.
Aşağı akış araçları için basit bir olay formatı seçin
Tercih değişikliklerini tekrar oynatılabilir olaylar gibi ele alın. Payload tutarlı olsun ki her araç anlayabilsin. Pratik minimum:
- kim (müşteri/ID, gerekliyse email/telefon)
- konu (örn. Ürün Güncellemeleri, Faturalama, Promosyonlar)
- kanal (email, SMS, telefon)
- eylem (opt-in, opt-out, unsubscribe-all)
- hukuki dayanak (örn. consent, legitimate interest)
- zaman damgası (UTC) ve aktör (kullanıcı, admin, sistem)
Bu yapı hem onay kanıtı oluşturur hem de entegrasyonları basitleştirir.
Eşitleme kuralları: mesajlaşma en son tercihe uymalı
Kullanıcı tercihlerini güncellediğinde değişikliği hemen email/SMS sağlayıcılarına ve CRM'e gönderin. Sağlayıcıların tam taksonominizi desteklememesi halinde, dahili konularınızı onların liste/segment modeline eşleyin ve bu eşlemeyi belgeleyin.
Hangi sistemin gerçek kaynak olduğunu kararlaştırın. Genellikle onay API'niz olmalı; ESP'ler ve CRM'ler ise cache rolünde olmalı.
Güveni bozan uç durumları yönetin
Operasyonel detaylar önemlidir:
- Bounce ve engellenmiş kontaklar: e-posta hard-bounce veya suppression listesinde ise, uygulamada bu durumu görünür tutun ki ekipler yanlışlıkla yeniden abone etmesin
- Engellenmiş/geçersiz numaralar: SMS sağlayıcıları numarayı erişilemez işaretleyebilir; izin olsa bile denemeyi sürdürmeyin
- Sağlayıcı düzeyi global unsubscribelar: bunları kampanya düzeyi ayarlardan daha yüksek öncelikli kabul edin
Sürmeyi azaltmak için planlı bir iş çalıştırın
Webhooklar olsa bile sistemler sapabilir (başarısız istekler, manuel düzenlemeler, kesintiler). Günlük bir reconciliaton işi çalıştırarak onay kayıtlarınızı sağlayıcı durumlarıyla karşılaştırın ve uyuşmazlıkları düzeltin; otomatik düzeltmeler için bir denetim girdisi yazın.
Kullanıcı Taleplerini Yönetin: Erişim, Silme ve Düzeltmeler
Onay uygulamanız gerçek müşteri taleplerini güvenli şekilde ele alabilmelidir: “Sizde neler var gösterin”, “Beni silin” ve “Bunu düzeltin.” Bu GDPR erişim/düzeltme/silinme haklarıyla (ve CCPA tarzı haklarla) uyumludur.
Erişim hakkı: onay geçmişini dışa aktarın
Kullanıcının kendisinin erişebileceği ve hesabına erişemiyorsa destek ekibine kolayca sunabileceğiniz bir dışa aktarma sağlayın.
Dışa aktarmaya şunları dahil edin:
- Onay olaylarının zaman çizelgesi (opt-in, opt-out, tercih değişiklikleri)
- Kullanıcının neyi kabul ettiği (amaç + kanal, örn. pazarlama email)
- Ne zaman, nerede ve nasıl: zaman damgası, kaynak (web form, tercih merkezi, destek) ve kanıt sinyalleri (örn. çift onay teyidi)
Formatı taşınabilir tutun (CSV/JSON) ve açık bir ad verin: “Onay geçmişi dışa aktarımı”.
Silme ve anonimize etme—izin verilen kanıtı kaybetmeden
Silme talebi geldiğinde, yasal uyumluluk veya yeniden iletişim engelleme için sınırlı kayıtları tutmanız gerekebilir. İki yol uygulayın:
- Tam silme: hiçbir saklama gereksinimi olmayan veriler için
- Anonimleştirme/pseudonimize etme: saklanmasına izin verilen onay kanıtları için (örn. tanımlayıcıları tek yönlü hash ile değiştirip zaman damgası ve politika sürümünü koruma)
Bunu veri saklama politikalarıyla eşleyin ki kanıt sonsuza dek tutulmasın.
Düzeltmeler ve destek iş akışları (onayla)
Destek talepleri için yönetici araçları oluşturun: kullanıcı arama, mevcut tercihleri görüntüleme ve değişiklik gönderme. Her dışa aktarma, silme veya düzenleme öncesi açık bir kimlik doğrulama adımı (email meydan okuması, mevcut oturum kontrolü veya belgelenmiş manuel doğrulama) gerektirin.
Yüksek riskli eylemler için onay iş akışı (iki kişilik inceleme veya rol tabanlı onay) kullanın. Her eylemi ve onayı denetim izine kaydedin ki “kim neyi, ne zaman ve neden değiştirdi” sorusuna cevap verebilesiniz.
Onay Akışını Uçtan Uca Test Edin
Onay yönetimi uygulamasını test etmek sadece “toggle hareket ediyor mu?” değildir. Her aşağı akış eyleminin (e-postalar, SMS, dışa aktarmalar, kitle senkleri) en son kullanıcı seçimini göz önünde bulundurduğunu kanıtlamaktır, stres ve uç durumlar dahil.
Hiç başarısız olmaması gereken kurallar için test yazın
En yüksek riskli kurallar için otomatik testlerle başlayın—özellikle istenmeyen iletiyi tetikleyebilecek kurallar:
- Opt-out her yerde gönderimleri engellemeli (pazarlama email, SMS, push ve yeniden gönderim/yeniden deneme işleri)
- “İşlemsel” vs “pazarlama” kategorileri politika ile tam uyumlu olmalı
- Çift onay, onaylanana kadar aboneliği etkinleştirmemeli
Yardımcı bir desen: “verilen onay durumu X ise, sistem eylemi Y izin verilir/engellenir” şeklinde karar mantığını test edin.
Eşzamanlılık ve sıralamayı test edin
Onay değişiklikleri garip zamanlarda olur: iki sekme açık, kullanıcı iki kere tıklar, webhook bir destek edit ile aynı anda gelir.
- İki eş zamanlı güncelleme durumunda durum bozulmamalı
- “Son yazma kazanır” (veya seçtiğiniz kural) tutarlı ve denetlenebilir olmalı
- Güncellemeler çarpıştığında zaman damgası, kaynak, bölge veya politika sürümü gibi meta veri kaybolmamalı
Gerçek kullanıcı davranışı için UI testleri ekleyin
Tercih merkezi hataların en kolay göründüğü yerdir:
- Togglelar, onaylar ve hata durumları için UI testleri ekleyin
- Başarılı mesajları doğrulayın ve sayfa yenilendiğinde saklanan durumun yansıdığını kontrol edin
- Erişilebilirlik temel testlerini (klavye, odak, okunabilir etiketler) doğrulayın
Güvenlik ve bölgesel senaryoları test edin
Onay verisi hassastır ve kimlikle sıkı bağlıdır:
- Güvenlik kontrolleri (bağımlılık taraması, temel penetrasyon testi) çalıştırın
- Bölgesel senaryoları test edin (farklı varsayılanlar, ifadeler ve gerekli bildirimler), örn. kullanıcı ülke/bölge değiştirdiğinde ne olduğunu
Uçtan uca testler en az bir “tam yol” betiği içermeli: kayıt → onayla (gerekliyse) → tercih değiştir → gönderimlerin engellenip/izin verildiğini doğrula → onay kanıtını dışa aktar.
Dağıtın, İzleyin ve Güvenilirliği Sürdürün
Bir onay uygulaması “kurup unut” değildir. İnsanlar tercihlerinin her seferinde doğru yansıtılmasına güvenir. Güvenilirlik büyük ölçüde operasyoneldir: nasıl dağıttığınız, arızaları nasıl gözlemlediğiniz ve bir şey ters gittiğinde nasıl kurtarıldığınız.
Ortamları ayırın (ve verileri güvenli tutun)
dev, staging ve production arasında net ayrım kullanın. Staging production benzeri olmalı (aynı entegrasyonlar, aynı yapılandırma), ama gerçek kişisel verileri kopyalamaktan kaçının. Gerçekçi test yükleri gerekiyorsa sentetik kullanıcılar ve anonimleştirilmiş tanımlayıcılar kullanın.
Migrationları yüksek riskli olaylar olarak ele alın
Onay geçmişi yasal bir kayıt olduğundan, veritabanı migrationlarını dikkatle planlayın. Tarihsel satırları yeniden yazan veya çarpan değişikliklerden kaçının. Tercihen ekleyici migrationlar (yeni sütun/tablolar) ve orijinal olay izini koruyan geri doldurmalar kullanın.
Bir migration göndermeden önce doğrulayın:
- eski onay kayıtları hâlâ doğru şekilde doğrulanıyor mu
- zaman damgaları ve kaynaklar (web form, API, import) korunuyor mu
- ileriye dönük betikler tarihsel değerleri yanlış yorumlamıyor mu
Önemli olanları izleyin (özellikle senkron hataları)
Şunlar için izleme ve uyarılar kurun:
- email/SMS/CRM araçlarına senkron hataları (kuyruk birikmeleri, yeniden denemeler)
- onay endpointlerinde hata oranları ve gecikme artışları
- kaydedilen onay olaylarında beklenmedik düşüşler (bozuk bir formu gösterebilir)
Uyarıları eyleme geçirilebilir yapın: entegrasyon adı, hata kodu ve hızlı hata ayıklama için örnek istek ID'si ekleyin.
Kullanıcı tercihlerini koruyan bir rollback planlayın
Varsayılanları ters çeviren, tercih merkezini bozan veya opt-outleri yanlış yöneten sürümler için geri alma stratejiniz olsun. Yaygın desenler: özellik bayrakları, blue/green deploylar ve yazma işlemlerini durduran hızlı “disable writes” anahtarları.
Hızlı iterasyon döngüsünde bu tür özellikler özellikle faydalıdır. Örneğin Koder.ai üzerinde React tercih merkezi ve Go + PostgreSQL onay API prototipi oluşturup, onay yakalama veya denetim günlüklerini etkileyen bir değişiklik olursa güvenli şekilde geri alabilirsiniz.
Bir runbook tutun ve güncelleyin
Hafif dokümantasyon: sürüm adımları, uyarı anlamları, nöbetçi kontakları ve olay listeleri. Kısa bir runbook keskin bir kesintiyi öngörülebilir bir prosedüre çevirir ve hızlı ve tutarlı hareket ettiğinizi kanıtlamanıza yardımcı olur.
Yaygın Tuzaklar ve Kaçınma Yolları
İyi kurulmuş bir onay yönetimi uygulaması bile ayrıntılarda başarısız olabilir. Bu tuzaklar genellikle geç (hukuki inceleme sırasında veya bir müşteri şikayetinden sonra) ortaya çıkar, bu yüzden erken tasarım aşamasında bunlara karşı önlem almak faydalıdır.
1) Sistemler arası gizli bağımlılıklar
Yaygın bir hata, aşağı akış araçların tercihleri sessizce üzerine yazmasına izin vermektir—örn. ESP bir import sonrası kullanıcıyı tekrar “subscribed” yapar veya CRM iş akışı bağlam olmadan onay alanlarını günceller.
Bunu önlemek için uygulamanızı onay ve abonelik tercihleri için gerçek kaynak olarak belirleyin ve entegrasyonları dinleyici olarak ele alın. Durum bozucu periyodik senkronlar yerine olay tabanlı güncellemeleri tercih edin. Kim hangi sistemi ve hangi yetkiyle değiştirebilir açıkça kural koyun.
2) Aşırı veri toplama (özellikle IP/cihaz)
“İleride lazım olabilir” diye her şeyi kaydetmek cazip gelebilir, ama IP, cihaz parmak izi veya hassas konum gibi verileri toplamak uyumluluk yükünüzü ve riski artırır.
GDPR onay kayıtlarını, ispat için gerekenlerle sınırlayın: kullanıcı kimliği, amaç, zaman damgası, politika/sürüm, kanal ve eylem. IP/cihaz verisi saklıyorsanız nedenini belgeleyin, saklama süresini sınırlayın ve erişimi kısıtlayın.
3) Varsayılanlar ve karanlık desenler
Önceden işaretli kutular, kafa karıştırıcı togglelar, birleştirilmiş amaçlar (“pazarlama + ortaklar + profiling”) veya zor bulunan opt-outlar onayı geçersiz kılabilir ve güveni zedeler.
Açık etiketler, tarafsız tasarım ve güvenli varsayılanlar kullanın. Opt-out, opt-in kadar kolay olmalı. Çift onay kullanıyorsanız doğrulama adımının aynı amaç(lar)la ve politika metniyle bağlantılı olduğundan emin olun.
4) Politika metni değişmeden yeniden onay istememek
Politika metni, amaç açıklamaları veya satıcı listesi değişecektir. Sistem sürümleri takip edemiyorsa hangi kullanıcının neyi kabul ettiği bilinemez.
Her onay olayıyla politika/sürüm referansı saklayın. Önemli değişikliklerde yeniden onay tetikleyin ve eski kanıtı bozmadan muhafaza edin.
5) "Yap vs Satın Al" kararını erken vermemek
İnşa etmek kontrol verir ancak sürekli bakım (denetimler, uç durumlar, satıcı değişiklikleri) gerektirir. Satın almak süreyi kısaltabilir ama özelleştirmeyi sınırlayabilir.
Seçenekleri değerlendirirken önce gereksinimleri haritalayın, sonra toplam maliyeti ve operasyonel çabayı karşılaştırın. Hızla ilerleyip kod sahipliğini kaybetmek istemiyorsanız, Koder.ai gibi platformlar React tercih merkezi, backend servisleri (Go) ve PostgreSQL şeması ile hızlıca prototip oluşturmanıza yardım eder ve hazır olduğunuzda kaynak kodunu export etmenizi sağlar.
Eğer daha hızlı bir yol isterseniz, /pricing sayfasına bakın.
SSS
Müşteri onayı ve tercihler web uygulaması oluşturmanın ilk adımı nedir?
İlk olarak hukuki onayı (daha sonra ispat etmeniz gereken izin) tercihlerden (konular/frekans hakkındaki seçimler) ayırın. Ardından ilk gün kapsamını tanımlayın:
- Kanallar (email/SMS/push vb.)
- Amaçlar/konular (ürün güncellemeleri, promosyonlar, analiz, veri paylaşımı)
- Toplama noktaları (kayıt, ödeme, ayarlar, destek)
Son olarak sahiplik atayın (Product/Marketing/Legal) ve ölçülebilir başarı metrikleri seçin (daha az şikayet, daha hızlı onay kanıtı sağlama).
Onay ile tercihler arasındaki fark nedir?
Onay, kimin, neye, ne zaman ve nasıl onay verdiğini kanıtlamanız gereken hukuki anlamlı bir izindir.
Tercihler ise deneyimi şekillendiren (konular, frekans) kullanıcı seçimleridir; güvenilir şekilde saklanmalı ama genellikle hukuki onayla aynı şey değildir.
Tanımları ve arayüzü ayrı tutun ki bir tercih geçerli bir onay gibi yanlış ele alınmasın.
Planlamam gereken asgari uyumluluk yetenekleri nelerdir (GDPR/CCPA temel)?
Çoğu uygulama için asgari uyumluluk yetenekleri şunları içerir:
- Gerekli yerlerde opt-in (pazarlama email/SMS, bazı çerezler)
- Opt-out akışları (ör. “Kişisel bilgilerimin satılmamasını/ paylaşılmamasını iste”)
- Kanala ve konuya göre ayrıntılı seçimler
- Savunulabilir bir denetim/trail (ekleme-tek yönlü geçmiş)
- Tercihi geri çekmenin kolay olması (opt-in kadar kolay)
Bunları ürün gereksinimi olarak planlayın ve yasal yorumlar için hukuki danışmanla teyit edin.
Kanıtlanabilir bir onay kaydı hangi verileri içermelidir?
Onay için kanıtlayıcı kayıt, genellikle şu beş W'yi kapsamalıdır:
- Kim: kullanıcı/müşteri kimliği ve ilgili tanımlayıcılar (email/telefon)
- Ne: amaç(lar) ve kanal(lar)
- Ne zaman: zaman damgası (UTC) ve gerekiyorsa saat dilimi
- Nasıl: kaynak (sayfa/yol, uygulama/platform), yöntem (onay kutusu, çift onay), ayrıca gösterilen politika/sürüm
- Neden: amaç etiketi/hukuki dayanak ve bölgesel işaret (ör. GDPR vs CCPA)
Bu alanlar onayı sonradan savunulabilir kılar.
Onay ve tercih yönetimi için veri modelini nasıl tasarlamalıyım?
Onayı olay (event) olarak modelleyin ve tercihleri mevcut durum olarak tutun. Tipik yapı:
- Müşteri/Kimlik + birden fazla Tanımlayıcı (email, telefon, iç ID)
- Amaç ve Kanal tabloları
- Her amaç/kanal için tercih durumu
- Onay kayıtları: verilmeye/geri çekilmeye dair hukuki olaylar
Ayrıca tekrarlı kayıtlar için birleştirme geçmişi ve açık geri çekme alanları (withdrawn_at, sebep) ekleyin.
Politika/onay sürümlemesi neden önemli ve nasıl uygulanmalı?
Kullanıcının karar verdiği metni tam olarak saklayın:
notice_id+notice_version(veya içerik hash'i)- Lokal (EN/FR) gibi dil bilgisi
- Gösterilen özel onay kutusu etiketi veya beyan snippet'i
Bu sayede metin değiştiğinde eski onaylar ispatlanabilir kalır ve yalnızca önemli değişikliklerde yeniden onay istenebilir.
Kullanıcıların anlayacağı bir tercih merkezini nasıl tasarlarım?
Tercih merkezinin anlaşılır olması için şu desenler işe yarar:
- Giriş noktaları: barındırılan sayfa (ör.
/preferences), uygulama içi ayarlar, gömülü widget - Açık, kısa etiketler (topik başına) ve gerektiğinde tek satırlık açıklamalar
- Gerekli yerlerde ön işaretli kutular kullanmayın
- Konu/kanal bazlı ayrıntılı toggler ve görünür bir “tüm pazarlamadan çık” düğmesi
- Erişilebilirlik (klavye, kontrast, ekran okuyucu etiketleri) baştan sağlanmalı
Tüm kararlar geri alınabilir olmalı ve her yerde tutarlı dil kullanılmalı.
Bir onay/tercih API'si hangi backend endpointlerini sunmalı?
Pratik bir temel API seti:
GET /api/preferencesmevcut durumu okumak içinPUT /api/preferencesdurumu açıkça değiştirmek için (kısmi güncellemeden ziyade yer değiştirme)POST /api/consents/{type}/withdrawgeri çekme işlemleri için (kaza ile olmaması adına ayrı endpoint)
Güncellemeleri idempotent yapın (Idempotency-Key veya request_id) ve kabul ettiğiniz alanları/ durum geçişlerini doğrulayın.
Email/SMS/CRM araçlarını en son tercih durumuyla nasıl uyumlu tutarım?
Tercih değişikliklerini olay olarak kabul edin ve aşağıdaki payload minimumunu sağlayın:
- Kim (kullanıcı/ID, gerekliyse email/telefon)
- Konu/amaç ve kanal
- Eylem (opt-in, opt-out, unsubscribe-all)
- Hukuki dayanak işareti
- Zaman damgası (UTC) ve aktör (kullanıcı/admin/sistem)
Onay API'nizi gerçek kaynak (source of truth) olarak belirleyin, değişiklikleri anında ESP/SMS/CRM'e gönderin ve uyumsuzlukları düzeltmek için günlük bir reconciliaton işi çalıştırın (otomatik düzeltmeler için denetim kaydı yazın).
Onay uygulamaları için en önemli güvenlik ve denetim uygulamaları nelerdir?
Katmanlı bir güvenlik yaklaşımı kullanın:
- Güçlü kimlik doğrulama (oturum, magic link veya SSO), hız sınırlama ve kritik değişikliklerde bildirimler
- Her endpoint için yetkilendirme (email ile düzenleme gibi kısayollar olmasın)
- CSRF koruması, sıkı CORS kuralları
- Aktarımda/durumda şifreleme ve veri minimizasyonu (IP/cihaz gibi verileri yalnızca gerekliyse saklayın)
- Ayrılmış, eklenebilir (append-only) denetim logları; erişim kısıtlı ve indirmeler kayıtlı olmalı
Güvenlik hataları, birinin tercihleri izinsiz değiştirmesine yol açabilir; bu nedenle güvenlik onaya dahildir.