HTML / Statik Site
<head> etiketinin ilk satırına ekleyin. Kurulum 30 saniye.
<head> <script src="https://cerez.io/sdk/loader.js" data-cerez-key="YOUR_KEY"></script> <!-- mevcut etiketler --> </head>
Tek satır kod ile başlayın. HTML, WordPress, Shopify, Next.js veya GTM: her platform için adım adım rehber.
Aşağıdaki adımları takip edin.
14 günlük ücretsiz deneme. Kredi kartı gerekmez; hesabı e-posta adresinizle açarsınız.
Domain URL'nizi Admin Panel > Domainler ekranına girin. API key ve secret key otomatik üretilir.
Tek satırlık kurulum kodunu sitenizin <head> etiketinin ilk satırına ekleyin. Banner ve widget otomatik yüklenir.
Aşağıdaki kodu sitenizin <head> etiketinin hemen altına, diğer tüm betiklerden önce ekleyin. data-cerez-key değerini Admin Panel > Kurulum sayfasından alın.
<!-- cerez.io Cookie Consent + Accessibility --> <script src="https://cerez.io/sdk/loader.js" data-cerez-key="YOUR_API_KEY"></script>
async ya da defer eklemeyin. Küçük yükleyici diğer betiklerden önce çalışmak zorundadır: Google Consent Mode varsayılanını ilk sırada yazar ve JavaScript ile eklenen bilinen izleyicileri onaya kadar bekletir. Banner ve widget kodunu kendisi async yükler. Konfigürasyon 5 dakika sunucu tarafında önbelleklenir; SDK değişikliklerinizi bir sonraki yüklemede yansıtır.
React, Next.js ya da Vue ile uygulama geliştiren ve kurulumu kendi kodunda yönetmek isteyen geliştiriciler için @cerez-io/sdk paketi. Paket kurulum etiketiyle aynı kodu çalıştırır: Consent Mode varsayılanını yazar, JavaScript ile eklenen bilinen izleyicileri onaya kadar bekletir, banner'ı paneldeki ayarlarınızla yükler.
<head> içindeki kurulum etiketidir; npm paketi bunun yerine geçmez. Paket uygulamanızın kodu yüklendikten sonra çalışır, HTML'de duran ya da ondan önce çalışan izleyicileri durduramaz. Bu etiketleri type="text/plain" ve data-cb-category ile işaretleyin. Paketi kurulum etiketiyle birlikte kullanmayın: sayfada yalnız biri olmalıdır.
npm install @cerez-io/sdk
init çağrısını başka hiçbir izleyici kodundan (Google Analytics, Meta Pixel, GTM) önce yapın. YOUR_SITE_KEY yerine panelde Kurulum sayfasındaki site anahtarınızı yazın.
import { init, on, hasConsent } from '@cerez-io/sdk';
init({ key: 'YOUR_SITE_KEY' });
on('consent', () => {
if (hasConsent('analytics')) {
startAnalytics();
}
});
İstemci tarafı gezintiden sonra page() çağırın; ilk yükleme otomatik sayılır. Örnek Vue Router içindir.
import { page } from '@cerez-io/sdk';
router.afterEach(() => page());
init tarayıcıda çalışmalıdır; sunucuda çağrılırsa hiçbir şey yapmaz. Bileşeni kök layout'a bir kez ekleyin.
'use client';
import { useEffect } from 'react';
import { init } from '@cerez-io/sdk';
export default function CerezIo() {
useEffect(() => {
init({ key: 'YOUR_SITE_KEY' });
}, []);
return null;
}
Diğer işlevler: getConsent(), hasConsent(kategori), showBanner(), on('consent', fn). Seçenekler (host, lang, autoBlock, nonce, userId) paketin npm sayfasında anlatılır.
Her platform için ayrıntılı adım adım kurulum kılavuzu mevcuttur.
<head> etiketinin ilk satırına ekleyin. Kurulum 30 saniye.
<head> <script src="https://cerez.io/sdk/loader.js" data-cerez-key="YOUR_KEY"></script> <!-- mevcut etiketler --> </head>
WP Plugin ZIP'i indirin, eklentiyi yükleyin, API key'i girin.
# Seçenek A: Plugin ile (önerilen) Admin Panel > Eklentiler > Yeni Ekle ZIP yükle > Etkinleştir > API Key gir # Seçenek B: Manuel (functions.php) add_action('wp_head', function() { echo '<script src="https://cerez.io/sdk/loader.js" data-cerez-key="YOUR_KEY"></script>'; }, PHP_INT_MIN);
theme.liquid içine ekleyin veya Custom Code Injector kullanın.
<!-- theme.liquid içinde, <head> etiketinin hemen altına --> <script src="https://cerez.io/sdk/loader.js" data-cerez-key="YOUR_KEY"></script>
Kök layout içinde <head> etiketinin ilk elemanı olarak düz <script> kullanın; next/script stratejileri betiği geç yükler.
// app/layout.tsx export default function RootLayout({ children }) { return ( <html> <head> <script src="https://cerez.io/sdk/loader.js" data-cerez-key="YOUR_KEY" /> </head> <body>{children}</body> </html> ) }
Custom HTML tag oluşturun, Consent Initialization - All Pages tetikleyicisiyle yayınlayın. GTM üzerinden kurulan kod GTM yüklendikten sonra çalışır; GTM konteynerini ve sayfaya yazılı etiketleri onaydan önce durduramaz. Mümkünse kodu doğrudan head etiketine ekleyin.
<!-- GTM > Tags > New > Custom HTML --> <script src="https://cerez.io/sdk/loader.js" data-cerez-key="YOUR_KEY"></script> <!-- Trigger: Consent Initialization - All Pages -->
Site Settings > Custom Code > Head Code alanının en başına yapıştırın.
<!-- Site Settings > Custom Code > Head Code --> <script src="https://cerez.io/sdk/loader.js" data-cerez-key="YOUR_KEY"></script>
Banner'ı kendi arayüzünüzden açabilir, consent kontrolü yapabilir, event dinleyebilirsiniz. Tüm metodlar window.cerez.io namespace altındadır.
CerezBanner.show()
Banner'ı manuel olarak gösterir. "Çerez Tercihlerimi Yönet" butonu gibi özel tetikleyicilerden çağrılabilir.
// Footer'daki "Çerez Tercihlerim" linkine event listener document.querySelector('#cookie-prefs').addEventListener('click', () => { CerezBanner.show(); });
CerezBanner.getConsent()
Kullanıcının mevcut consent durumunu döner. Henüz karar verilmediyse null döner.
const consent = CerezBanner.getConsent(); // Örnek dönüş: // { necessary: true, analytics: true, marketing: false, functional: true, timestamp: 1717000000 } if (consent?.analytics) { // Google Analytics'i yükle }
CerezBanner.on(event, callback)
Consent değişimlerini dinleyin. Desteklenen eventler: consent.given, consent.updated, consent.rejected, banner.shown.
CerezBanner.on('consent.given', (data) => { console.log('Onay verildi:', data.categories); if (data.categories.marketing) { // Facebook Pixel başlat fbq('init', 'YOUR_PIXEL_ID'); } });
CerezBanner.reset()
Mevcut consent'i temizler ve banner'ı tekrar gösterir. "Tercihlerimi Sıfırla" gibi işlevler için uygundur.
CerezBanner.reset(); // cb_consent cookie silinir, banner yeniden açılır
CerezBanner.hide()
Banner'ı programatik olarak gizler. Consent kaydedilmez; yalnızca görünürlük değişir.
CerezBanner.hide(); // Banner DOM'dan kaldırılmaz, gizlenir
GA4, Facebook Pixel, Hotjar gibi script'leriniz onay alınana kadar çalışmamalıdır (KVKK/GDPR zorunluluğu). Kurulum kodu, bilinen sağlayıcıların JavaScript ile eklenen etiketlerini (GTM ve Meta Pixel kodları gibi) onaya kadar kendiliğinden bekletir. Sayfaya doğrudan yazılmış <script src> etiketlerini ise tarayıcı hiçbir kod çalışmadan indirmeye başlar; bunları type="text/plain" ve data-cb-category nitelikleriyle işaretleyin.
<!-- YANLIŞ: script anında yüklenir --> <script src="https://www.googletagmanager.com/gtag/js?id=G-XXX" ></script>
<!-- DOĞRU: sadece onay sonrası yüklenir --> <script type="text/plain" src="https://www.googletagmanager.com/gtag/js?id=G-XXX" data-cb-category="analytics" ></script>
<!-- Inline script için: type="text/plain" + data-cb-category --> <script type="text/plain" data-cb-category="marketing"> fbq('init', 'PIXEL_ID'); fbq('track', 'PageView'); </script>
necessary (engellenemez), analytics, marketing, functional
YouTube, Vimeo, Google Maps ve sosyal ağ gömmelerinde src yerine data-cb-src yazın ve kategoriyi data-cb-category ile belirtin. İçerik onay verilene kadar yüklenmez; yerinde aynı boyutta bir yer tutucu ile "İzin ver ve göster" ve "Tercihler" düğmeleri görünür. İzin verilince aynı kategorideki tüm gömmeler yüklenir, onay geri alınınca yer tutucuya dönülür. YouTube için youtube-nocookie.com adresi önerilir.
<iframe data-cb-src="https://www.youtube-nocookie.com/embed/VIDEO_ID" data-cb-category="marketing" width="560" height="315" title="Video"></iframe>
src ile yazılmış işaretsiz bir iframe engellenemez: tarayıcı onu kurulum kodu çalışmadan yükler. Kurulum kodu yalnız JavaScript ile sonradan eklenen bilinen gömmeleri (YouTube, Vimeo, Google Maps, Instagram, X, TikTok, Facebook) en iyi çabayla yakalar.
Admin Panel > Site Ayarları > Google Entegrasyonu sayfasından "Consent Mode v2" toggle'ını açın. SDK otomatik olarak gtag('consent', 'default', {...}) ve güncelleme sinyallerini yönetir.
// Sayfa yüklenir yüklenmez, kullanıcı henüz karar vermedi gtag('consent', 'default', { 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'denied', 'functionality_storage': 'denied', 'personalization_storage': 'denied', 'security_storage': 'granted' }); // Kullanıcı onay verdikten sonra, analytics + marketing kabul edildi gtag('consent', 'update', { 'ad_storage': 'granted', 'analytics_storage': 'granted' });
Ayrıntılı GCM v2 rehberi için Google Consent Mode v2 sayfasına bakın.
Embed koduna ek nitelikler ekleyerek SDK davranışını özelleştirebilirsiniz.
URL'e ?cb_preview=true ekleyerek mevcut consent'i atlayıp banner'ı her seferinde gösterebilirsiniz. Test ve geliştirme için idealdir.
Admin Panel > Site Ayarları > Banner Dili ile sabit bir dil seçebilir ya da ziyaretçinin tarayıcı diline göre otomatik geçiş (auto) ayarlayabilirsiniz. TR / EN / DE desteklenir.
Sitenizde CSP varsa script-src, connect-src, style-src, font-src ve img-src yönergelerinde https://cerez.io alanına izin verin. Nonce kullanıyorsanız SDK etiketin nonce'unu kendi öğelerine aktarır. Ayrıntı: CSP bölümü.
SDK, yüklendikten sonra banner konfigürasyonunu sessionStorage'da saklar. Aynı oturumda tekrar sunucu çağrısı yapılmaz; sayfa yükleme süresi kısalır.
Admin Panel > Site Ayarları > Consent Süresi ile cb_consent cookie'sinin geçerlilik süresini ayarlayın (varsayılan 180 gün). KVKK uyumu için önerilen süre 6 aydır.
Admin Panel > Kurulum > IP Restriction toggle'ını açıp izinli IP adreslerini (CIDR notation desteklenir) girerek API erişimini sınırlandırın.
Sitenizde Content-Security-Policy başlığı varsa kurulum kodunun çalışması için aşağıdaki yönergelerde https://cerez.io alanına izin verin. İzleyicilerinizin kendi alanları (Google, Meta vb.) ayrıca gerekir; cerez.io onları rıza verilene kadar yüklemez.
| Yönerge | Değer | Neden |
|---|---|---|
script-src | https://cerez.io | Kurulum kodu (loader.js), çerez bandı ve erişilebilirlik aracı dosyaları. |
connect-src | https://cerez.io | Banner yapılandırması, rıza kaydı, oturum ve kullanım sayacı istekleri, dil paketleri; bölge kuralı açıksa ülke kodu isteği. |
style-src | https://cerez.io | Yazı tipi stil dosyası. Banner ve araç stillerini sayfaya <style> öğesiyle ekler: nonce kullanmıyorsanız style-src'de 'unsafe-inline' de gerekir. |
font-src | https://cerez.io | Banner ve erişilebilirlik aracının yazı tipleri. İzin verilmezse ikisi de sistem yazı tipleriyle çalışmaya devam eder; tarayıcı konsolunda CSP hatası görünür. |
img-src | https://cerez.io data: | Banner ve araçtaki logo; data: erişilebilirlik aracının büyük imleç özelliği için. |
Politikanız nonce kullanıyorsa (script-src 'nonce-...') aynı nonce'u kurulum kodu etiketine verin. SDK bu nonce'u kendi oluşturduğu script ve style öğelerine aktarır; bu durumda style-src'de 'unsafe-inline' gerekmez.
<script nonce="SAYFANIZIN-NONCE-DEGERI" src="https://cerez.io/sdk/loader.js" data-cerez-key="API_ANAHTARINIZ"></script>
Content-Security-Policy: script-src 'self' https://cerez.io; connect-src 'self' https://cerez.io; style-src 'self' 'unsafe-inline' https://cerez.io; font-src 'self' https://cerez.io; img-src 'self' data: https://cerez.io
Kendi yönergelerinizi koruyun; yalnız cerez.io alanını ekleyin.
<script> etiketiyle kurulum önerilir (bu sayfadaki Next.js bölümüne bakın).
cb_consent (consent kararını saklar, varsayılan 180 gün). Bu cookie functional kategoride olduğu için KVKK/GDPR kapsamında kullanıcı onayı gerektirmez.
<head> içine ilk eleman olarak düz <script> etiketiyle eklemenizi öneririz; next/script stratejileri betiği geç yükler.
script-src, connect-src, style-src, font-src ve img-src yönergelerinde https://cerez.io alanına izin verin. Nonce kullanıyorsanız aynı nonce'u kurulum kodu etiketine verin. Ayrıntı: CSP bölümü.
Hesap oluşturun, domain ekleyin, kodu kopyalayın. Geri kalanı SDK halleder.