Çoğu kişi kuponun basit bir şey olduğunu sanır: bir kod üretirsin, bir yüzde yazarsın, müşteri sepete girer ve fiyat düşer. Oysa e-pin satışında kupon, tek başına duran bir indirim satırı değil; fiyatlandırma, bayi kademesi, stok, komisyon ve ödeme geçidi arasında sıkışmış bir karar zinciri. Zincirin herhangi bir halkası "hayır" derse, müşteri ekranında tek bir cümle görür: kupon geçersiz. Sen ise panelde kuponun aktif olduğunu görüp "ama sistemde var" dersin.
İşin asıl can sıkıcı tarafı şu: kuponun uygulanmadığı vakaların çok küçük bir kısmı gerçek hatadır. Geri kalanı, kullandığın e-pin scriptinin kural sırasıyla senin kafandaki kural sırasının uyuşmamasıdır. Bu yazıda kampanya kurgusunu bozmadan, o sırayı tersine mühendislikle çözüyoruz. Sonunda "kupon çalışmıyor" cümlesini bir şikâyet değil, bir teşhis aracı olarak kullanabileceksin.
Kupon gerçekten "aktif" mi, yoksa sadece kayıtlı mı?
Panelde bir kuponun listede görünmesi, o kuponun sepette değerlendirilebileceği anlamına gelmez. Ciddi bir e-pin satış scriptinde kupon en az altı bağımsız koşuldan geçer: başlangıç tarihi, bitiş tarihi, toplam kullanım kotası, kullanıcı başına kullanım, minimum sepet tutarı ve kapsam (ürün/kategori/marka). Bunların hepsi ayrı ayrı doğru olabilir; ama kesişimleri boş kümeyse kupon hiçbir zaman çalışmaz. Örneğin minimum sepet tutarını 250 TL yapıp kuponu yalnızca 100 TL'lik bir e-pin paketine bağlarsan, matematiksel olarak kullanılamaz bir kampanya kurmuş olursun.
Bunu test etmenin en hızlı yolu, koşulları tek tek gevşetmektir. Kapsamı kaldır, minimumu sıfırla, tarihleri geniş tut ve dene. Çalışıyorsa suçlu bulundu: geri eklediğin ilk koşulda kupon yeniden ölür. Bu "ikili arama" yöntemi, saatlerce log okumaktan hızlıdır ve teknik bilgi gerektirmez.
Saat dilimi neden en sinsi sebep?
Kupon tarihleri panelde Türkiye saatiyle gösterilir ama veritabanına çoğu zaman UTC yazılır. Sunucu saati, PHP saat dilimi ve veritabanı saat dilimi üç ayrı yerde tanımlıdır ve bunlardan biri farklıysa kuponun 00:00'da başlaması aslında 03:00'te başlamak demektir. Gece kampanyaları, "bugün son gün" duyuruları ve flash indirimler tam olarak bu üç saatlik boşlukta ölür.
Pratik çözüm: kampanyayı asla tam gün sınırına yaslamamak. Başlangıcı bir gün öncesinden, bitişi bir gün sonrasından ver; görünen sayacı ise pazarlama metniyle yönet. Böylece müşteri "son gün" baskısını hissederken, sistem sınırda kalmaz. Dijital ürün satış yazılımında zaman sınırı bir pazarlama unsuru, bir teknik dayanak değil.
| Belirti | Gerçek Sebep | Nerede Kontrol Edilir | Çözüm Süresi |
|---|---|---|---|
| Kod hiç kabul edilmiyor | Kapsam ile sepet ürünü kesişmiyor | Kupon kapsam/kategori alanı | 2 dakika |
| Bazı müşterilerde çalışıyor | Kullanıcı başına kullanım dolmuş | Kupon kullanım geçmişi | 5 dakika |
| Gece çalışmıyor, gündüz çalışıyor | Saat dilimi farkı | Sunucu ve uygulama zaman ayarı | 10 dakika |
| Bayi hesabında çalışmıyor | Özel fiyat listesi kuponu ezmiş | Bayi grubu fiyat kuralı | 15 dakika |
| İndirim görünüyor, ödemede kayboluyor | Geçide giden tutar sepetten yeniden hesaplanmış | Ödeme adımı tutar kaynağı | 30 dakika |
| Toplam eksi çıkıyor | Sabit tutarlı kupon ürün fiyatından büyük | Kupon tipi ve taban limiti | 5 dakika |
Bayi fiyatı ile kupon neden birbirini yiyor?
E-pin işinde çoğu işletme iki katmanlı satış yapar: perakende müşteri ve bayi. Bayiye özel fiyat listesi tanımladığın anda, o hesap için ürünün fiyatı artık liste fiyatı değildir. İyi kurgulanmış bir epin yazılım mimarisinde kupon, indirim zincirinin ikinci halkasıdır ve önceki halkada indirim uygulanmışsa kendini otomatik olarak devre dışı bırakabilir. Bu bir arıza değil, kâr marjını koruyan bilinçli bir kuraldır.
Karar senin: ya bayi hesaplarını kupon kapsamından tamamen çıkarır ve onlara kademeli iskonto ile hitap edersin, ya da "kupon bayi fiyatının üstüne uygulanır" kuralını açıp taban marj koruması tanımlarsın. İkinci yolu seçeceksen mutlaka bir alt sınır belirle; yoksa üst üste binen indirimler seni maliyetin altında satışa sürükler.
Kupon Uygulanmama Nedenlerinin Dağılımı
- Kapsam ve koşul çakışması 40%
- Zaman ve kota ayarları 28%
- Bayi fiyat kuralı çakışması 20%
- Önbellek ve oturum sorunları 12%
Sepet doğru, ödeme yanlış: tutar nereden geliyor?
En pahalı senaryo bu. Müşteri indirimi sepette görür, ödeme sayfasına geçer ve indirimsiz tutarı öder. Sebebi neredeyse her zaman aynıdır: ödeme geçidine gönderilen tutar sepet oturumundan değil, ürün tablosundan yeniden hesaplanmıştır. Yani iki ayrı hesap merkezi vardır ve biri kuponu tanımaz.
Doğru mimaride sipariş oluşturulurken tutar tek bir yerde kilitlenir ve ödeme adımı o kilitlenmiş kaydı okur. Bu yüzden sipariş kaydında hem brüt tutar, hem indirim tutarı, hem de uygulanan kupon kodu ayrı kolonlarda saklanmalıdır. Saklanmıyorsa, ileride ne muhasebe eşleştirmesi yapabilirsin ne de kampanya performansını ölçebilirsin. Dijital ürün satış scripti seçerken sorulacak ilk soru budur: sipariş, indirimi kendi içinde hatırlıyor mu?
Önbellek ve oturum: görünmeyen üçüncü el
Hız için sayfa önbelleği kullanıyorsan, sepet özetinin de önbelleğe girmiş olması çok olasıdır. Müşteri kuponu girer, sunucu doğru hesaplar, ama tarayıcıya eski HTML döner. Kullanıcı "uygulanmadı" der, sayfayı yeniler ve indirim aniden belirir. Aynı şekilde misafir sepetten üye sepete geçişte kupon bağı kopabilir; çünkü kupon oturum kimliğine, sepet ise kullanıcı kimliğine bağlanmıştır.
Kural şudur: fiyat gösteren hiçbir bileşen tam sayfa önbelleğine girmez. Sepet özeti, bakiye ve kupon satırı daima dinamik kalmalı. Üstelik giriş yapıldığında sepet birleştirme adımı kuponu yeniden doğrulamalı; körlemesine taşımamalı. Aksi halde kullanıcı başına kullanım limitini delen bir açık bırakırsın.
Kupon kodunun kendisi hatalıysa ne olur?
Bazen sorun gerçekten koddur. Kopyalanırken sonuna görünmez bir boşluk gelir, Türkçe karakter içeren bir kod farklı klavyede farklı yazılır, büyük-küçük harf duyarlılığı kapatılmamıştır. Bunların hepsi tek bir önlemle biter: kodları yalnızca İngiliz alfabesinin büyük harfleriyle ve rakamlarla üret, girişte baştaki ve sondaki boşlukları temizle, karşılaştırmayı harf duyarsız yap.
Ayrıca müşteriye gösterdiğin hata mesajını zenginleştir. "Geçersiz kod" yerine "bu kupon 500 TL üzeri siparişlerde geçerli" demek, destek yükünü dramatik biçimde düşürür ve satışı kurtarır. İyi bir e-pin satış yazılımı hatayı gizlemez, yönlendirir. Panelde kural motorunu incelerken bu mesaj esnekliğini mutlaka sorgula.
| Kontrol Adımı | Ne Yapılır | Beklenen Sonuç |
|---|---|---|
| 1. Boş kupon testi | Tüm koşulları kaldırıp dene | Kupon çalışıyorsa sebep koşullardadır |
| 2. Zaman doğrulaması | Sunucu saatini ve kupon aralığını karşılaştır | Fark yoksa zaman elenir |
| 3. Kapsam eşleşmesi | Sepetteki ürünün kategorisini kuponla kıyasla | En az bir ürün kapsam içinde olmalı |
| 4. Kota kontrolü | Toplam ve kişi başı kullanım sayısını oku | Limit dolmamış olmalı |
| 5. Bayi kuralı | Aynı sepeti perakende hesapta dene | Perakendede çalışıyorsa fiyat listesi suçlu |
| 6. Ödeme tutarı | Sipariş kaydındaki indirim kolonunu incele | Geçide giden tutar sipariş tutarına eşit olmalı |
| 7. Önbellek | Sepet özetini önbellek dışına al | Yenilemeye gerek kalmadan indirim görünmeli |
Kupon hatası yaşayan müşteri çoğu zaman destek yazmaz, sepeti bırakır. Bu yüzden reddedilen kupon denemelerini kayıt altına al; en çok reddedilen üç kod, kampanya kurgunun en zayıf üç noktasıdır.
Kampanyayı kurgulamadan önce hangi soruları sormalısın?
Kupon teknik bir özellik değil, ticari bir karardır. Her kampanya öncesi üç soruyu yaz: Bu kupon hangi ürün grubunun marjını taşıyabilir? Aynı anda başka hangi indirim çalışıyor ve toplam iskonto tabanı aşıyor mu? Kupon kullanan müşteriyi ikinci siparişe nasıl bağlayacağım? Bu üç soruya cevabın yoksa kupon sana ciro değil, yalnızca marj kaybı getirir.
Kurgu netleştiğinde uygulaması kolaydır: kademeli minimum tutarlar, ürün grubu bazlı yüzde tavanı ve tek kullanımlık kişiye özel kodlar. Bu üçlü, hem suistimali kapatır hem de maliyet tarafını öngörülebilir tutar.
Kupon motorunu kural kural yönetmek istiyorsan
Pinova, kampanya koşullarını, bayi fiyat kademelerini ve sipariş tutarı kilidini tek panelden yönetmen için tasarlandı. Kupon bir daha sessizce kaybolmasın.
Kupon panelde aktif görünüyor ama sepette çalışmıyor, ilk neye bakmalıyım?
Kapsam alanına. Kuponun bağlı olduğu kategori veya ürün ile sepetteki kalem eşleşmiyorsa sistem kuponu hiç değerlendirmez. Ardından minimum sepet tutarını kontrol et.
Bayi hesaplarında kupon neden geçersiz oluyor?
Bayiye özel fiyat listesi zaten bir indirim katmanıdır. Çoğu yapılandırmada ikinci indirim otomatik engellenir. İsterseniz kuralı açabilir, ancak mutlaka taban marj limiti tanımlamalısınız.
İndirim sepette görünüp ödemede kayboluyorsa sebebi ne?
Ödeme geçidine gönderilen tutarın sipariş kaydından değil, ürün fiyatından yeniden hesaplanması. Tutar tek bir yerde kilitlenmeli ve ödeme adımı o kaydı okumalı.
Kupon kodunu nasıl üretmeliyim ki hata olasılığı azalsın?
Yalnızca İngiliz alfabesi büyük harfleri ve rakam kullan, birbirine benzeyen karakterlerden kaçın, girişte boşlukları temizle ve karşılaştırmayı harf duyarsız yap.
Kupon, doğru kurulduğunda satışın hızlandırıcısı; yanlış kurulduğunda sessiz bir gelir sızıntısıdır. Yukarıdaki yedi adımlı kontrol listesini bir kez uygularsan, "kod geçersiz" cümlesini bir daha korkuyla karşılamazsın. Kural motorunun sepet, bayi fiyatı ve ödeme tutarını nasıl tek zincirde tuttuğunu kendi gözünle görmek istersen canlı demo üzerinden bir kampanya kurup baştan sona test et; teoriyi okumak yerine denemek her zaman daha öğreticidir.

