Bu makalede7 bölüm
- Teknoloji
- KVKK (6698), WordPress, Contact Form 7, Flamingo, Elementor Pro Forms, WP-Cron, SMTP
- Konu
- İletişim ve teklif formlarında kişisel verinin yaşam döngüsü
- Seviye
- Orta
- Ön koşullar
- Sitedeki formların ve form eklentilerinin listesi
- Hukuk biriminin onayladığı aydınlatma metni ve saklama süreleri
- WordPress yönetici veya sunucu erişimi
Teklif formundan gelen bir kayıt, çoğu sitede en az beş farklı yere kopyalanır: eklenti tablosu, satış posta kutusu, CRM, SMTP servisinin günlüğü ve gecelik yedek. Silme talebi geldiğinde bu kopyaların yarısı kimsenin aklında değildir. Kurumsal sitelerdeki iletişim formu, kişisel verinin şirkete girdiği en görünür kapıdır ve KVKK tarafı bir metin bağlantısıyla bitmez. Hangi alanın neden istendiği, verinin nereye kopyalandığı, ne kadar saklandığı ve nasıl silindiği teknik tasarımın parçasıdır. Bu rehber web ekipleri, IT yöneticileri ve veri koruma sorumluları için formun veri yaşam döngüsünü uygulama düzeyinde anlatır. Hukuki tavsiye değildir; işleme şartları ve metin içerikleri hukuk danışmanınızla belirlenmeli.
Formda hangi veri toplanmalı
6698 sayılı Kanun’un 4. maddesindeki genel ilkeler, verinin amaçla bağlantılı, sınırlı ve ölçülü işlenmesini ister. Form tasarımında bu tek bir soruya iner: Bu bilgi olmadan talebe yanıt verebilir miyiz?
Tipik bir B2B teklif formunu bu soruyla taradığınızda genellikle şu tablo çıkar:
| Alan | Gerekli mi? | Not |
|---|---|---|
| Ad soyad | Evet | Yanıt için gerekli |
| Kurumsal e-posta | Evet | Tek iletişim kanalı yeterli olabilir |
| Telefon | Çoğu zaman isteğe bağlı | Zorunlu yapmak yerine tercih sorulabilir |
| Şirket ve unvan | Teklif için evet | Genel iletişimde gerekmez |
| T.C. kimlik no, doğum tarihi | Hayır | Teklif aşamasında gerekçesi yok |
| Serbest metin mesaj | Evet | Hassas veri girilmemesi için uyarı yazın |
Serbest metin alanı ayrı bir risk taşır. Ziyaretçi mesaja sağlık bilgisi, kimlik bilgisi veya üçüncü kişilerin verisini yazabilir; bu, özel nitelikli kişisel verinin istemeden toplanması demektir. Alanın altına “Lütfen sağlık, kimlik veya ödeme bilgisi paylaşmayın” gibi kısa bir uyarı koyun. Dosya yükleme alanını yalnız gerçekten gerektiğinde açın. Gerekiyorsa tür, boyut ve depolama kontrollerini güvenli dosya yükleme rehberindeki ilkelere göre kurun.
Gizli alanlar da envantere girer. Birçok form eklentisi IP adresi, tarayıcı bilgisi, yönlendiren sayfa ve UTM parametrelerini kayda kendiliğinden ekler. Bunlar da kişisel veri olabilir. İhtiyaç yoksa eklenti ayarından kapatın, varsa aydınlatma metninde belirtin.
Aydınlatma ile açık rızayı ayırmak
Sahada en sık gördüğümüz hata, ikisini tek kutuda birleştirmektir: “KVKK aydınlatma metnini okudum ve kişisel verilerimin işlenmesine onay veriyorum.” Bu cümle iki ayrı hukuki kavramı aynı tıklamaya bağlar.
- Aydınlatma (Kanun md. 10): Veri sorumlusunun kimliğini, işleme amacını, aktarılan tarafları, toplama yöntemini ve hukuki sebebi, ilgili kişinin haklarını bildirme yükümlülüğüdür. Ziyaretçinin onayına bağlı değildir; formun yakınında, gönder düğmesinden önce görünür bir bağlantıyla sunulur.
- Açık rıza (Kanun md. 3 ve 5): Belirli bir konuya ilişkin, bilgilendirmeye dayanan ve özgür iradeyle açıklanan rızadır. Yalnız başka bir işleme şartı bulunmayan amaçlar için aranır.
Kişisel Verileri Koruma Kurumu’nun aydınlatma yükümlülüğüne ilişkin tebliği ve rehberleri bu iki işlemin ayrı yürütülmesini vurgular; güncel metinler kvkk.gov.tr üzerinde. Teknik kurgu buna göre şöyle olmalı:
- Formun altında, gönder düğmesinin üstünde “Kişisel verileriniz Aydınlatma Metni kapsamında işlenir” cümlesi ve metne bağlantı bulunur. Onay kutusu yoktur.
- Bülten, kampanya e-postası veya pazarlama araması gibi talebin ötesindeki amaçlar için ayrı, işaretlenmemiş bir onay kutusu konur. Kutunun boş kalması formun gönderilmesini engellemez.
- Rıza kutusu işaretlendiğinde kayda rıza metni (veya sürüm numarası), tarih-saat ve form adresi yazılır. Rızanın ispatı veri sorumlusundadır.
Ticari elektronik ileti gönderilecekse KVKK’nın yanında 6563 sayılı Kanun ve İleti Yönetim Sistemi (İYS) yükümlülükleri de devreye girer. Pazarlama rızası kutusunun CRM’deki ileti izni alanına doğru eşlendiğini mutlaka test edin. Eşleme kopuksa rıza kâğıt üzerinde kalır.
Form kayıtları nerelerde saklanıyor
Saklama ve silme politikası, ancak bütün kopyalar biliniyorsa uygulanabilir. Tipik bir WordPress sitesinde envanter şuna benzer:
| Konum | Örnek | Silme yöntemi |
|---|---|---|
| Eklenti kayıt tablosu | Gravity Forms, WPForms Pro, Elementor Pro Submissions, Flamingo | Zamanlanmış görev veya eklenti ayarı |
| Bildirim e-postası | Satış posta kutusu, paylaşılan kutu | Posta saklama ilkesi |
| CRM / helpdesk | Aday kaydı, talep kaydı | CRM saklama kuralı |
| E-posta gönderim servisi | SMTP servisi ileti günlükleri | Servis panelindeki log süresi |
| Veritabanı ve dosya yedekleri | Günlük site yedeği | Yedek rotasyonu |
| Uygulama ve hata logları | Hata ayıklama günlüğü, WAF logları | Log rotasyonu |
Eklentiler farklı davranır. Contact Form 7 varsayılan olarak gönderimi saklamaz, yalnız e-posta atar; Flamingo eklendiğinde kayıtlar veritabanına yazılmaya başlar. WPForms’un ücretsiz sürümü kayıt saklamaz, ücretli sürümü saklar. Elementor Pro formları “Submissions” özelliğiyle kayıtları kendi tablolarında tutar. Siteyi incelerken her form için ayrı ayrı sorun: Bu formun verisi nerede?
Talep CRM’e veya bir talep yönetim sistemine aktarılıyorsa WordPress’teki kopya genellikle gereksizdir. Aktarım başarıyla tamamlandıktan sonra yerel kaydı silmek ya da hiç tutmamak hem saldırı yüzeyini hem silme yükünü azaltır. Kayıtların yönetici panelinde görünmesi gerekiyorsa erişimi yalnız ilgili rollere verin. Her editörün form kayıtlarını okuması gerekmez.
Saklama süresi ve otomatik silme
Kanun’un 7. maddesi, işlenmeyi gerektiren sebepler ortadan kalktığında verinin silinmesini, yok edilmesini veya anonim hale getirilmesini ister. Kişisel Verilerin Silinmesi, Yok Edilmesi veya Anonim Hale Getirilmesi Hakkında Yönetmelik, periyodik imha aralığının altı ayı geçemeyeceğini düzenler; metni mevzuat.gov.tr üzerinden doğrulayın. Sürenin ne olacağı hukuki karardır. Uygulamada belirleyici olan, sürenin elle değil otomatik işletilmesidir. Elle yapılan temizlik birkaç ay sonra unutulur.
Örneğin Flamingo’da saklanan iletişim formu kayıtlarını 180 günden eski olduğunda silen küçük bir must-use eklentisi şöyle yazılabilir (süre örnektir, politikanıza göre değiştirin):
<?php
// wp-content/mu-plugins/form-kayit-temizleme.php
add_action( 'init', function () {
if ( ! wp_next_scheduled( 'ere_form_kayit_temizle' ) ) {
wp_schedule_event( time(), 'daily', 'ere_form_kayit_temizle' );
}
} );
add_action( 'ere_form_kayit_temizle', function () {
$ids = get_posts( array(
'post_type' => 'flamingo_inbound',
'post_status' => 'any',
'fields' => 'ids',
'posts_per_page' => 200,
'date_query' => array( array( 'before' => '180 days ago' ) ),
) );
foreach ( $ids as $id ) {
wp_delete_post( $id, true ); // çöp kutusuna değil, kalıcı silme
}
} );
Bu kodu devreye almadan önce dört noktayı kontrol edin:
- Tetikleme: WP-Cron ziyaretle çalışır. Düşük trafikli sitelerde
DISABLE_WP_CRONtanımlayıp sistem cron’una geçin; aksi halde görev günlerce çalışmayabilir. - Kalıcı silme: Kod çöp kutusunu atlar. Önce staging ortamında, silinecek kayıt sayısını loglayan bir kuru çalıştırmayla deneyin.
- Yedekler: Silinen kayıt yedekte yaşamaya devam eder. Yedek saklama süresi form saklama süresinden uzunsa bunu imha politikasına yazın; yedekten geri dönüşte eski kayıtların yeniden silinmesini prosedüre ekleyin.
- Adres defteri: Flamingo göndericileri ayrıca
flamingo_contacttüründe tutar. Aynı saklama kuralını bu kayıtlara da uygulayın.
İstatistik ihtiyacı varsa anonimleştirme silmeye alternatiftir: talep türü, sektör ve tarih kalır; ad, e-posta, telefon ve mesaj metni silinir. Yalnız e-posta adresini karma (hash) değerine çevirmek anonimleştirme sayılmaz. Aynı adres yeniden karma alınarak eşleştirilebilir.
Bildirim e-postalarında veri
Form eklentilerinin varsayılan bildirim şablonu genellikle tüm alanları e-posta gövdesine döker. O e-posta satış ekibinin paylaşılan kutusuna, oradan telefonlara, posta arşivine ve yedeklere yayılır. Saklama politikanız ne kadar iyi olursa olsun, posta kutularındaki kopyalar pratikte silinmez.
Daha kontrollü kurgu şöyle:
- Bildirimde yalnız talep türü, şirket adı ve kayda giden bağlantı olur; kişisel veri kaydın kendisinde, erişim kontrollü sistemde kalır.
- Gönderim kimlik doğrulamalı SMTP veya API tabanlı bir servisle yapılır. PHP
mail()ile sunucudan doğrudan gönderim hem teslim hem kayıt açısından zayıftır. - Gönderim servisi yurt dışında barındırılıyorsa bu, Kanun’un 9. maddesi kapsamında yurt dışına aktarım olarak değerlendirilir; aydınlatma metninde ve VERBİS kayıtlarında karşılığı olmalı. Servisin ileti içeriğini ne kadar sakladığını panel ayarlarından kontrol edin.
- Otomatik yanıt ziyaretçinin mesajını aynen geri göndermemeli. Yanlış yazılmış bir adres, verinin üçüncü bir kişiye gitmesi demektir.
Formun kendisi de korunmalı. Spam botları formu, üçüncü kişilerin adreslerine otomatik yanıt göndertmek için kullanabilir; form spam önleme yazısındaki sunucu tarafı kontroller bu kötüye kullanımı sınırlar. Doğrulama kurallarının istemci ve sunucuda aynı şemadan üretilmesi için form doğrulama rehberine bakın. Formun HTTPS dışında gönderilemediğini, yönetici paneline MFA ile girildiğini ve form kayıtlarına erişimin loglandığını teknik tedbirler listesine ekleyin; genel çerçeve için KVKK teknik tedbirleri yazısı tamamlayıcıdır.
KVKK form kontrol listesi
Yeni bir formu yayına almadan önce veya mevcut formları gözden geçirirken listeyi form bazında doldurun:
- Her alanın amacı yazılı; zorunlu alanlar yanıt için gerçekten gerekenlerle sınırlı.
- Gizli alanlar (IP, kullanıcı aracısı, UTM) envantere alınmış; gereksizler kapatılmış.
- Aydınlatma metni bağlantısı gönder düğmesinden önce görünüyor; onay kutusuna bağlanmamış.
- Pazarlama rızası ayrı, işaretsiz ve isteğe bağlı; rıza kaydı metin sürümü ve zaman damgasıyla tutuluyor.
- Verinin kopyalandığı tüm konumlar (eklenti tablosu, e-posta, CRM, gönderim servisi, yedek, log) listelenmiş.
- Her konum için saklama süresi ve otomatik silme yöntemi tanımlı ve test edilmiş.
- Bildirim e-postası kişisel veriyi asgari düzeyde içeriyor.
- Form kayıtlarına erişim rol bazlı; yönetici hesapları MFA ile korunuyor.
- İlgili kişinin silme talebi geldiğinde kaydın tüm konumlarda nasıl bulunacağı yazılı.
Son madde neredeyse her denetimde eksik çıkar. Başvuru geldiğinde e-posta adresiyle eklenti tablosunda, CRM’de ve posta kutularında arama yapılabilmeli, sonuç kayda geçmeli. Arama yapılamıyorsa silme de yapılamaz. Form envanterinin çıkarılması ve saklama otomasyonunun kurulması için KVKK odaklı web formları hizmetimize, formdan gelen taleplerin onay ve takip akışına bağlanması için form, talep ve onay sistemleri sayfamıza bakabilirsiniz. Çerez ve izleme etiketleri ayrı bir konu; onaya bağlanmalarını çerez onayı ve etiket yönetimi yazısında anlattık.
Sık sorulan sorular
İletişim formunda açık rıza onay kutusu her zaman gerekli mi?
Hayır. Yalnız ziyaretçinin talebine yanıt vermek için işlenen veride çoğu durumda açık rıza dışındaki bir işleme şartı değerlendirilir. Açık rıza, pazarlama iletisi göndermek gibi talebin ötesine geçen ve başka bir şarta dayanmayan amaçlar için gerekir. Hangi şartın uygulanacağına hukuk danışmanınızla karar verin.
Aydınlatma metnini onay kutusuyla kabul ettirmek doğru mu?
Aydınlatma, veri sorumlusunun bilgi verme yükümlülüğüdür; ziyaretçinin onayına bağlanması gerekmez. “Okudum, kabul ediyorum” kutusu aydınlatmayı rızaya çevirmez, iki kavramı birbirine karıştırır. Aydınlatma metnine formun yakınında açık bir bağlantı verin, rızayı ayrı ve işaretsiz bir kutuyla alın.
Form kayıtlarını WordPress veritabanında tutmak zorunlu mu?
Değil. Talep CRM’e veya helpdesk sistemine aktarılıyorsa WordPress’teki ikinci kopya çoğu zaman gereksiz bir veri deposudur. Kopya tutulacaksa kısa bir saklama süresi belirleyin ve otomatik silme kurun.
Bildirim e-postalarındaki kişisel veriyi nasıl azaltabilirim?
Bildirime tüm form alanlarını koymayın; talep türünü ve kayda giden bağlantıyı yazın. Kaydı yetkili kullanıcılar erişim kontrollü sistemde görsün. Böylece kişisel veri paylaşılan posta kutularına, mobil cihazlara ve posta yedeklerine kopyalanmaz.
- Teknoloji
- KVKK (6698), WordPress, Contact Form 7, Flamingo, Elementor Pro Forms, WP-Cron, SMTP
- Konu
- İletişim ve teklif formlarında kişisel verinin yaşam döngüsü
- Seviye
- Orta
- Ön koşullar
- Sitedeki formların ve form eklentilerinin listesi
- Hukuk biriminin onayladığı aydınlatma metni ve saklama süreleri
- WordPress yönetici veya sunucu erişimi
Kurumsal Web ve E-Ticaret