DSGVO-konformer Cookie Consent Banner
Technisches SEO 3 Min. Lesezeit

Cookie Consent DSGVO-konform umsetzen: Vollständiger Leitfaden

DSGVO-konformer Cookie-Banner für Unternehmen in Duisburg und NRW: Cookie-Kategorien, Opt-In, Consent Mode v2 und TCF v2.3 — mit Hinweis zur Aufsichtsbehörde LDI NRW.

Arnold Wender

Arnold Wender

SEO-Experte & Gründer

Aktualisiert: 31. Mai 2026
Inhaltsverzeichnis

Ein DSGVO-konformer Cookie-Banner ist Pflicht für fast jede Website. Doch viele Implementierungen sind fehlerhaft und riskieren Bußgelder — die DSGVO erlaubt bis zu 4 % des weltweiten Jahresumsatzes. Die CNIL verhängte etwa 2024 gegen SHEIN rund 40 Mio. EUR. Dieser Guide zeigt, wie Sie es richtig machen.

Für Unternehmen in Duisburg und Nordrhein-Westfalen ist die zuständige Aufsichtsbehörde die LDI NRW (Landesbeauftragte für Datenschutz und Informationsfreiheit Nordrhein-Westfalen) mit Sitz in Düsseldorf. Ob Hafenlogistiker, Industrie-Shop oder Mittelständler im Ruhrgebiet — die Anforderungen gelten gleichermaßen, sobald Ihre Website nicht-essentielle Cookies setzt.

Die DSGVO und das TTDSG stellen klare Anforderungen:

  1. Informierte Einwilligung: Nutzer müssen verstehen, wozu sie zustimmen
  2. Freiwilligkeit: Echte Wahlmöglichkeit, kein Zwang
  3. Opt-In für nicht-essentielle Cookies: Vorher fragen, nicht nachher
  4. Widerrufbarkeit: Einwilligung muss jederzeit widerrufbar sein
  5. Dokumentation: Einwilligungen müssen nachweisbar sein

1. Essentielle Cookies (Notwendig)

Kein Consent erforderlich

  • Session-Cookies für den Login
  • Warenkorb-Cookies im E-Commerce
  • Cookie-Consent-Speicherung selbst
  • Load-Balancer-Cookies

2. Analyse/Statistik Cookies

Consent erforderlich

  • Google Analytics
  • Matomo (wenn nicht anonymisiert)
  • Hotjar, Clarity
  • Eigene Tracking-Lösungen

3. Marketing/Werbung Cookies

Consent erforderlich

  • Google Ads Remarketing
  • Facebook Pixel
  • LinkedIn Insight Tag
  • Affiliate-Tracking

4. Präferenzen/Funktionen

Consent empfohlen

  • Spracheinstellungen
  • Theme-Präferenzen
  • Chat-Widget-Daten

HTML-Struktur

<div id="cookie-consent" role="dialog" aria-modal="true" aria-labelledby="cookie-title">
  <div class="cookie-content">
    <h2 id="cookie-title">Cookie-Einstellungen</h2>
    <p>
      Wir verwenden Cookies, um Ihnen die beste Erfahrung zu bieten.
      <a href="/datenschutz/">Mehr erfahren</a>
    </p>

    <div class="cookie-options">
      <label>
        <input type="checkbox" id="essential" checked disabled>
        Notwendig (immer aktiv)
      </label>
      <label>
        <input type="checkbox" id="analytics">
        Analyse & Statistik
      </label>
      <label>
        <input type="checkbox" id="marketing">
        Marketing
      </label>
    </div>

    <div class="cookie-buttons">
      <button id="accept-all">Alle akzeptieren</button>
      <button id="accept-selected">Auswahl bestätigen</button>
      <button id="reject-all">Nur notwendige</button>
    </div>
  </div>
</div>

JavaScript-Logik

const CONSENT_KEY = 'cookie-consent';

function getConsent() {
  try {
    return JSON.parse(localStorage.getItem(CONSENT_KEY)) || null;
  } catch {
    return null;
  }
}

