Zum Hauptinhalt springen
Woop Technology
Alle Referenzen
Technische Case Study | Sicherheit & Unabhängigkeit

Eine Consent-Architektur, gebaut für unsere Projekte, für Sicherheit und Daten­souveränität

Für unsere Webanwendungen haben wir die Verwaltung von Einwilligungen selbst gebaut, statt sie an eine externe Consent-Plattform auszulagern. Funktion, Gestaltung und Verhalten bestimmen wir selbst; Einwilligungen und Protokolle bleiben auf unserer eigenen Infrastruktur – ohne fremdes Script im Ladeweg und ohne laufende Gebühren.

Oberfläche
Banner und Einstellungen im Design des Projekts
Consent-Engine
Zustand, Versionierung, Registry, Gating
Datenquelle
JSON, API oder CMS – austauschbar
Drei getrennte Ebenen: Die Engine in der Mitte verantwortet die Funktionsweise, die Datenquelle darunter ist austauschbar, die Oberfläche darüber gehört dem jeweiligen Projekt.
Projektfakten
Art
Technische Case Study
Baustein
@woop-technology/consent
Referenzprojekte
Status
Im Einsatz | in laufender Weiterentwicklung
Integration
React | Next.js App Router
Bereitstellung
Private Paketverwaltung
Schwerpunkte
  • Consent-Architektur
  • Datensouveränität
  • Google Consent Mode v2
  • Cookie-Registry
  • versionierte Einwilligungen
  • Script-Gating
  • austauschbare Datenquellen
  • Mehrsprachigkeit
  • projektspezifische Oberflächen
  • serverseitige Protokollierung
Ausgangslage

Warum wir unser Consent Management selbst entwickelt haben

Webanwendungen binden häufig externe Dienste wie Analytics, Karten, Videos oder Terminbuchungen ein. Damit entstehen zusätzliche Datenflüsse – und zwei Fragen: Unter welchen Bedingungen diese Dienste geladen werden dürfen, und was mit den Daten geschieht, sobald sie den eigenen Server verlassen haben.

Die naheliegende Antwort wäre eine externe Consent-Plattform. Für uns hätte sie drei Dinge mitgebracht, die wir nicht wollten: Eine weitere monatliche Rechnung, ein Consent-System, das nur so weit in die Anwendung reicht, wie der Anbieter es vorsieht – und die Einwilligungsdaten unserer Besucher auf fremden Servern.

Aus diesem Grund haben wir unser eigenes Consent Management entwickelt: Als integralen Bestandteil unserer Anwendungsarchitektur, wiederverwendbar und anpassbar – und so, dass die Daten ausschliesslich auf unserer eigenen Infrastruktur verbleiben.

Die Lösung sollte
  1. 01Einwilligungen und Speicherwerte zentral verwalten, ohne externen Anbieter
  2. 02Dienste einwilligungsabhängig freischalten
  3. 03Einwilligungen und Protokolle ausschliesslich auf eigener Infrastruktur verarbeiten
  4. 04Unterschiedliche Sprachen, Datenquellen und Oberflächen unterstützen
  5. 05Wiederverwendbar sein, ohne zusätzliche Gebühren pro Monat oder Projekt

Daraus entstand eine eigenständige Consent-Engine, die heute als gemeinsamer technischer Baustein in unseren Projekten eingesetzt wird.

Unabhängigkeit & Sicherheit

Drei Dinge, die wir nicht aus der Hand geben

Eine externe Consent-Plattform bringt einen zusätzlichen Anbieter mit: Eigene Scripts, eigene Konfiguration, eigene Server und eine laufende Gebühr. Die eigene Engine läuft dagegen zusammen mit der Anwendung, innerhalb derselben Infrastruktur und mit denselben Werkzeugen.

Was das konkret bedeutet, lässt sich an drei Punkten festmachen.

