İptallerin Analizini ve Tutundurma Testlerini Yapan Bir Web Uygulaması Oluşturun
İptal girişimlerini izleyen, nedenleri analiz eden ve tutundurma deneylerini güvenle yürüten bir web uygulamasını planlamayı, inşa etmeyi ve yayına almayı öğrenin.

Ne İnşa Ediyorsunuz ve Neden Önemli
İptaller, abonelik işinde yüksek sinyal veren anlardan biridir. Bir müşteri açıkça diyor ki: “bunun değeri kalmadı,” genellikle sürtüşme, hayal kırıklığı veya fiyat/değer uyumsuzluğu yaşadıktan hemen sonra. İptali sadece bir durum değişikliği olarak ele alırsanız, kırılan şeyleri öğrenme ve düzeltme şansını kaybedersiniz.
Çözdüğünüz sorun
Çoğu ekip churn’i sadece aylık bir sayı olarak görüyor. Bu hikâyeyi gizliyor:
- Kim iptal ediyor (yeni kullanıcılar mı yoksa uzun süreli müşteriler mi, plan türü, segment)
- Ne zaman iptal ediyorlar (1. gün, deneme sonrasında, fiyat artışından sonra, başarısız ödeme sonrası)
- Neden iptal ediyorlar (çok pahalı, eksik özellikler, hatalar, rakibe geçiş, “kullanamıyorum”)
Bu, uygulamada abonelik iptali analizi demektir: bir iptal tıklamasını güvenilir, dilimlenebilir yapılandırılmış veriye dönüştürmek.
“Tutundurma deneyleri” ne demek
Desenleri görebildiğinizde, tahmin yürüterek değil, churn’i azaltmayı amaçlayan değişiklikleri test edebilirsiniz. Tutundurma deneyleri ürün, fiyatlandırma veya mesajlaşma değişiklikleri olabilir; örnekler:
- iptal akışını iyileştirme (daha net seçenekler, daha iyi düşürme yolları)
- doğru segmente ara verme planı veya indirim sunma
- erken iptallerle ilişkili onboarding eksiklerini düzeltme
Anahtar, etkileri temiz, karşılaştırılabilir veriyle ölçmektir (ör. bir A/B testi).
Bu rehberde ne inşa edeceksiniz
Üç bağlı parçadan oluşan küçük bir sistem kuracaksınız:
- Takip: abonelik yaşam döngüsü ve iptal akışı etrafındaki olaylar, nedenler dahil.
- Bir pano: churn’in nereden geldiğini gösteren funnel’lar, kohortlar ve segmentler.
- Deney döngüsü: hedefli testler yapma ve churn’in gerçekten düşüp düşmediğini görme yeteneği.
Sonunda, “daha fazla iptal oldu”dan “bu belirli segment 2. haftadan sonra X nedeniyle iptal ediyor ve bu değişiklik churn’i Y% azalttı”ya giden bir iş akışınız olacak.
Başarı nasıl görünür
Başarı daha güzel bir grafik değil—hız ve güvendir:
- Daha hızlı içgörüler (aylar değil, günler)
- Belirli değişikliklere bağlı ölçülebilir churn azalışı
- Tekrarlanabilir öğrenme: her iptal size uygulanabilir bir şey öğretir
MVP için Hedefleri, Metrikleri ve Kapsamı Belirleyin
Ekranları, takibi veya panoları inşa etmeden önce, bu MVP’nin hangi kararları alabilmesini istediğiniz konusunda acı verici derecede net olun. Bir iptal analitiği uygulaması, her şeyi ölçmeye çalıştığında değil, birkaç yüksek değerli soruyu hızlıca cevapladığında başarılı olur.
Aksiyona yönlendiren sorularla başlayın
İlk sürümünüzde cevaplamak istediğiniz soruları yazın. İyi MVP soruları spesifik ve bariz sonraki adımlara götürür, örneğin:
- En yaygın iptal nedenleri neler ve plan, bölge veya kayıt kanalına göre nasıl farklılaşıyorlar?
- Müşterilerin iptal etmesi ne kadar sürüyor (time-to-cancel) ve ilk 7/30/90 günde hangi desenler ortaya çıkıyor?
- Hangi planlar (veya faturalama döngüleri) en yüksek iptal oranına sahip ve kullanıcılar iptal etmeden önce düşüş yapıyor mu?
Bir soru ürün değişikliğini, destek oynatmasını veya bir deneyi etkilemiyorsa, sonra için beklemeye alın.
3–5 “kuzey yıldızı” MVP metriği seçin
Haftalık inceleyeceğiniz kısa bir liste seçin. Tanımların tartışmasız olmasına dikkat edin ki ürün, destek ve liderlik aynı sayıları konuşsun.
Tipik başlangıç metrikleri:
- İptal oranı (tanımlı bir dönemde, örn. haftalık/aylık)
- Kurtarma oranı (iptal girişimlerinin kaçının tutulma ile sonuçlandığı)
- Tekrar etkinleşme oranı (iptal edenlerin geri dönme oranı)
- Time-to-cancel (başlangıçtan iptale medyan gün)
- Neden dağılımı (hacim ve gelir etkisine göre en üst nedenler)
Her metrik için kesin formülü, zaman penceresini ve hariç tutmaları (denemeler, iadeler, başarısız ödemeler) belgeleyin.
Sahipleri ve kısıtları adlandırın
Sistemi kimlerin kullanacağını ve sürdüreceğini belirleyin: ürün (kararlar), destek/success (neden kalitesi ve takipler), veri (tanımlar ve doğrulama) ve mühendislik (enstrümantasyon ve güvenilirlik).
Sonra baştan kısıtları kararlaştırın: gizlilik gereksinimleri (PII minimizasyonu, saklama limitleri), gerekli entegrasyonlar (faturalama sağlayıcısı, CRM, destek aracı), zaman çizelgesi ve bütçe.
Özellik büyümesini durdurmak için bir sayfa kapsam yazın
Kısa tutun: hedefler, birincil kullanıcılar, 3–5 metrik, “olmazsa olmaz” entegrasyonlar ve net bir olmayan hedefler listesi (örn. “v1’de tam BI paketi yok”, “v1’de çoklu dokunuş attributions yok”). Yeni talepler geldiğinde bu tek sayfa MVP sözleşmeniz olur.
Abonelikleri ve Yaşam Döngüsü Olaylarını Modelleyin
İptalleri analiz edebilmek için, müşterilerin ürününüzde gerçekten nasıl hareket ettiğini yansıtan bir abonelik modeli gerekir. Veriniz sadece şu anki abonelik durumunu saklıyorsa, “İptale kadar ne kadar aktif kaldılar?” veya “düşüşler churn’i öngördü mü?” gibi temel soruları yanıtlamakta zorlanırsınız.
Ölçeceğiniz yaşam döngüsünü haritalayın
Ekipçe üzerinde anlaşacağınız basit, açık bir yaşam döngüsü haritası ile başlayın:
Trial → Active → Downgrade → Cancel → Win-back
Daha sonra daha fazla durum ekleyebilirsiniz, ama bu temel zincir bile “aktif” sayılacak durumu (ücretli mi? grace dönemi içinde mi?) ve “win-back”in ne anlama geldiğini (30 gün içinde yeniden etkinleştirildi mi? herhangi bir zamanda mı?) netleştirir.
Temel varlıkları tanımlayın
En azından şu varlıkları modelleyin ki olaylar ve para tutarlı şekilde birleştirilebilsin:
- User: uygulamayı kullanan kişi (zaman içinde değişebilir)
- Account: faturalama/müşteri konteynerı (çoğu zaman churn için doğru “birim”)
- Subscription: başlatılabilen, yenilenen, değiştirilen veya sonlandırılan anlaşma
- Plan: ürün seviyesi (isim, fiyat, faturalama aralığı)
- Invoice: ne faturalandı, ne zaman ve ödendi/iadeli mi
- Cancel event: iptal talebi zamanı ve iptalin yürürlüğe girdiği zaman
Kararlı tanımlayıcılar seçin (account_id vs user_id)
Churn analitiği için genellikle account_id en güvenli birincil tanımlayıcıdır çünkü kullanıcılar değişebilir (çalışanlar ayrılır, yöneticiler değişir). Yine de eylemleri user_id ile atfedebilirsiniz, ancak tutma ve iptalleri genellikle hesap düzeyinde toplayın, kişisel abonelikler satmıyorsanız.
Sadece bir durum saklamayın, durum geçmişi saklayın
Geçmiş durumları güvenilir şekilde sorgulayabilmek için bir durum geçmişi (effective_from/effective_to) uygulayın. Bu, kohort analizi ve iptal öncesi davranış analizini mümkün kılar.
Kenar durumlar için baştan plan yapın
Bunları açıkça modelleyin ki churn sayılarınızı kirletmesinler:
- Duraklatmalar (geçici durdurma, iptal değil)
- İadeler/chargebackler (ödeme tersine çevirme vs gönüllü churn)
- Plan değişiklikleri (yükseltme/düşürme olay olarak, “yeni abonelik” değil)
- Grace dönemleri (başarısız ödeme vs gerçek iptal)
İptal Akışını Enstrümente Edin (Olaylar ve Nedenler)
Churn’i anlamak (ve tutundurmaya yardımcı olmak) istiyorsanız, iptal akışı en değerli “gerçek an”ınızdır. Bunu bir form değil de bir ürün yüzeyi gibi enstrümante edin—her adım net, karşılaştırılabilir olay üretmeli.
Temel adımları takip edin (ve atlanamaz yapın)
En azından ileride funnel oluşturabilmek için temiz bir sıralama yakalayın:
cancel_started— kullanıcı iptal deneyimini açtıoffer_shown— herhangi bir kurtarma teklifi, duraklatma seçeneği, düşürme yolu veya “destek ile konuş” CTA’sı gösterildioffer_accepted— kullanıcı bir teklifi kabul etti (duraklatma, indirim, düşürme)cancel_submitted— iptal onaylandı
Bu olay adları web/mobile arasında tutarlı ve zaman içinde stabil olmalıdır. Yükü evriltirseniz, anlamları sessizce değiştirmek yerine bir şema versiyonunu artırın (örn. schema_version: 2).
Neden olduğunu açıklayan bağlamı yakalayın
Her iptal ilişkili olay aynı temel bağlam alanlarını içermeli ki tahmin yapılmadan segmentleyebilin:
- plan, tenure, fiyat
- ülke, cihaz
- edinme kanalı
Bunları sonradan türetmek yerine olayın property’si olarak tutun, böylece diğer sistemler değiştiğinde attribution bozulmaz.
Hem analiz edilebilir hem okunabilir iptal nedenleri toplayın
Grafikler için ön tanımlı bir neden listesi ve nüans için isteğe bağlı serbest metin kullanın.
cancel_reason_code(örn.too_expensive,missing_feature,switched_competitor)cancel_reason_text(isteğe bağlı)
Nedeni cancel_submitted üzerinde saklayın ve kullanıcı ilk seçtiğinde de loglamayı düşünün (kararsızlık veya ileri geri davranışı tespit etmek için yardımcı olur).
İptalde durmayın: sonuçları da takip edin
Tutundurma müdahalelerini ölçmek için sonraki sonuçları loglayın:
reactivateddowngradedsupport_ticket_opened
Bu olaylarla iptal niyetini sonuçlara bağlayabilir ve veriler üzerinde tartışmadan deneyler yürütebilirsiniz.
Veri Boru Hattınızı ve Depolamayı Tasarlayın
İyi churn analitiği, nerede olayların yaşadığı, nasıl temizlendiği ve herkesin “bir iptal”in ne olduğu konusunda nasıl anlaştığı gibi sıkıcı ama doğru kararlarla başlar.
Depolama seçimi: OLTP + (isteğe bağlı) veri ambarı
Çoğu MVP için ham takip olaylarını önce ana uygulama veritabanınızda (OLTP) saklayın. Bu basit, transactional ve hata ayıklama için sorgulanması kolaydır.
Yüksek hacim veya ağır raporlama bekliyorsanız, sonra bir analiz ambarı ekleyin (Postgres read replica, BigQuery, Snowflake, ClickHouse). Yaygın bir desen: OLTP “gerçeklik kaynağı” + ambar hızlı panolar için.
İhtiyacınız olacak temel tablolar
“Ne oldu” etrafında tablolar tasarlayın, “neye ihtiyaç duyacağınızı sanıyorsunuz” değil. Asgari set:
events: izlenen her olay için bir satır (cancel_started,offer_shown,cancel_submittedgibi) ileuser_id,subscription_id, zaman damgaları ve JSON özellikler.cancellation_reasons: neden seçimleri için normalize edilmiş satırlar, isteğe bağlı serbest metinle birlikte.experiment_exposures: kim hangi varyantı, ne zaman ve hangi bağlamda gördü (feature flag / test adı).
Bu ayrım, sebepleri ve deneyleri iptallere çoğaltmadan birleştirmenizi sağlar.
Geç gelen olaylar, çoğaltmalar ve idempotentlik
İptal akışları yeniden denemeler üretir (geri buton, ağ sorunları, yenileme). Aynı olayın iki kez sayılmaması için bir idempotency_key (veya event_id) ekleyin ve benzersizliği zorlayın.
Ayrıca geç gelen olaylar (mobil/offline) için bir politika belirleyin: genelde kabul edin, ama analiz için olayın orijinal zaman damgasını, hata ayıklama için ingest zamanını kullanın.
Raporlama performansı için ETL/ELT
Tam bir ambar olmasa bile, “raporlama tabloları” oluşturan hafif bir iş yazın (günlük agregalar, funnel adımları, kohort anlık görüntüleri). Bu panoları hızlı tutar ve ham olaylarda pahalı join’leri azaltır.
Metriklerin eşleşmesi için tanımları belgeleyin
Kısa bir veri sözlüğü yazın: olay adları, gerekli özellikler ve metrik formülleri (örn. “churn oranı cancel_effective_at kullanır”). Bunu repoda veya dahili dokümanda tutun ki ürün, veri ve mühendislik grafikleri aynı şekilde yorumlasın.
Panoyu Oluşturun: Funnel’lar, Kohortlar ve Segmentler
İyi bir pano her soruyu aynı anda cevaplamaya çalışmaz. Bir sorunu “bir şeyler ters gidiyor”dan “işe hangi dilim ve adım sebep oluyor”a birkaç tıklama içinde taşımalı.
Her hafta kullanacağınız temel görünümler
İnsanların churn’i gerçekten nasıl incelediğini yansıtan üç görünümle başlayın:
- İptal hunisi:
cancel_started→ neden seçildi →offer_shown→offer_acceptedveyacancel_submitted. Bu, insanların nerede ayrıldığını ve kurtarma akışınızın nerede işe yaradığını gösterir. - Neden dağılımı: seçilen iptal nedenlerinin kırılımı, örnekleme için “Diğer (serbest metin)” kovasıyla. Hem sayı hem % gösterin ki ani sıçramalar görünür olsun.
- Başlangıç ayına göre kohortlar: abonelik başlangıç ayına göre tutma veya iptal oranı. Kohortlar mevsimsellik veya edinme karışımı değişiklikleriyle kendinizi kandırmayı zorlaştırır.
İçgörüyü eyleme dönüştüren segmentler
Her grafik churn ve kurtarma kabulünü etkileyen özelliklerle filtrelenebilir olmalı:
- Plan veya seviye
- Tenure (örn. 0–7 gün, 8–30, 31–90, 90+)
- Bölge / ülke
- Edinme kaynağı (organik, ücretli, partner, satış)
- Ödeme yöntemi (kart, fatura, PayPal vb.)
Varsayılan görünümü “Tüm müşteriler” yapın, ama hedef: churn’in sadece hareket edip etmediğini değil, hangi dilimin değiştiğini bulmak.
Zaman kontrolleri ve “save flow” performansı
Hızlı tarih ön ayarları (son 7/30/90 gün) ve özel aralık ekleyin. Farklı görünümler arasında uyuşmaz karşılaştırmaları önlemek için aynı zaman kontrolünü kullanın.
Tutundurma çalışmaları için, kurtarma akışını küçük bir funnel olarak ve iş etkisiyle takip edin:
- Teklif görüntüleri
- Teklif kabul oranı
- Net retained MRR (indirimler, kredi veya düşüşler sonrası tutulan MRR)
Güven bozmadan inceleme (drill-down)
Her agregat grafik, etkilenen hesapların bir listesine inebilmeli (örn. “‘Çok pahalı’ seçip 14 gün içinde iptal eden müşteriler”). Plan, tenure ve son fatura gibi sütunlar dahil edin.
Drill-down’u izinlere (rol tabanlı erişim) bağlayın ve hassas alanları varsayılan olarak maskelenmeyi düşünün. Pano, araştırmayı mümkün kılmalı ama gizlilik ve iç erişim kurallarına saygı göstermeli.
Bir Deney Çerçevesi Ekleyin (A/B Testleri ve Hedefleme)
İptalleri azaltmak istiyorsanız, değişiklikleri tartışmadan test etmenin güvenilir bir yoluna ihtiyacınız var. Bir deney çerçevesi kimlerin ne gördüğüne karar veren, bunu kaydeden ve sonuçları belirli bir varyanta bağlayan “trafik polisi”dir.
1) Deney birimini tanımlayın (çapraz bulaşmayı önleyin)
Atamanın account düzeyinde mi yoksa user düzeyinde mi yapılacağına karar verin.
- Hesap düzeyi genellikle SaaS için en güvenlisidir: aynı çalışma alanındaki herkes aynı varyantı görür, karışık mesajları ve bulaşmayı önler.
- Kullanıcı düzeyi tüketici uygulamaları için çalışabilir, ama paylaşılan cihazlar, çoklu girişler veya ekip hesapları konusunda dikkatli olun.
Bu seçimi her deney için yazılı hâle getirin ki analiz tutarlı olsun.
2) Atama yöntemi seçin
Birkaç hedefleme modu destekleyin:
- Rastgele (klasik A/B): varsayılan için en iyi.
- Ağırlıklı (örn. 90/10): dikkatli yayılım için kullanışlı.
- Kurallara dayalı hedefleme: yalnızca belirli segmentlere göster (plan seviyesi, ülke, tenure, “iptal eşiğinde” durum). Kuralları basit ve versiyonlu tutun.
3) Gerçek maruziyet anında loglayın
“Atandı”yı “maruz kaldı” saymayın. Kullanıcı gerçekten varyantı gördüğünde maruziyeti loglayın (örn. iptal ekranı render edildi, teklif modalı açıldı). Saklayın: experiment_id, variant_id, birim id (account/user), zaman damgası ve ilgili bağlam (plan, seat sayısı).
4) Metrikleri tanımlayın: birincil + koruyucu metrikler
Bir birincil başarı metriği seçin, örn. kurtarma oranı (cancel_started → tutulan sonuç). Zararlı kazanımları önlemek için koruyucu metrikler ekleyin: destek iletişimleri, iade talepleri, şikâyet oranı, time-to-cancel veya düşüş churn’i.
5) Süre ve örnek büyüklüğü varsayımları planlayın
Yayınlamadan önce karar verin:
- Minimum çalışma süresi (abone davranışı için genelde 1–2 faturalama döngüsü)
- Mevcut kurtarma oranına ve umursadığınız en küçük etki büyüklüğüne göre minimum örnek büyüklüğü
Bu, gürültülü veriye erken tepki vermeyi önler ve panonuzun “hala öğreniliyor” ile “istatistiksel olarak faydalı”yı ayırt etmesine yardımcı olur.
Test Edilecek Tutundurma Müdahalelerini Tasarlayın
Tutundurma müdahaleleri, iptal sırasında gösterdiğiniz veya teklif ettiğiniz, birinin fikrini değiştirebilecek şeylerdir—onları kandırmadan. Amaç, hangi seçeneklerin churn’i azalttığını öğrenirken güveni korumaktır.
Denemeye başlayacağınız yaygın müdahale varyantları
Karılaştırıp karıştırabileceğiniz küçük bir desen menüsü ile başlayın:
- Alternatif teklifler: sınırlı süreli indirim, ücretsiz bir ay veya uzatılmış deneme
- Duraklatma seçeneği: kullanıcıların 1–3 ay faturalamayı duraklatmasına izin verin (yeniden etkinleştirme için beklentileri ayarlayın)
- Plan düşürme: tam iptal yerine daha ucuz bir seviyeye veya daha az kullanıcıya geçiş
- Mesaj kopyası: değeri hatırlatan kısa, spesifik metin (“Verilerinizi istediğiniz zaman dışa aktarabilirsiniz”) vs genel kopya (“Sizi kaybettiğimize üzüldük”)
Kullanıcıyı tuzağa düşürmeyen teklifler tasarlayın
Her seçimi mümkün olduğunca net ve geri alınabilir yapın. “İptal” yolu görünür olmalı ve bulması zor olmamalı. İndirim sunuyorsanız, süresinin ne kadar olduğunu ve sonrasında fiyatın ne olacağını açıkça söyleyin. Duraklatma teklif ediyorsanız, erişim ve fatura tarihlerinde ne olacağını gösterin.
İyi bir kural: kullanıcı seçtiğini bir cümlede açıklayabilmeli.
Kademeli açıklama kullanın (progressive disclosure)
Akışı hafif tutun:
-
Bir neden sorun (tek dokunuş)
-
Kişiselleştirilmiş yanıt gösterin (“çok pahalı” için duraklatma, “yeterince kullanmıyor” için düşürme, “hatalar” için destek)
-
Nihai sonucu onaylayın (duraklatma/düşürme/iptal)
Bu, deneyimi ilgili tutarken sürtüşmeyi azaltır.
Sonuç sayfası ve değişiklik günlüğü ekleyin
İç bir deney sonuç sayfası oluşturun: “kaydedilen” sonuçlara dönüşüm, churn oranı, kontrole göre lift, ve bir güven aralığı veya basit karar kuralları (örn. “lift ≥ %3 ve örnek ≥ 500 ise ship et”).
Test edilenleri ve yayınlananları tekrar etmemek için bir değişiklik günlüğü tutun; böylece gelecekteki tutundurma değişimlerini spesifik yayımlarla ilişkilendirebilirsiniz.
Gizlilik, Güvenlik ve Erişim Kontrolü
İptal verileri ele alacağınız en hassas ürün verilerinden biridir: genellikle faturalama bağlamı, tanımlayıcılar ve kişisel detay içerebilen serbest metin barındırır. Gizlilik ve güvenliği sonradan düşünmek yerine ürün gereksinimi olarak ele alın.
Kimlik doğrulama ve roller
Mümkünse SSO ile kimlik doğrulamalı erişimle başlayın. Sonra basit, açık roller ekleyin:
- Admin: ayarları, veri saklama, kullanıcı erişimlerini ve dışa aktarımları yönetir.
- Analist: panoları görüntüler, segment oluşturur, deneyleri çalıştırır.
- Destek: yardım etmek için müşteri düzeyinde geçmişi görür (sınırlı alanlar).
- Salt okunur: satır içi inceleme olmadan agregat panoları görüntüler.
Rol kontrollerini yalnızca UI’da değil, sunucu tarafında uygulayın.
Hassas veri maruziyetini en aza indirin
Müşteri düzeyindeki kayıtları kimlerin görebileceğini sınırlayın. Varsayılan olarak agregaları tercih edin, drill-down güçlü izinlerin arkasında olsun.
- UI’de mümkünse tanımlayıcıları maskelenmiş gösterin (e-posta, müşteri ID).
- Analistler ham PII görmeden segmentleme yapabilsin diye join ve dedupe için tanımlayıcıları hash’leyin (örn. gizli salt ile SHA-256).
- “Faturalama/kimlik” tablolarını event analitiği tablolarından ayrı tutun ve hashed anahtarla bağlayın.
Veri saklama kuralları
Saklamayı baştan tanımlayın:
- Olay verisini kohort analizi için yalnızca gerektiği kadar saklayın (örn. 13–18 ay).
- Serbest metin iptal nedenleri için daha kısa saklama veya redaksiyon uygulayın; kişisel bilgi içerebilir.
- Kullanıcı taleplerini ve iç politikaları karşılamak için silme iş akışları sağlayın.
Denetim logları
Pano erişimini ve dışa aktarımları loglayın:
- Kim müşteri düzeyinde sayfaları görüntüledi
- Kim veri dışa aktardı, ne zaman ve hangi filtrelerle
- Saklama ve izinlerde admin değişiklikleri
Yayın öncesi güvenlik kontrol listesi
Yayınlamadan önce temel riskleri kapatın: OWASP üst riskleri (XSS/CSRF/injection), her yerde TLS, en az yetkiyle veritabanı hesapları, gizli anahtar yönetimi (kodda anahtar yok), auth endpoint’lerinde rate limit ve test edilmiş yedekleme/geri yükleme prosedürleri.
Uygulama Planı (Frontend, Backend ve Test)
Bu bölüm inşa edilecekleri backend, frontend ve kalite olmak üzere üç parçaya ayırır; böylece tutarlı, gerçek kullanım için yeterince hızlı ve evrimleşmesi güvenli bir MVP gönderebilirsiniz.
Backend: abonelikler, olaylar ve deneyler
Önce abonelikler için CRUD (oluştur, durum güncelle, duraklat/devam ettir, iptal) destekleyen küçük bir API ile başlayın ve önemli yaşam döngüsü tarihlerini saklayın. Yazma yollarını basit ve validasyonlu tutun.
Sonra açılan iptal sayfası, neden seçildi ve iptal onaylandı gibi eylemleri izlemek için bir olay ingest endpoint’i ekleyin. Reklam engelleyiciler ve manipülasyonu azaltmak için mümkün olduğunda sunucu tarafı ingest tercih edin. İstemciden olay kabul etmek zorundaysanız, istekleri imzalayın ve rate-limit uygulayın.
Tutundurma deneyleri için atamayı sunucu tarafında uygulayın ki aynı hesap her zaman aynı varyantı alsın. Tipik desen: uygun deneyleri getir → hash (account_id, experiment_id) → varyant atama → atamayı kalıcı kaydet.
Hızlı prototip istiyorsanız, Koder.ai gibi bir vibe-coding platformu kısa bir chat spec’inden temel altyapıyı (React pano, Go backend, PostgreSQL şema) üretebilir—sonra kaynak kodunu dışa aktararak veri modelini, olay kontratlarını ve izinleri uyarlayabilirsiniz.
Frontend: pano, filtreler ve dışa aktarma
Bir avuç pano sayfası oluşturun: funnel’lar (cancel_started → offer_shown → cancel_submitted), kohortlar (kayıt ayına göre) ve segmentler (plan, ülke, edinme kanalı). Sayfalar arasında filtreleri tutarlı tutun.
Kontrollü paylaşım için CSV dışa aktarma sağlayın: varsayılan olarak yalnızca agregat sonuçları dışa aktarın, satır düzeyi dışa aktarmalar için yükseltilmiş izin gerektirin ve dışa aktarmaları denetim için loglayın.
Performans temelleri
Olay listeleri için sayfalandırma kullanın, sık filtrelenen alanlara indeks ekleyin (tarih, subscription_id, plan) ve ağır grafikler için ön-agregasyonlar kullanın (günlük sayımlar, kohort tabloları). “Son 30 gün” özetlerini kısa TTL ile cache’leyin.
Test ve güvenilirlik
Metrik tanımları (örn. “iptal başlatma”nın ne sayıldığı) ve atama tutarlılığı (aynı hesap aynı varyantı alır) için birim testleri yazın.
Ingest hataları için retry’ler ve dead-letter kuyruğu uygulayın ki sessiz veri kaybı olmasın. Hataları loglarda ve bir admin sayfasında görünür kılın, böylece kararlara zarar vermeden önce düzeltebilirsiniz.
Yayınlayın, İzleyin ve Veriyi Güvenilir Tutun
İptal analitiği uygulamanızı göndermek işin yarısıdır. Diğer yarısı, ürününüz ve deneyleriniz haftadan haftaya değişirken doğruluğu korumaktır.
Dağıtım yaklaşımı seçin
Ekip tarzınıza en uygun en basit seçeneği seçin:
- Managed hosting (PaaS): üretime en hızlı yol, yerleşik deploy’lar, log ve ölçekleme ile.
- Container’lar (Docker + orkestratör): tekrarlanabilir build ve bağımlılıklar üzerinde daha sıkı kontrol gerektiğinde.
- Serverless: ani yükler için iyi (olay ingest, zamanlanmış doğrulama işleri), ama cold start ve sağlayıcı limitlerine dikkat edin.
Hangi yolu seçerseniz seçin, analiz uygulamasını üretim sistemi gibi yönetin: versiyonlayın, dağıtımları otomatikleştirin ve konfigürasyonu environment değişkenlerinde tutun.
Eğer ilk günden tüm boru hattını yönetmek istemiyorsanız, Koder.ai dağıtım ve hosting’i de (özel domain dahil) destekleyebilir—iptal gibi hassas bir akışta hızlı yineleme için snapshot ve rollback faydalıdır.
Ortamları (ve veriyi) ayırın
dev, staging ve production ortamları oluşturun ve net izolasyon sağlayın:
- Test olaylarının metrikleri kirletmemesi için ayrı veritabanları ve depolama.
- Üretim şemasını ve routing’i taklit eden bir staging ortamı.
- Non-prod’da “hayalet varyantların” panoda görünmesini önlemek için farklı deney ad alanları (örn. non-prod’da experiment ID’lerine prefix).
Karar almayı koruyan izleme
Sadece uptime’ı değil, gerçeği de izleyin:
- API, arka plan işçileri ve panonun çalışırlık/sağlık durumu.
- İnput gecikmesi (olay zamanı vs işlenme zamanı) ve sapma olunca uyarılar.
- Deney atama hataları: “atanmamış birimler”de ani sıçramalar, varyant dengesizliği veya aynı hesap için atama değişiklikleri.
Otomatik veri doğrulama işleri
Gürültü çıkaran hafif kontroller zamanlayın:
- Beklenen ilişkili olayların eksikliği (örn.
cancel_startedolmadancancel_submitted) - Şema değişiklikleri (yeni/kaldırılmış özellikler, tip değişimleri, beklenmeyen enumlar)
- Hacim anomalileri (sürüm sonrası olaylar neredeyse sıfıra düştü)
Deney UI değişiklikleri için rollback planı
İptal akışını etkileyen her deney için önceden rollback planlayın:
- Varyantları anında devre dışı bırakacak feature flag’ler.
- Son bilinen iyi build’e hızlıca geri döndürme yolu.
- Analistlerin veriyi yanlış okumaması için panoda rollback penceresini işaretleyen bir not.
Sistemi İşletin: İçgörüyü Sürekli Deneylere Çevirin
Bir iptal analitiği uygulaması, alışkanlık haline geldiğinde değer üretir; tek seferlik rapor olmadığında. Amaç “churn fark ettik”i düzenli bir içgörü → hipotez → test → karar döngüsüne çevirmek.
Basit bir haftalık ritüel çalıştırın
Her hafta aynı zamanda (30–45 dakika) hafif bir rituel tutun:
- Panoyu ana metrikler (toplam churn, plana göre churn, tenure’a göre churn ve en üst iptal nedenleri) için gözden geçirin.
- Araştırmaya değer bir anomali seçin (örn. yıllık yenilemelerde churn sıçraması veya aniden #1 olan bir neden).
- Ertesi hafta tam olarak bir hipotez test etmeye karar verin.
Bunu tek bir hipoteze indirmek netlik zorlar: ne olduğunu düşünüyoruz, kim etkileniyor ve hangi eylem sonucu değiştirebilir?
Deneyleri önceliklendirin (etki × çaba)
İptal akışında aynı anda çok fazla test çalıştırmaktan kaçının—çünkü örtüşen değişiklikler sonuçların güvenilirliğini bozar. Basit bir ızgara kullanın:
- Yüksek etki / düşük çaba: önce yapın (kopya değişiklikleri, desteğe yönlendirme, yıllık geçiş teklifi).
- Yüksek etki / yüksek çaba: planlayın (faturalama esnekliği, ürün düzeltmeleri).
- Düşük etki: erteleyin.
Deneyime yeniyseniz, ship etmeden önce temel ilkelerde ve karar kurallarında uzlaşın: /blog/ab-testing-basics.
Nitel girdilerle döngüyü kapatın
Sayısal veriler size ne olduğunu söyler; destek notları ve iptal yorumları sıklıkla nedenini açıklar. Her hafta, segment başına birkaç yeni iptali örnekleyin ve temaları özetleyin. Sonra temaları test edilebilir müdahalelere eşleyin.
“Kazanmış müdahaleler” playbook’u oluşturun
Zaman içinde ne işe yaradı, kimin için ve hangi koşullarda takip edin. Kısa kayıtlar tutun:
- Segment tanımı (plan, tenure, kullanım)
- Hipotez ve yapılan değişiklik
- Sonuç ve güven düzeyi
- Takip aksiyonu (genelleştir, yinele veya geri al)
Teklifleri standardize etmeye hazır olduğunuzda (rastgele indirimleri önlemek için), playbook’u paketleme ve limitlerinize bağlayın: /pricing.
SSS
Bir iptal analitiği uygulaması neleri takip etmelidir?
İptal yolculuğunu takip edin, yalnızca nihai iptal durumunu değil. Birinin iptali ne zaman başlattığını, neden seçtiğini, bir teklif gördüğünü, alternatifi kabul ettiğini veya iptali onayladığını kaydedin.
Müşteri kaybı raporlamasında hesap kimlikleri mi, kullanıcı kimlikleri mi kullanılmalı?
SaaS müşteri kaybında varsayılan birim olarak faturalama hesabını kullanın. Kişiler rol değiştirebilir veya bir çalışma alanından ayrılabilir, ancak abonelik ve ödeme geçmişi genellikle hesaba aittir.
Bir MVP için en önemli iptal metrikleri hangileridir?
İptal oranı, kazanım oranı, yeniden etkinleştirme oranı, medyan iptal süresi ve iptal nedenleriyle başlayın. Her formülü tanımlayın ve denemelerin, iadelerin ve başarısız ödemelerin bunları nasıl etkilediğine karar verin.
İptal nedenlerini nasıl toplamalıyız?
Çok pahalı, eksik özellik, hatalar, kullanmıyor veya rakibe geçti gibi kısa ve sabit bir liste sunun. Müşterilerin ayrıntıları kendi sözcükleriyle açıklayabilmesi için isteğe bağlı bir metin alanı ekleyin.
İptal hunisi neyi gösterir?
Yararlı bir huni, cancel_started ile başlar ve neden seçimi, offer_shown, offer_accepted ve cancel_submitted adımlarını izler. Müşterilerin ürün, teklif veya akıştaki sürtünme nedeniyle mi ayrıldığını gösterir.
Elde tutma deneylerinde varyantlar hesap bazında mı, kullanıcı bazında mı atanmalı?
Aynı hesaptaki herkese aynı varyantı gösterin. Bu, karışık teklifleri önler ve deney sonuçlarını yorumlamayı kolaylaştırır.
Bir A/B testi deney maruziyetini ne zaman kaydetmelidir?
Maruziyeti yalnızca müşteri varyantı gerçekten gördükten sonra, örneğin teklif ekranı yüklendiğinde kaydedin. Tek başına atama kaydı, müşterinin bu deneyimi aldığını kanıtlamaz.
Bir kazanım teklifi müşterileri hayal kırıklığına uğratmadan nasıl sunulabilir?
İptal seçeneğini görünür tutun ve her alternatifi açıkça açıklayın. İndirim sunuyorsanız süresini ve sonraki fiyatı belirtin. Duraklatma sunuyorsanız o dönemde faturalamayı ve erişimi açıklayın.
Önce hangi gösterge paneli görünümlerini oluşturmalıyız?
İptal nedenleri, bir iptal hunisi ve abonelik başlangıç ayına göre kohortlarla başlayın. Kullanıcıların her görünümü plan, kullanım süresi, bölge, edinim kaynağı ve ödeme yöntemine göre filtrelemesine izin verin.
Hassas iptal verilerini nasıl koruruz?
Müşteri düzeyindeki ayrıntılı incelemeleri sınırlayın, mümkün olduğunda kimlikleri maskeleyin ve sunucuda rolleri zorunlu kılın. Müşteriler kişisel ayrıntılar ekleyebileceği için serbest metin nedenlerini daha kısa süre saklayın.