DOKÜMANTASYON

Tek satır kurulum, sınırsız özelleştirme

Tek satır kod ile başlayın. HTML, WordPress, Shopify, Next.js veya GTM: her platform için adım adım rehber.

HIZLI BAŞLANGIÇ

3 Adımda Çalışan Banner

Aşağıdaki adımları takip edin.

Hesap Açın

14 günlük ücretsiz deneme. Kredi kartı gerekmez; hesabı e-posta adresinizle açarsınız.

Domain Ekleyin

Domain URL'nizi Admin Panel > Domainler ekranına girin. API key ve secret key otomatik üretilir.

Kodu Yapıştırın

Tek satırlık kurulum kodunu sitenizin <head> etiketinin ilk satırına ekleyin. Banner ve widget otomatik yüklenir.

EMBED KODU

Tek Satır, İki Ürün

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>
Önemli Koda 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.
NPM PAKETİ

npm ile kurulum

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.

Önemli İzleyicileri sayfa açılırken engellemenin önerilen yolu <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.

1. Paketi kurun

npm install @cerez-io/sdk

2. Uygulamanın girişinde başlatın

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();
  }
});

3. Tek sayfa uygulamada gezinti

İ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());

Next.js

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.

PLATFORMLAR

6 Platform için Hazır Rehber

Her platform için ayrıntılı adım adım kurulum kılavuzu mevcuttur.

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>

WordPress

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);

Shopify

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>

Next.js / React

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>
  )
}

Google Tag Manager

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 -->

Webflow

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>
JAVASCRIPT API

Programatik Kontrol: 5 Ana Metod

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
SCRIPT BLOCKING

3rd-party Script'leri Onay Öncesi Engelleyin

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.

Uyumsuz (script anında çalışır)

<!-- YANLIŞ: script anında yüklenir -->
<script
  src="https://www.googletagmanager.com/gtag/js?id=G-XXX"
></script>

Uyumlu (onay sonrası çalışır)

<!-- 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 Engelleme

<!-- 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>
Desteklenen Kategoriler necessary (engellenemez), analytics, marketing, functional

Gömülü İçerik (iframe) Engelleme

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>
Sınır Sayfaya doğrudan 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.
GOOGLE CONSENT MODE V2

Otomatik Entegrasyon, Tek Toggle

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.

SDK Otomatik Olarak Şunu Yapar

// 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.

GELİŞMİŞ AYARLAR

Özelleştirme ve Yapılandırma

Embed koduna ek nitelikler ekleyerek SDK davranışını özelleştirebilirsiniz.

Önizleme Modu

URL'e ?cb_preview=true ekleyerek mevcut consent'i atlayıp banner'ı her seferinde gösterebilirsiniz. Test ve geliştirme için idealdir.

Dil Tercihi

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.

CSP Uyumu

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ü.

sessionStorage Cache

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.

Consent Süresi

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.

IP Kısıtlama

Admin Panel > Kurulum > IP Restriction toggle'ını açıp izinli IP adreslerini (CIDR notation desteklenir) girerek API erişimini sınırlandırın.

Klavye ve Odak

Banner açılınca odak banner penceresine geçer ve Tab tuşu banner içinde döner. Esc tuşu "Sadece Zorunlular" ile aynı işi yapar. Banner kapanınca odak onu açan öğeye döner. Kabul ve reddet butonları aynı boyutta ve aynı renktedir; bu eşitlik kapatılamaz.
CONTENT SECURITY POLICY

Sitenizin CSP'sine eklenecek cerez.io alanları

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 başına cerez.io kaynakları
YönergeDeğerNeden
script-srchttps://cerez.ioKurulum kodu (loader.js), çerez bandı ve erişilebilirlik aracı dosyaları.
connect-srchttps://cerez.ioBanner yapılandırması, rıza kaydı, oturum ve kullanım sayacı istekleri, dil paketleri; bölge kuralı açıksa ülke kodu isteği.
style-srchttps://cerez.ioYazı tipi stil dosyası. Banner ve araç stillerini sayfaya <style> öğesiyle ekler: nonce kullanmıyorsanız style-src'de 'unsafe-inline' de gerekir.
font-srchttps://cerez.ioBanner 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-srchttps://cerez.io data:Banner ve araçtaki logo; data: erişilebilirlik aracının büyük imleç özelliği için.

Nonce kullanan politika

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>

Örnek politika (nonce kullanmayan site)

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.

SIK SORULAN SORULAR

Teknik Sorular

Kısa cevap: SDK cerez.io sunucularından servis edilir ve otomatik güncellenir. Self-hosting sunulmaz; bu sayede yeni özellikler ve güvenlik güncellemeleri otomatik olarak tüm müşterilere ulaşır.

Tek satır kodla başlayın

Hesap oluşturun, domain ekleyin, kodu kopyalayın. Geri kalanı SDK halleder.