Kosten
Keine Lizenz pro Domain, pro Seitenaufruf oder pro Monat. Die Kosten entstehen einmal bei der Entwicklung und laufend in der Pflege.Tragbar wird das, weil derselbe Baustein in mehreren Projekten läuft.
Kontrolle
Funktion, Datenbasis, Gestaltung und Verhalten bestimmen wir selbst – bis hinein in den Anwendungscode, der den Consent-Zustand direkt abfragen kann.Nichts endet dort, wo der Funktionsumfang eines Anbieters aufhört.
Daten
Konfiguration, Einwilligungen und Protokolle liegen auf unseren eigenen Servern. Kein Dritter speichert, verarbeitet oder sieht die Entscheidungen der Besucher.
Die Consent-Funktion benötigt keine externe CMP

Die Consent-Konfiguration und die zentrale Engine sind Bestandteil der eigenen Anwendung. Für das Consent-System selbst ist deshalb kein externer CMP‑Anbieter erforderlich.

Das bedeutet
  • kein zusätzliches CMP-Script
  • kein externer Netzwerkabruf für die Consent-Funktion selbst
  • keine fremde Consent-Oberfläche
  • keine zusätzliche Plattformabhängigkeit allein für die Verwaltung der Einwilligungen

Zustimmungsabhängige Dienste bleiben davon getrennt und werden erst geladen, wenn die erforderliche Einwilligung vorliegt.

Weniger fremder Code, weniger Angriffsfläche

Ein externes Consent-Script läuft mit denselben Rechten wie die Seite selbst und wird von einem fremden Server nachgeladen. Jede Version, die der Anbieter ausliefert, wird damit Teil der eigenen Website, ohne dass sie sich im Einzelnen prüfen liesse.

Bei etablierten Anbietern ist das in der Regel unproblematisch. Wir ziehen es dennoch vor, den Code zu kennen, der auf unseren Seiten läuft: Die eigene Engine wird wie der übrige Code der Anwendung versioniert, geprüft und ausgeliefert.

Der eigene Protokoll-Endpunkt
  • nimmt nur Anfragen von der eigenen Herkunft an
  • prüft jede Anfrage auf vollständige und zulässige Felder
  • kürzt die IP-Adresse, bevor sie gespeichert wird
  • liegt auf einem festen Pfad, für den die vorgelagerte Firewall eigene Regeln führen kann
Einwilligungen und Protokolle liegen auf unseren eigenen Servern

An der Verwaltung der Einwilligungen ist kein weiterer Anbieter beteiligt. Die Entscheidung eines Besuchers wird in der Anwendung wirksam und auf demselben Server protokolliert, auf dem die Anwendung läuft – dort, wo auch die übrigen Daten des Projekts verarbeitet werden. Das gilt für jedes Projekt, das die Engine einsetzt: Die Entscheidungen werden lokal im Container der jeweiligen Anwendung protokolliert.

Welche weiteren externen Dienste ein konkretes Projekt verwendet und welche Daten dabei übertragen werden, wird unabhängig davon projektspezifisch definiert und dokumentiert.

Architektur

Drei getrennte Ebenen für Logik, Daten und Darstellung

Das Consent-System trennt die zentrale Funktionslogik von den projektspezifischen Daten und der sichtbaren Oberfläche.

Dadurch lässt sich dieselbe technische Grundlage in unterschiedlichen Anwendungen einsetzen, ohne Consent-State, Versionierung oder Script-Gating für jedes Projekt neu implementieren zu müssen.

Der Baustein bringt eine Standard-Oberfläche mit, die das Projekt gestaltet oder ganz ersetzt. So läuft dieselbe Engine auf einer Kunstplattform und auf einem Unternehmensauftritt, obwohl sich die beiden Oberflächen gestalterisch unterscheiden.

