Consentdeck

Einwilligungen einsammeln und jede einzelne beweisen: Einbindung per Script-Tag oder Plugin, Kategorien und Dienste, automatisches Blocking, Google Consent Mode v2, GTM-Export, Cookie-Erklärung, Protokoll mit Prüfsumme.

Stand: 23.09.2026

Auf dieser Seite

Consentdeck ist die Einwilligungsverwaltung von Entrydeck — als Teil jedes Pakets und als eigenständiges Produkt unter consentdeck.app. Es zeigt das Banner, hält Dritt-Skripte zurück, bis eine Entscheidung vorliegt, setzt die Signale für Google Consent Mode v2 und schreibt jede Entscheidung mit Prüfsumme in ein Protokoll, das den Nachweis nach Art. 7 Abs. 1 DSGVO erbringt.

Einbindung

Ein einziges Skript, 17 kB, ohne Abhängigkeiten, möglichst weit oben im <head>, damit vor allen anderen Skripten blockiert werden kann:

html
<script src="https://entrydeck.app/api/consent/embed.js?site=SITE_ID"></script>

Die Site-ID ist öffentlich und benennt nur die Website; ein Schlüssel wird nicht benötigt. Websites, die Entrydeck selbst rendert, binden das Skript automatisch ein, sobald das Banner eingeschaltet ist.

Umgebung Einbindung
WordPress ab 6.0 Plugin consentdeck.zip mit Einstellungsseite, Shortcode [consentdeck_declaration], Gutenberg-Block
TYPO3 v12/v13 Extension consentdeck mit TypoScript-Einbindung und Inhaltselement für die Erklärung
Shopware 6 ab 6.5 Plugin KwConsentdeck für Storefront und Checkout
Joomla 5 System-Plugin plg_system_consentdeck
Nuxt app.head.script in der nuxt.config
Next.js <Script strategy="beforeInteractive">
Alles andere das Script-Tag von oben

Alle Pakete tragen die Site-ID bereits eingebacken; sie liegen im Admin unter Consentdeck → Plugins & Integration.

Kategorien und Dienste

Kategorien (necessary, functional, analytics, marketing, …) bündeln Dienste. Jede Kategorie hat einen Schlüssel, eine Beschriftung je Sprache, ein Flag „notwendig" und eine Vorbelegung. Dienste kommen aus einem Katalog (Google Analytics 4, Tag Manager, Meta Pixel, YouTube, Vimeo, Google Maps, Matomo, HubSpot, …) oder werden frei angelegt — mit Anbieter, Zweck, Cookies und Laufzeiten. Aus diesen Angaben entsteht die Cookie-Erklärung automatisch.

Der Cookie-Scanner ruft bis zu 40 Seiten der Live-Website ab und meldet, welche Skripte, Einbettungen und Cookies wirklich vorkommen. Bekannte Dienste übernehmen Sie per Klick; alles Unbekannte gehört geprüft. Im Pro-Paket läuft der Scanner nach Zeitplan mit E-Mail-Bericht.

Blocking

Skripte, iframes, Bilder und Zählpixel werden zurückgehalten, bis die passende Kategorie erlaubt ist — auch solche, die ein anderes Plugin erst zur Laufzeit in die Seite schreibt. Eigene Einbindungen kennzeichnen Sie so:

html
<!-- Skript: type="text/plain" verhindert die Ausführung -->
<script type="text/plain" data-consent="analytics" src="/js/statistik.js"></script>

<!-- Einbettung: data-ed-src statt src, dazu ein Platzhalter mit Ladeknopf -->
<iframe data-ed-src="https://www.youtube-nocookie.com/embed/VIDEO_ID" data-ed-service="youtube" title="Video"></iframe>

Für Karten und Videos erscheint statt der Einbettung ein Platzhalter mit dem Text aus den Einstellungen und einem Schalter, der genau diesen Dienst freigibt.

Vor dem ersten Google-Tag stehen alle Signale (ad_storage, ad_user_data, ad_personalization, analytics_storage, …) auf denied und werden nach der Entscheidung aktualisiert (wait_for_update: 500). Zusätzlich schreibt Consentdeck zwei Ereignisse in window.dataLayer: consent_initialized einmal je Seitenaufruf und consent_update nach jeder Entscheidung — mit Kategorien, Diensten, Einwilligungs-ID und Version.

GTM-Export

Unter Tag Manager & Doku erzeugt Consentdeck einen fertigen Container: dataLayer-Variablen Consent - … je Kategorie, Trigger Consent Initialized, Consent Update und Consent Granted - … je optionaler Kategorie sowie Tags der eingerichteten Dienste. Im Tag Manager unter *Verwaltung → Container importieren* einspielen (Zusammenführen, Konflikte umbenennen), prüfen, veröffentlichen. Eigene Tags hängen an den Trigger der passenden Kategorie, nicht an *All Pages*.

Der Tag Manager gehört nicht ohne Weiteres in die notwendigen Dienste: Er darf nur dann vorab laden, wenn jedes Tag im Container den Consent Mode beachtet.

Steuerung aus eigenem Code

js
Consentdeck.open()              // Einstellungen erneut öffnen
Consentdeck.acceptAll()         // alles zulassen
Consentdeck.accept('analytics') // eine Kategorie zulassen
Consentdeck.reject()            // nur notwendige
Consentdeck.withdraw()          // Einwilligung widerrufen
Consentdeck.has('analytics')    // true, wenn zugestimmt wurde
Consentdeck.get()               // { id, version, ts, action, categories, services }
Consentdeck.on('change', fn)    // bei jeder Änderung

Für den Link „Cookie-Einstellungen" im Fußbereich genügt <button onclick="Consentdeck.open()">.

Erscheinungsbild

Fünf Vorlagen (Clean, Midnight, Minimal, Bold, Soft), jeweils mit heller und dunkler Farbwelt; Layout als Leiste oder Fenster, Overlay mit Abdunkelung und Weichzeichnung, Scroll-Sperre, eigenes CSS. Das Banner läuft im Shadow DOM und kollidiert mit keinem Theme. Geo-Regeln zeigen das Banner nur dort, wo es sein muss, mit Vorauswahl passend zur Rechtslage.

Nachweis

Jede Entscheidung — auch Ablehnung und Widerruf — wird an POST /api/consent/log?site=… gemeldet und gespeichert: Zeitpunkt, Einwilligungs-ID, Version, Kategorien, Dienste, Aktion, Sprache, gekürzter Browser-Kennzeichner und ein Tages-Hash der IP (nie die IP selbst). Jeder Eintrag trägt einen HMAC über ID, Version, Auswahl, Zeitpunkt und Sprache. Im Admin fügen Sie eine Prüfsumme ein und rechnen sie gegen den Eintrag — gültig oder nicht. Aufbewahrung einstellbar, Export als CSV und JSON.

Die Entscheidung liegt im Browser im Cookie consentdeck (JSON, SameSite=Lax, Laufzeit einstellbar). Jedes Speichern im Admin erhöht die Version; Besucher werden dann erneut gefragt — Änderungen deshalb sammeln.

Bewusst nicht enthalten

Kein A/B-Test des Banners (Optimierung auf Zustimmungsquote gilt als Nudging) und keine IAB-TCF-2.2-Zertifizierung: Consentdeck ist für Unternehmens-Websites, Shops und Portale ohne Werbenetzwerke gebaut. Wer AdSense oder Ad Manager einsetzt, braucht eine IAB-registrierte CMP.

Preise und Pakete (Free, Pro, Agentur) stehen unter Pläne & Abrechnung.