function setConsent(consent) {
  localStorage.setItem(CONSENT_KEY, JSON.stringify({
    ...consent,
    timestamp: new Date().toISOString()
  }));

  // Custom Event für andere Scripts
  window.dispatchEvent(new CustomEvent('cookieConsentChanged', {
    detail: consent
  }));
}

function acceptAll() {
  setConsent({ essential: true, analytics: true, marketing: true });
  hideBanner();
  loadConsentedScripts();
}

function acceptSelected() {
  setConsent({
    essential: true,
    analytics: document.getElementById('analytics').checked,
    marketing: document.getElementById('marketing').checked
  });
  hideBanner();
  loadConsentedScripts();
}

function rejectAll() {
  setConsent({ essential: true, analytics: false, marketing: false });
  hideBanner();
}
<!-- FALSCH - lädt sofort -->
<script src="https://www.googletagmanager.com/gtag/js"></script>

<!-- RICHTIG - lädt erst nach Consent -->
<script type="text/plain" data-category="analytics"
        data-src="https://www.googletagmanager.com/gtag/js"></script>
function loadConsentedScripts() {
  const consent = getConsent();

  document.querySelectorAll('script[type="text/plain"]').forEach(script => {
    const category = script.dataset.category;

    if (consent[category]) {
      const newScript = document.createElement('script');
      newScript.src = script.dataset.src;
      document.head.appendChild(newScript);
    }
  });
}

Seit März 2024 erfordert Google Consent Mode v2 für EWR-Traffic:

// Standardmäßig verweigert (vor dem Banner)
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}

gtag('consent', 'default', {
  'ad_storage': 'denied',
  'ad_user_data': 'denied',
  'ad_personalization': 'denied',
  'analytics_storage': 'denied',
  'wait_for_update': 500
});

// Nach Consent-Erteilung aktualisieren
function updateGoogleConsent(consent) {
  gtag('consent', 'update', {
    'ad_storage': consent.marketing ? 'granted' : 'denied',
    'ad_user_data': consent.marketing ? 'granted' : 'denied',
    'ad_personalization': consent.marketing ? 'granted' : 'denied',
    'analytics_storage': consent.analytics ? 'granted' : 'denied'
  });
}

Einwilligung widerrufen

Nutzer müssen ihre Einwilligung jederzeit widerrufen können:

<!-- Link im Footer -->
<button onclick="window.openCookieSettings()">
  Cookie-Einstellungen
</button>
window.openCookieSettings = function() {
  // Aktuellen Consent laden und anzeigen
  const consent = getConsent();
  document.getElementById('analytics').checked = consent?.analytics || false;
  document.getElementById('marketing').checked = consent?.marketing || false;

  // Banner wieder anzeigen
  document.getElementById('cookie-consent').classList.add('visible');
};

Mobile-Optimierung

Probleme vermeiden

/* Cookie-Banner darf nicht die ganze Seite verdecken */
#cookie-consent {
  max-height: 80vh;
  overflow-y: auto;
}

/* Touch-freundliche Buttons */
.cookie-buttons button {
  min-height: 48px;
  padding: 12px 24px;
}

/* Checkboxen groß genug */
.cookie-options input[type="checkbox"] {
  width: 24px;
  height: 24px;
}

Accessibility (Barrierefreiheit)

WCAG-Anforderungen

<div
  id="cookie-consent"
  role="dialog"
  aria-modal="true"
  aria-labelledby="cookie-title"
  aria-describedby="cookie-description"
>
  <h2 id="cookie-title">Cookie-Einstellungen</h2>
  <p id="cookie-description">
    Wählen Sie, welche Cookies Sie akzeptieren möchten.
  </p>

  <!-- Focus-Management -->
  <button autofocus id="accept-all">Alle akzeptieren</button>
</div>

Focus-Trap

function trapFocus(element) {
  const focusable = element.querySelectorAll(
    'button, [href], input, select, textarea'
  );
  const first = focusable[0];
  const last = focusable[focusable.length - 1];

  element.addEventListener('keydown', (e) => {
    if (e.key === 'Tab') {
      if (e.shiftKey && document.activeElement === first) {
        e.preventDefault();
        last.focus();
      } else if (!e.shiftKey && document.activeElement === last) {
        e.preventDefault();
        first.focus();
      }
    }
  });

  first.focus();
}