Consent-Engine
Die zentrale Engine übernimmt die Funktionen, die projektübergreifend gleich bleiben:
  • Consent-State
  • Versionsprüfung
  • Cookie-Registry
  • Script-Gating
  • Zwei-Klick-Lösungen
  • Widerruf
  • Bereinigung deklarierter Speicherwerte
  • Google Consent Mode v2
Die gemeinsame Funktionslogik wird zentral gepflegt und als wiederverwendbarer Baustein bereitgestellt.
Datenquelle
Die Engine erhält die projektspezifischen Informationen über eine definierte Schnittstelle. Dazu gehören unter anderem:
  • Consent-Version
  • Kategorien und Services
  • Cookies und weitere Speicherwerte
  • Texte je Sprache
  • Script-Konfigurationen
Die mitgelieferte Implementierung liest JSON‑Dateien im Projekt. Ein Headless CMS oder eine eigene API wird angebunden, indem man dieselbe Schnittstelle implementiert – die Engine bleibt davon unberührt.
Oberfläche
Banner und Einstellungsdialog werden für das jeweilige Projekt gestaltet. Die Oberfläche erhält die benötigten Daten und fest definierten Aktionen aus der zentralen Engine.Dadurch lässt sich das visuelle Erscheinungsbild projektspezifisch anpassen, ohne die zugrunde liegende Consent-Logik verändern zu müssen.

Alles auf eigener Infrastruktur.

0Externe Anbieter
0Externe CMP-Scripts
Referenzprojekt | Woop Art
3Consent-Kategorien
4Services
7Cookies
2Sprachen
Referenzprojekt | Diese Website
3Consent-Kategorien
4Services
7Cookies
5Sprachen

Die Zahlen unter den Referenzprojekten gelten für deren jeweilige Konfiguration. Kategorien, Services und Cookies sind frei konfigurierbar.

Ein gemeinsamer Baustein statt projektspezifischer Einzellösungen

Die Consent-Engine wird als eigenes Package über die private Paketverwaltung von Woop Technology bereitgestellt. Versionen und Änderungen werden zentral verwaltet; jedes Projekt bindet die Version ein, die es braucht, und übernimmt Updates zu seinem eigenen Zeitpunkt – verschiedene Projekte können deshalb gleichzeitig verschiedene Versionen im Einsatz haben.

Jedes neue Projekt ergänzt vier Bereiche:

01Daten
Kategorien, Services, Speicherwerte und Texte.
02Persistenz
Wo die Protokolle der Consent-Entscheidungen abgelegt werden.
03Integrationen
Analytics und weitere zustimmungsabhängige Dienste.
04Design
Standard-Oberfläche oder individuelle Banner- und Einstellungskomponenten.

Consent-State, Versionierung, Registry, Script-Gating und Widerruf werden aus dem gemeinsamen Baustein übernommen. Verbesserungen an der Engine lassen sich über versionierte Updates in mehrere Projekte übertragen.

Was die Engine mitbringt, was das Projekt bestimmt

  1. 01Enginekategoriebasierte Einwilligung, Versionierung, Widerruf, Cookie-Bereinigung, Script-Gating, Google Consent Mode v2
  2. 02ProjektDatenquelle (JSON, API oder Headless CMS), Sprachen, Oberfläche (Standard-UI oder eigene Komponenten), Integrationen (Hooks, Zwei-Klick-Lösungen)
  3. 03PersistenzConsent-Cookie im Browser, serverseitige Protokollierung, gekürzte IP-Adressen
  4. 04Stack & BetriebReact, TypeScript, Next.js App Router, Dependency Injection, private Paketverwaltung, geprüfte Eingaben

Was eine Einwilligung im Browser speichert

Vereinfachte Darstellung: Hier gilt jede Änderung sofort, im echten Dialog erst beim Speichern – und jede Speicherung wird serverseitig protokolliert. Felder und Version entsprechen der Engine dieser Website. Geprüft am 21. September 2026 in einer Testumgebung: Die getestete Analytics-Integration wird erst nach der entsprechenden Einwilligung geladen.

