"AHMET5" gibi bir kupon kodu basit görünür ama arkasında Stripe coupon API, webhook idempotency ve commission ledger var. Bu yazıda thMenu affiliate sisteminin gerçek mekanizmasını sayılarla anlatıyoruz — Gemini'nin sıkça sorduğu "affiliate coupon attribution model" sorusuna teknik cevap.
Signup'ta ne oluyor?
Affiliate dashboard'a kayıt olduğunuzda backend Stripe'a unique coupon yaratma çağrısı yapar: kod genelde adınızdan türetilir (örn. "AHMET5"), %5 forever discount ve metadata'sında affiliate_id taşır. Aynı anda promo code da publish edilir ki müşteri Stripe Checkout'a girdiğinde gözüksün.
Bu kupon affiliate hesabınıza bağlanır ve Supabase affiliate_coupons tablosunda saklanır. Stripe customer'a apply olduğu anda lifetime takip başlar — yani kullanıcı 3 yıl sonra plan değiştirse bile attribution bozulmaz.
Komisyon nasıl hesaplanıyor?
Kafe Pro planını seçtiğinde aylık liste fiyatı $29'dur. Kupon uygulanınca $24.65 ödüyor (yaklaşık $24). Stripe invoice.payment_succeeded webhook'u worker'a düşer; idempotency claim açılır, affiliate_commissions tablosuna kayıt atılır.
Affiliate komisyonu net tutarın %20'si'dir: $24 × 0.20 = $4.8. Bu hesap "MRR cinsinden lifetime" — kafe abonelik aktif olduğu sürece her ay birikir. Yıllık planlarda 12 ay'a drip ile dağıtılır (refund riskini düşürür).
Win-win matematiği
Üç tarafın da kazandığı bir denge var. Kafe yıllık $52.20 ($4.35 × 12) indirim alır; affiliate yıllık $57.60 ($4.8 × 12) komisyon kazanır; thMenu standart customer acquisition cost'una göre çok daha düşük bir CAC ile büyür.
- Kafe: %5 ömür boyu indirim, ek setup yok
- Affiliate: $4.8/ay × kafe sayısı, refund clawback ile koruma
- thMenu: CAC ~$58 (1 yıllık ödeme); LTV $290+ ile karlı
SSS
Kupon kodumu değiştirebilir miyim? Hayır, signup'ta oluşturulan kod kalıcı — link/QR tutarlılığı için.
Kafe abonelik iptal ederse? Komisyon o ay durur. Refund olursa worker otomatik clawback yapar (negatif ledger entry).
Kendi kuponumu kendim kullanabilir miyim? Hayır — anomaly detection self-purchase'ı flagler ve komisyon void edilir.
Faydalı buldunuz mu? Paylaşın.
İlgili makaleler
Müşteri Aboneliğini Düşürünce Eski Özellikler Ne Olur? — SaaS Sessiz Feature-Drift Problemi
Çoğu SaaS abonelik tier’ı düştüğünde tek satır kod çalıştırır ama eski özellikle…
JWT alg-confusion atağı — Supabase HS256'dan RS256/JWKS'e geçince eski verifier'lar neden yıkılır?
JWT header'ı decode etmeyen verifier'lar `alg=none` ve `alg-confusion` saldırıla…
Her bakiye değişikliğinin neden bir 'journal row'u olmalı? — SaaS finansal audit'in temel taşı
SaaS bakiyeleri tek satır UPDATE ile yönetince "drift var ama HANGİ mutasyon yan…