Çift opt-in, bir kişinin bülten listesine eklenmesi için iki ayrı eylemde bulunmasını şart koşan kayıt yöntemidir: önce formu doldurur, sonra kutusuna gelen onay mailindeki bağlantıya tıklar. İkinci adım tamamlanmadan kişi listeye girmez. Kulağa fazladan bir engel gibi geliyor ve pek çok pazarlamacı da tam olarak bu yüzden atlıyor — "kayıt sayımız düşer" endişesiyle. Oysa atlamanın bedeli, birkaç ay sonra teslimat sorunları, açıklanamayan itibar düşüşleri ve hukuki risk olarak geri geliyor.
Bu yazıda çift opt-in'in tek opt-in'den farkını, akışı teknik olarak nasıl kuracağınızı (jeton üretimi, süre sınırı, veritabanı şeması), onay mailinin nasıl yazılması gerektiğini, kayıt kanıtını hangi alanlarla saklamanız gerektiğini ve dönüşüm kaybı endişesinin ne kadarının gerçek olduğunu anlatıyorum. Amaç, "iyi bir uygulama" tavsiyesi vermek değil, kurabileceğiniz somut bir sistem tarif etmek.
Tek Opt-in ile Çift Opt-in Arasındaki Fark#
Tek opt-in'de form gönderildiği anda adres listeye yazılır ve gönderim başlar. Çift opt-in'de ise form gönderimi yalnızca "bekleyen kayıt" oluşturur; adres, onay bağlantısına tıklanana kadar hiçbir kampanyaya dahil edilmez.
Fark, sadece bir tıklamadan ibaret değil. Çift opt-in aynı anda dört ayrı sorunu çözer: yazım hatalarını yakalar (yanlış yazılmış adres onay mailini alamaz, dolayısıyla listeye girmez), başkasının adresini yazan kişileri engeller, adresin gerçekten var olduğunu ve teslim alındığını kanıtlar, ve en önemlisi elinizde kimin, ne zaman, hangi IP'den onay verdiğine dair bir kayıt bırakır.
| Kriter | Tek Opt-in | Çift Opt-in |
|---|---|---|
| Liste büyüme hızı | Daha hızlı | Daha yavaş |
| Yazım hatası riski | Yüksek | Neredeyse yok |
| Başkasının adresini yazma | Mümkün | Engellenir |
| Spam tuzağı riski | Yüksek | Çok düşük |
| Şikâyet oranı | Daha yüksek | Belirgin düşük |
| İzin kanıtı | Zayıf | Güçlü ve zaman damgalı |
| Ortalama açılma oranı | Düşük | Yüksek |
Buradaki en kritik satır sonuncudan bir öncekidir. Türkiye'de ticari elektronik ileti göndermek için alıcının önceden onayı gerekir ve bu onayın ispatı gönderene aittir; ayrıntılar için e-posta pazarlamada KVKK ve İYS yazısına bakın. Tek opt-in'de elinizdeki tek kanıt "formda kutu işaretliydi" beyanıdır; çift opt-in'de ise adresin sahibinin fiilen tıkladığını gösteren bir kayıt vardır.
Akışın Teknik Kurulumu#
Sistemin özü, tahmin edilemez ve tek kullanımlık bir jetondur. Akış şudur:
- Form gönderilir; adres, IP, zaman damgası ve form kaynağı
bekleyendurumuyla kaydedilir. - Kriptografik olarak güvenli bir jeton üretilir ve kaydın yanına yazılır.
- Onay maili, içinde jetonu taşıyan bağlantıyla gönderilir.
- Kullanıcı tıklar; jeton bulunur, süresi kontrol edilir, kayıt
onaylıyapılır ve jeton geçersizleştirilir. - Süresi dolmuş bekleyen kayıtlar düzenli olarak temizlenir.
Veritabanı tarafı sade tutulabilir:
CREATE TABLE abone (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
eposta VARCHAR(254) NOT NULL,
durum ENUM('bekleyen','onayli','iptal','donen') NOT NULL DEFAULT 'bekleyen',
jeton CHAR(64) NULL,
jeton_biter DATETIME NULL,
kayit_ip VARBINARY(16) NULL,
kayit_ua VARCHAR(255) NULL,
kayit_kaynak VARCHAR(255) NULL,
kayit_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
onay_ip VARBINARY(16) NULL,
onay_at DATETIME NULL,
UNIQUE KEY uq_eposta (eposta),
KEY idx_jeton (jeton)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Jeton üretimini asla rand() ya da zaman damgası türevleriyle yapmayın; tahmin edilebilir jeton, başkasının adresini onaylamanıza izin verir.
# Komut satırında güvenli jeton üretimi (64 hex karakter)
openssl rand -hex 32
# PHP tarafında karşılığı: bin2hex(random_bytes(32))
Onaylama işlemini koşullu bir güncellemeyle yapın; iki eşzamanlı tıklama tek kaydı iki kez işlemesin:
UPDATE abone
SET durum = 'onayli', onay_at = NOW(), onay_ip = ?, jeton = NULL
WHERE jeton = ? AND durum = 'bekleyen' AND jeton_biter > NOW();
-- Etkilenen satır 1 ise onay başarılı, 0 ise jeton geçersiz veya süresi dolmuş.
Jeton ömrü için 48–72 saat makul bir aralıktır; daha kısası tatildeki kullanıcıyı kaçırır, daha uzunu kutuda unutulmuş bir bağlantıyı sonsuza kadar geçerli tutar. Süresi dolan bekleyen kayıtları da düzenli silin:
DELETE FROM abone
WHERE durum = 'bekleyen' AND jeton_biter < NOW() - INTERVAL 30 DAY;
Form tarafında iki ek önlem işinizi çok kolaylaştırır: IP başına kayıt hızını sınırlamak ve gizli bir tuzak alanı (honeypot) koymak. Botlar gizli alanı doldurur; siz de o gönderimi sessizce yok sayarsınız.
Onay Mailinin İçeriği ve Teslimatı#
Onay maili, göndereceğiniz en kritik tek mesajdır: teslim edilmezse kayıt hiç gerçekleşmez. Bu yüzden onu kampanya mailleri gibi değil, işlemsel mail gibi kurun.
Pratik kurallar şunlar. Sade tutun: tek bir başlık, iki cümle açıklama, tek bir belirgin buton. Görsel yığını ve dev şablon burada işe yaramaz, sadece filtre riski ekler. Konu satırı net olsun: "Abonelik onayınızı tamamlayın" gibi. Ne için onay verdiğini yazın: hangi bültene, hangi sıklıkta. Onay bağlantısının yanında düz metin URL de verin, çünkü bazı istemcilerde butonlar tıklanamaz hale gelir. Gönderim yolu ayrı olsun: mümkünse işlemsel maillerinizi kampanya trafiğinden ayrı bir alt alan adı ya da ayrı bir gönderim havuzu üzerinden yollayın; kampanya itibarınız düştüğünde onay mailleriniz de düşmesin.
Konu: Bülten aboneliğinizi onaylayın
Merhaba,
firmaniz.com bültenine kayıt talebi aldık. Ayda iki kez ürün
güncellemeleri ve teknik yazılar gönderiyoruz.
Onaylamak için: https://firmaniz.com/onay?t=<jeton>
Bu talebi siz yapmadıysanız hiçbir şey yapmanıza gerek yok;
onaylanmayan kayıtlar 72 saat içinde silinir.
Son paragraf önemlidir: birisi başkasının adresini yazdıysa, o kişi hiçbir şey yapmadan sistemden düşer. Şablonun teknik tarafında düz metin alternatifi ve doğru başlıklar için HTML mail şablonu hazırlama yazısındaki iskeleti kullanabilirsiniz.
Kayıt Kanıtını Doğru Saklamak#
İzni ispat etme yükümlülüğü gönderendedir; dolayısıyla kaydın kendisi kadar kaydın metaverisi de önemlidir. Saklamanız gereken alanlar şunlar:
| Alan | Neden gerekli |
|---|---|
| Kayıt zaman damgası | Onayın ne zaman alındığı |
| Kayıt IP adresi | Talebin nereden geldiği |
| Kullanıcı aracısı | Tarayıcı/cihaz kaydı |
| Form kaynağı (URL) | Hangi sayfadan kaydolduğu |
| Onay metninin sürümü | O gün ekranda ne yazdığı |
| Onay zaman damgası ve IP | İkinci adımın kanıtı |
| İptal zaman damgası | Çıkış talebinin kaydı |
"Onay metninin sürümü" alanı en çok atlanan ve sonradan en çok aranan alandır. Onay metnini zamanla değiştirirsiniz; bir yıl sonra "bu kişi neye onay vermişti" sorusunun cevabı ancak o günkü metnin sürüm numarasını saklamışsanız verilebilir. Metni her değiştirdiğinizde sürüm numarasını artırın ve metinleri ayrı bir tabloda tutun.
IP adresini VARBINARY(16) olarak saklamak hem IPv4 hem IPv6 için çalışır ve karşılaştırmayı hızlandırır. Bu kayıtları silmeyin; abonelikten çıkan kişinin kaydını da saklamanız gerekir, çünkü "bu kişi hiç kaydolmadı" iddiasına karşı elinizdeki tek belge odur. Ancak sakladığınız veri kişisel veridir; erişimini sınırlayın ve saklama süreniz için yazılı bir politikanız olsun.
Dönüşüm Kaybı Endişesi Ne Kadar Gerçek#
Çift opt-in'e geçen herkes aynı şeyi görür: kayıt sayısı düşer. Bu düşüş gerçektir ve genellikle listeye giren kişilerin bir bölümünün onay adımını tamamlamamasından kaynaklanır. Ancak burada iki soruyu ayırmak gerekir: kaç kişi listeye girdi ve kaç kişi mailinizi gerçekten okuyor.
Kaybettiğiniz kayıtların büyük kısmı zaten üç gruptan oluşur: yanlış yazılmış adresler, bot kayıtları ve tek seferlik bir indirim kodu için adres bırakıp bir daha bakmayacak kişiler. Bunların hiçbiri size dönüşüm getirmez; getirdikleri tek şey dönüş oranı ve şikâyettir. Onay adımını geçenler ise hem adresi doğru hem de ilgisi kanıtlanmış kişilerdir; dolayısıyla açılma ve tıklama oranlarınız yükselir, teslimatınız iyileşir ve aynı gönderimden daha fazla gerçek kişiye ulaşırsınız.
Onay tamamlama oranını yükseltmek de mümkün. Formu gönderdikten sonra kullanıcıyı "Teşekkürler" sayfasına değil, "Kutunuza bir onay maili gönderdik, lütfen bağlantıya tıklayın" diyen ve gönderdiğiniz adresi ekranda gösteren bir sayfaya götürün. Onay maili 24 saat içinde tıklanmadıysa tek bir hatırlatma gönderin — ikiden fazlasını göndermeyin. Ve onay mailini kampanya trafiğinden ayrı bir yoldan yollayın.
Sık Yapılan Hatalar#
Birincisi, onay kutusunu önceden işaretli getirmektir. Kullanıcının hiçbir eylemi olmadan verilmiş sayılan onay geçerli bir onay değildir; kutu boş gelmeli ve kullanıcı bilinçli olarak işaretlemelidir. İkincisi, hizmet kaydıyla bülten onayını tek kutuda birleştirmektir: "Üyelik sözleşmesini ve ticari ileti onayını kabul ediyorum" biçimindeki tek kutu, iki ayrı iznin birbirine bağlanması demektir ve savunulabilir değildir.
Üçüncüsü, jetonu tahmin edilebilir üretmektir. Kullanıcı kimliği, e-posta adresinin karması ya da artan bir sayı jeton olarak kullanılırsa, bir saldırgan başkalarının kayıtlarını onaylayabilir. Dördüncüsü, onay bağlantısına süre sınırı koymamaktır; yıllar önce gönderilmiş bir bağlantının bugün hâlâ çalışması ne güvenlik ne kanıt açısından savunulabilir.
Beşincisi, bekleyen kayıtlara kampanya göndermektir. Bekleyen kayıt bir abone değildir; onay tamamlanmadan gönderilen her mesaj, izinsiz gönderim sayılır. Altıncısı ise onay mailinin teslimatını hiç ölçmemektir: onay tamamlama oranınız aniden düştüyse sorun kullanıcı ilgisizliği değil, çoğu zaman onay mailinin önemsiz klasörüne düşmesidir.
Sıkça Sorulan Sorular#
Çift opt-in zorunlu mu#
Yasal metinlerde "çift opt-in şarttır" diyen doğrudan bir hüküm yoktur; zorunlu olan, alıcının önceden onayının bulunması ve bu onayın ispatlanabilmesidir. Çift opt-in, bu ispatı üretmenin en sağlam ve en pratik yoludur. Tek opt-in ile de teorik olarak uyumlu kalabilirsiniz ama elinizdeki kanıt çok daha zayıf olur ve teslimat tarafında bedelini ödersiniz.
Çift opt-in liste büyümemi ne kadar yavaşlatır#
Kayıt sayınızda gözle görülür bir düşüş olur; bunun büyüklüğü trafiğinizin kalitesine göre değişir. Ancak kaybedilenlerin büyük kısmı hatalı adresler, bot kayıtları ve tek seferlik teşvik avcılarıdır. Onay veren kitlede açılma, tıklama ve dönüşüm oranları belirgin biçimde yükseldiği için toplam iş sonucu genelde iyileşir; küçülen şey listenin boyutu, büyüyen şey etkisidir.
Onay maili gelmiyor diyen kullanıcılara ne demeliyim#
Önce önemsiz klasörünü kontrol etmelerini isteyin, sonra adresi ekranda gösterip yazım hatası olup olmadığını doğrulatın. Sisteminizde "onay mailini yeniden gönder" düğmesi bulunsun ama bunu hız sınırına bağlayın. Şikâyetler tekilse kullanıcı kaynaklıdır; birden fazla kullanıcıdan aynı anda geliyorsa sorun sizin gönderim tarafınızdadır ve teslimatı incelemeniz gerekir.
Mevcut tek opt-in listemi çift opt-in'e çevirmeli miyim#
Tüm listeye toplu bir "onaylayın yoksa çıkarıyoruz" maili göndermek risklidir; özellikle uzun süredir gönderim yapmadıysanız yüksek dönüş ve şikâyet alırsınız. Daha güvenli yol, listeyi etkileşim durumuna göre bölmek, aktif segmente normal göndermeye devam etmek ve yalnızca kaynağı şüpheli veya uzun süredir sessiz segmente yeniden onay kampanyası uygulamaktır. Yeni kayıtlar için ise hemen çift opt-in'e geçin.
Onay bağlantısının süresi ne kadar olmalı#
48 ila 72 saat pratik bir aralıktır. Bu süre, kullanıcının maili görmesi için yeterli, kutuda unutulmuş bir bağlantının yıllarca geçerli kalmaması için yeterince kısadır. Süresi dolan kayıtlar için ya tek bir hatırlatma gönderin ya da kaydı silin. Süresi dolmuş jetonla gelen kullanıcıya "bağlantı süresi doldu, yeniden kaydolun" diyen anlaşılır bir sayfa gösterin.
Onay verdiğini kanıtlamak için hangi bilgileri saklamalıyım#
En az şunları: kayıt ve onay zaman damgaları, kayıt ve onay IP adresleri, kullanıcı aracısı, kaydın yapıldığı sayfanın adresi ve o gün ekranda gösterilen onay metninin sürümü. Abonelikten çıkış tarihini de saklayın. Bu kayıtlar kişisel veri niteliğindedir; erişimini yetkiyle sınırlayın ve ne kadar süre saklayacağınızı yazılı bir politikayla belirleyin.
Kapanış#
Çift opt-in, listenizi küçülten bir engel değil; listenizi gerçek kılan bir filtredir. Aklınızda kalması gereken dört alışkanlık şu: jetonu kriptografik olarak güvenli üretip tek kullanımlık ve süreli yapın, onay mailini sade tutup kampanya trafiğinden ayrı bir yoldan gönderin, kayıt kanıtını zaman damgası ve IP ile birlikte onay metninin sürümünü de kapsayacak şekilde saklayın, ve bekleyen kayıtlara asla kampanya göndermeyin. Onay tamamlama oranını da bir metrik olarak izlemeye başlayın.
Bu akışı kendi altyapınızda çalıştıracaksanız gönderim tarafının sağlam olması gerekir. Postfix, DKIM ve TLS yapılandırması hazır gelen SMTP sunucu paketlerimiz onay ve kampanya trafiğini ayırmak için iyi bir zemin sunar; tam kontrol isteyenler root erişimli VDS sunucularımızda kendi kurulumlarını yapabilir. Kampanya ve otomasyon tarafını devretmek isterseniz e-posta pazarlama hizmetimize, kurumsal posta kutularınız için e-posta çözümlerimize göz atabilirsiniz.