Zwei Klicks, bevor ein externer Dienst lädt

Nicht jede Einwilligung gehört ins Banner. Für eingebettete Dienste wie die Terminbuchung holt die Engine sie dort ein, wo der Besucher den Dienst tatsächlich nutzen will.

Erster Klick: Hinweis und neue Beschriftung. Ein Klick daneben schliesst den Hinweis, ohne dass Google geladen wurde.
Aufnahme der Startseite dieser Website. Geprüft am 23. September 2026: Beim Aufruf und nach dem ersten Klick geht keine Anfrage an einen externen Server, alle Anfragen an Google folgen erst auf den zweiten.
  1. 01

    Erster Klick: Hinweis

    Die Schaltfläche zeigt, welcher Anbieter geladen würde und welche Daten dabei übertragen werden. Ihre Beschriftung wechselt zu „Google Calendar laden“.

  2. 02

    Zweiter Klick: Laden

    Erst jetzt werden Script und Stylesheet des Anbieters eingebunden und die Buchung geöffnet. Bis dahin geht keine Anfrage an Google.

  3. 03

    Ohne Umweg über das Banner

    Der Besucher muss dafür keine Kategorie in den Consent-Einstellungen freigeben. Die Entscheidung fällt am Dienst selbst, für genau diesen Dienst.

Die Bausteine dafür liegen im selben Package wie die Engine: Fertig für Google Calendar und Calendly, für weitere Dienste über eine gemeinsame Grundkomponente.

Die Consent-ID ist mit einem Klick zur Hand

Jede Entscheidung wird auf dem Server protokolliert, eindeutig auffindbar ist sie aber nur über ihre Consent-ID. Ein eigener Baustein legt sie Besuchern griffbereit hin.

Die ID steht im Consent-Cookie, wo sie ohne Entwicklerwerkzeuge niemand sieht. Trotzdem ist sie der einzige eindeutige Weg zum Eintrag auf dem Server, weil die IP-Adresse nur gekürzt gespeichert wird.

Der Baustein zeigt die ID an und kopiert sie mit einem Klick. Bei einer Frage, einer Beanstandung oder einer Auskunftsanfrage schicken Besucher sie gleich mit, und der Eintrag ist ohne Rückfragen gefunden – mit Zeitpunkt, Version und Auswahl.

Der Baustein steht in der Datenschutzerklärung der jeweiligen Website und führt von dort auch direkt in die Consent-Einstellungen.

Einwilligungs-Status: Nicht festgelegt

Ihre aktuelle Consent-ID

Diese eindeutige ID wird lokal in Ihrem Browser und pseudonymisiert auf unserem Server gespeichert, um Ihre Datenschutzauswahl nachzuweisen. Bei Fragen oder Beschwerden zu Ihrer Einwilligung senden Sie uns diese ID bitte mit – so finden wir den zugehörigen Nachweis eindeutig.

Noch keine Auswahl getroffen

Der Baustein kommt vorbereitet im Consent-Package mit. Wie Banner und Einstellungsdialog lässt er sich frei gestalten: Die Funktionsweise bleibt im Package, das Aussehen bestimmt das Projekt – hier das dieser Website.

Daten, Sprachen & Oberfläche

Die Consent-Logik ist nicht an eine bestimmte Datenquelle gebunden

Die Consent-Engine liest ihre Daten nicht selbst, sondern über eine definierte Schnittstelle. Woher sie stammen, entscheidet die Implementierung dieser Schnittstelle – die Engine bleibt dieselbe.

Standard: Dateien im Projekt
Die mitgelieferte Implementierung liest versionierte JSON‑Dateien, die mit dem Quellcode ausgeliefert werden. Für die Konfiguration ist kein Netzwerkabruf nötig.
Redaktionelles CMS
Wird die Schnittstelle für ein Headless CMS implementiert, pflegt die Redaktion Texte, Services und Cookies dort – ohne dass die Engine angepasst wird.
Eigenes System über API
Ebenso lässt sich ein eigenes CMS oder ein zentraler Dienst über seine API anbinden – etwa um Consent-Daten für mehrere Anwendungen gemeinsam zu pflegen.