Häufige DSGVO-Verstöße

1. Vorangekreuzte Checkboxen

<!-- FALSCH -->
<input type="checkbox" id="marketing" checked>

<!-- RICHTIG -->
<input type="checkbox" id="marketing">

2. Kein “Ablehnen”-Button

Der Ablehnen-Button muss genauso prominent sein wie “Akzeptieren”.

3. Dark Patterns

  • “Akzeptieren” in grün, “Ablehnen” in grau
  • “Ablehnen” versteckt hinter “Einstellungen”
  • Wiederholte Aufforderungen nach Ablehnung

Scripts werden geladen, bevor der Nutzer zustimmt.

5. Keine Widerrufsmöglichkeit

Nutzer können ihre Einwilligung nicht ändern.

Für Compliance sollten Sie Einwilligungen dokumentieren:

function setConsent(consent) {
  const consentRecord = {
    ...consent,
    timestamp: new Date().toISOString(),
    userAgent: navigator.userAgent,
    url: window.location.href
  };

  // Lokal speichern
  localStorage.setItem(CONSENT_KEY, JSON.stringify(consentRecord));

  // Optional: An Server senden
  fetch('/api/consent', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(consentRecord)
  });
}

Wann eine CMP nutzen?

  • Bei vielen Third-Party-Scripts
  • Für internationalen Traffic
  • Wenn IAB TCF erforderlich ist
  • Für einfachere Compliance

Empfohlene CMPs

CMPKostenlosVorteile
CookiebotBegrenztAutomatisches Scanning
UsercentricsNeinUmfangreiche Features
KlaroJa (Open Source)Selbst gehostet
OsanoBegrenztEinfache Einrichtung
  • Opt-In für alle nicht-essentiellen Cookies
  • Keine vorangekreuzten Checkboxen
  • “Ablehnen”-Button gleichwertig sichtbar
  • Cookie-Kategorien erklärt
  • Link zur Datenschutzerklärung
  • Widerrufsmöglichkeit vorhanden
  • Scripts erst nach Consent laden
  • Google Consent Mode v2 implementiert
  • Mobile-optimiert
  • Barrierefrei (ARIA, Focus-Management)
  • Dokumentation der Einwilligungen

Fazit

Ein DSGVO-konformer Cookie-Banner schützt Sie vor Bußgeldern und zeigt Besuchern, dass Sie Datenschutz ernst nehmen. Mit den richtigen Techniken - Opt-In, gleichwertige Buttons, Consent Mode - können Sie Compliance und Nutzerfreundlichkeit verbinden.

Für eine vollständige technische SEO-Implementierung inklusive Datenschutz beraten wir Unternehmen aus Duisburg und dem Ruhrgebiet — von der CMP-Auswahl bis zur korrekten Consent-Mode-Einbindung.


FAQ

Bei ausschließlich technisch notwendigen Cookies ist kein Banner erforderlich. Allerdings sollten Sie in der Datenschutzerklärung darüber informieren.

Die DSGVO gibt keine genaue Frist vor. Empfohlen werden 6-12 Monate, danach sollten Sie erneut fragen.

Gilt die DSGVO auch für Nutzer außerhalb der EU?

Die DSGVO gilt, wenn Sie Ihre Website an EU-Bürger richten oder deren Verhalten beobachten - unabhängig davon, wo die Nutzer gerade sind.

Nein, Kategorien reichen aus. Allerdings müssen Sie in der Datenschutzerklärung detailliert informieren, welche Cookies Sie setzen.

Arnold Wender, SEO-Experte

SEO-Experte & Gründer

Arnold Wender ist Gründer und Geschäftsführer der SEO-Agentur Duisburg. Mit über 19 Jahren Erfahrung in der Suchmaschinenoptimierung hilft er Unternehmen, ihre Online-Sichtbarkeit nachhaltig zu verbessern.

Profil anzeigen