Bu sayfa teknik bir rehberdir, hukuki görüş değildir. Kesin değerlendirme için bir avukata danışın.
Temel kavramlar
Aydınlatma yükümlülüğü (md. 10): Kişisel veri topladığınız herkese; kim olduğunuzu, veriyi hangi amaçla ve hukuki sebeple işlediğinizi, kimlere aktardığınızı ve haklarını bildirmeniz gerekir. Bu bir bilgilendirmedir, onay değildir. Aydınlatma metni için "okudum, onaylıyorum" kutusu koymak yaygın bir hatadır.
Açık rıza (md. 5/1): Yalnızca Kanun'daki diğer hukuki sebeplerden (sözleşme, yasal yükümlülük, meşru menfaat…) hiçbiri yoksa alınır. Örneğin sipariş teslimatı için adres işlemek sözleşmenin ifasıdır, açık rıza gerekmez. Pazarlama amaçlı profil çıkarma için açık rıza gerekir. Açık rıza:
- Belirli bir konuya ilişkin, bilgilendirmeye dayalı ve özgür iradeyle verilmelidir
- Aydınlatma metninden ayrı sunulmalıdır
- Hizmet şartına bağlanamaz ("onay vermezseniz üye olamazsınız" olmaz)
- Önceden işaretli kutuyla alınamaz
- Her zaman geri alınabilmelidir
Yurt dışı aktarım (md. 9): 1 Haziran 2024'ten itibaren yurt dışı aktarım; yeterlilik kararı, standart sözleşme, bağlayıcı şirket kuralları gibi uygun güvencelerle yapılır. Açık rıza yalnızca arızi (düzenli olmayan) aktarımlarda kullanılabilir. Vercel, AWS, Google Analytics, Meta Pixel, Cloudflare gibi servisler yurt dışı aktarımdır. Standart sözleşme imzalandıktan sonra 5 iş günü içinde Kurum'a bildirilmelidir.
trkit ile adımlar
1. Şirket bilgileri ve veri envanteri
import { defineConfig } from "@trkit-app-pack/legal";
export default defineConfig({
company: {
unvan: "Örnek Gıda Ltd. Şti.",
marka: "Örnek",
mersis: "0123456789000015",
adres: "Atatürk Cad. No:1 Kadıköy/İstanbul",
telefon: "0216 000 00 00",
eposta: "info@ornek.com.tr",
kvkkEposta: "kvkk@ornek.com.tr",
website: "https://ornek.com.tr",
},
kvkk: {
veriKategorileri: ["kimlik", "iletisim", "musteri-islem", "finans", "islem-guvenligi", "pazarlama", "hukuki-islem"],
yurtDisiAktarim: { hizmetler: ["Vercel", "Google Analytics"], dayanak: "standart-sozlesme" },
verbisNo: "", // VERBİS kayıt yükümlülüğünüz varsa
},
pay: { provider: "iyzico" }, // aktarım listesine otomatik eklenir
sms: { provider: "netgsm" },
});Veri kategorileri ve her birinin amaç ve hukuki sebepleri @trkit-app-pack/legal sayfasında listelenmiştir.
2. Sayfalar
npx trkit add kvkk acik-riza kvkk-basvuru cerez-politikasi
npx trkit check3. Formlarda bilgilendirme
Kişisel veri toplanan her formun yanında aydınlatma metnine bağlantı verin; kutu koymayın:
<p className="text-xs text-muted-foreground">
Kişisel verileriniz <Link href="/kvkk">Aydınlatma Metni</Link> kapsamında işlenmektedir.
</p>4. Açık rıza gerekiyorsa ayrı kutu
<label>
<input type="checkbox" name="pazarlamaRiza" /> {/* defaultChecked YOK */}
Alışveriş tercihlerime göre kişiselleştirilmiş kampanyalar sunulması için verilerimin işlenmesine{" "}
<Link href="/acik-riza">Açık Rıza Metni</Link> kapsamında onay veriyorum. (İsteğe bağlı)
</label>5. Onayları kaydedin
Açık rızanın varlığını ispat yükü sizdedir. Kayıtları ekleme-tabanlı (silinmeyen, güncellenmeyen) bir tabloda tutun:
import { createConsentRecord, generate, documentHash } from "@trkit-app-pack/legal";
import config from "@/trkit.config";
const { document } = generate("acik-riza", config);
const record = await createConsentRecord({
subjectId: user.id,
purpose: "kvkk:acik-riza",
granted: true,
document: `acik-riza@${document.templateVersion}`,
documentHash: await documentHash(document), // kullanıcının gördüğü metnin özeti
source: "kayit-formu",
ip, salt: process.env.CONSENT_SALT!, // ham IP saklanmaz
});
await db.insert(consents).values(record);6. Çerezler
Ayrıntılar: Çerez onayı.
Sık yapılan hatalar
- Aydınlatma metnini onay kutusuna bağlamak
- Sözleşme gereği işlenen veri için açık rıza istemek (rıza geri alınınca hizmeti veremezsiniz)
- Yurt dışı servisleri aydınlatma metninde belirtmemek
- Tüm onayları tek bir kutuda toplamak ("KVKK, ticari ileti ve sözleşmeyi onaylıyorum")
- Onay kayıtlarını tutmamak veya üzerine yazmak