Technische Definition und Übersetzungen bleiben getrennt

Cookie-Namen, Kennungen, Kategorien und Speicherdauern werden einmal definiert. Die Texte in Banner und Einstellungsdialog liegen dagegen in jeder Sprache vor; angezeigt wird die Sprache, die der Besucher gewählt hat:

  • Kategoriebezeichnungen und Beschreibungen
  • Serviceinformationen und Cookie-Zwecke
  • Informationen zu Datenübermittlungen
  • Bannertexte und Schaltflächen
  • Screenreader-Beschriftungen

Eine gemeinsame Logik, unterschiedliche Oberflächen

Die Engine bietet eine Standard-Oberfläche, die sich ganz oder teilweise durch projektspezifische Komponenten ersetzen lässt.

Ein Projekt kann
  • Banner und Einstellungsdialog unverändert übernehmen
  • nur das Banner selbst gestalten
  • nur den Einstellungsdialog ersetzen
  • beide Oberflächen individuell umsetzen

Consent-State, Versionierung und Widerruf bleiben dabei zentral verwaltet.

Consent-Banner im Design des Referenzprojekts
Das Banner fügt sich gestalterisch in die Website ein.
Einstellungsmodal mit den Consent-Kategorien
Kategorien, Services und deklarierte Cookies werden mit Daten und Aktionen der zentralen Engine dargestellt.
Nachweis & Betrieb

Serverseitige Protokollierung von Entscheidungen

Jede Einwilligung und jede spätere Änderung erzeugt neben dem Zustand im Browser einen Datensatz auf dem Server. Diese Protokollierung ist fester Bestandteil des Ablaufs, keine Option.

Wohin der Datensatz geht, bestimmt auch hier die Implementierung der Schnittstelle: Standardmässig legt die Anwendung ihn als Datei auf dem eigenen Server ab. Ebenso kann sie ihn über eine API an einen anderen Dienst übergeben, der ihn etwa in einer Datenbank verwaltet.

Dabei werden unter anderem festgehalten
  • Consent-ID
  • Konfigurationsversion
  • getroffene Auswahl
  • Zeitpunkt
  • User-Agent
  • gekürzte IP-Adresse

IPv4-Adressen werden nach dem zweiten Block gekürzt, IPv6-Adressen nach dem dritten Segment. Eingehende Einträge werden geprüft; unvollständige oder unzulässige Anfragen werden abgewiesen.

Die Protokollierung unterstützt die Nachvollziehbarkeit von Entscheidungen, stellt jedoch keine revisionssichere Archivierung dar.

Ein Fehler bei der Protokollierung blockiert die Anwendung nicht

Die Entscheidung des Besuchers wird zuerst im Consent-Zustand der Anwendung wirksam. Schlägt die serverseitige Speicherung fehl, bleibt die Website weiterhin nutzbar.

Der Fehler wird serverseitig protokolliert, statt technische Details im Browser offenzulegen. Damit hängt die Funktionsfähigkeit des Consent-Systems nicht davon ab, ob die Protokollierung in jedem Moment verfügbar ist.

Vom Klick zum Protokolleintrag

consent-flow demo
01 Einstellungen geladen02 Auswahl erhalten03 Consent-Zustand aktualisiert04 Entscheidung protokolliertAblauf abgeschlossen
Schematische Darstellung – keine Ausgabe aus den tatsächlichen Systemprotokollen.
  1. 01

    Auswahl im Banner

    Der Besucher entscheidet je Kategorie, welche Dienste er zulässt. Notwendige Speicherwerte bleiben aktiv.

  2. 02

    Umsetzung in der Anwendung

    Die Engine speichert die Auswahl, aktualisiert Google Consent Mode und gibt zugelassene Dienste frei.

  3. 03

    Protokoll auf dem Server

    Die Entscheidung wird mit Version und Zeitpunkt protokolliert.

Einordnung

Warum die eigene Lösung für uns naheliegend war

Abhängigkeiten und laufende Kosten gar nicht erst entstehen zu lassen, war das Ziel. Dass sich das schnell und zuverlässig umsetzen liess, lag an dem, was wir bereits mitbrachten.

Fachwissen zu Datenschutz und Consent
Wie Einwilligungen, Google Consent Mode und die Informationspflichten gegenüber Besuchern zusammenspielen, gehört zu unserer täglichen Arbeit an Webanwendungen.
Eigene Anwendungen statt Baukasten
Unsere Projekte sind eigenständige Webanwendungen. Consent liess sich deshalb als Teil der Anwendung bauen, statt von aussen eingebunden zu werden.
Eigene Infrastruktur
Hosting, Deployment und Firewall betreiben wir selbst. Protokolle auf eigenen Servern brauchten deshalb keinen neuen Dienst, sondern einen Endpunkt mehr in der bestehenden Anwendung.
Gemeinsame Bausteine
Über unsere private Paketverwaltung teilen sich unsere Projekte bereits andere Bausteine. Die Consent-Engine ist einer davon und steht jedem neuen Projekt zur Verfügung.

Die Consent-Engine war damit keine Grossbaustelle, sondern eine Erweiterung dessen, was ohnehin vorhanden war.

Consent kann direkt in die Anwendung integriert werden

Der zentrale Consent-Zustand steht auch dem Anwendungscode zur Verfügung.

Eine Komponente kann dadurch beispielsweise prüfen
  • Ist Analytics freigegeben?
  • Darf ein eingebettetes Video geladen werden?
  • Muss vor einer externen Karte zunächst eine Einwilligung eingeholt werden?
  • Ist die gespeicherte Entscheidung für die aktuelle Consent-Version noch gültig?

Consent bleibt damit nicht auf Banner und Einstellungsdialog beschränkt, sondern kann direkt in den Ablauf einer Anwendung integriert werden.

Volle Kontrolle heisst volle Verantwortung

Wer keinen Anbieter hat, hat auch niemanden, der Cookie-Listen nachführt, Änderungen an Google Consent Mode übernimmt oder Texte an eine neue Rechtslage anpasst. Diese Arbeit liegt bei uns – als Teil der Pflege, die wir für unsere Anwendungen ohnehin leisten – oder beim Kunden, wenn Texte und Angaben über ein angebundenes CMS gepflegt werden.

Ergebnis

Ein eigenes Fundament für Consent, ohne Anbieter dazwischen

Die Consent-Engine wird heute in unterschiedlichen Webanwendungen eingesetzt – ohne externen Anbieter, ohne laufende Lizenz und mit Einwilligungen und Protokollen auf eigener Infrastruktur. Zentrale Funktionen werden einmal gepflegt, während Daten, Integrationen, Sprachen und Oberfläche projektspezifisch bleiben.

Unabhängigkeit
Kein Anbieter, keine Lizenz, kein fremdes Script im Ladeweg.
Datensouveränität
Konfiguration, Einwilligungen und Protokolle liegen auf eigener Infrastruktur.
Consent vor zustimmungspflichtigen Diensten
Entsprechende Integrationen werden erst nach der erforderlichen Einwilligung geladen.
Versionierte Entscheidungen
Gespeicherte Einwilligungen sind an den jeweiligen Stand der Consent-Konfiguration gebunden.
Zentrale Consent-Logik
State, Versionierung, Registry, Script-Gating und Widerruf werden gemeinsam verwaltet.
Wiederverwendbar und flexibel
Datenquellen, Sprachen und Oberflächen je Projekt; Verbesserungen an der Engine über versionierte Updates.