Datenschutz-Einbindung: Einwilligung, Speicher und Datenschutztext
Wie das Widget den Einwilligungsstand deiner Consent-Plattform liest (IAB TCF v2, consented.eu, data-rc-consent), was es mit und ohne Einwilligung speichert und überträgt, und wie du den Datenschutztext automatisch in deine Datenschutzerklärung einbindest.
Diese Seite beschreibt die Technik. Ob und wofür du eine Einwilligung brauchst, beurteilst du selbst; Formulierungen findest du im Textbaustein für deine Datenschutzerklärung. Der Text ist keine Rechtsberatung.
Woher das Widget den Einwilligungsstand nimmt
Beim Start prüft der Loader – nur lesend, in dieser Reihenfolge:
- data-rc-consent am Loader-Tag (oder
consentinReactiveChatSettings/boot):grantedoderdeniedlegen den Stand fest; die Consent-Plattform wird dann nicht gefragt. - IAB TCF v2 über
window.__tcfapi('getTCData'): Einwilligung in Zweck 1 (Speichern und Abrufen von Informationen auf dem Gerät) gilt alsgranted; meldet die PlattformgdprApplies: false, ebenfalls. - consented.eu über
window.Consented.getState(). - Sonst unknown – behandelt wie
denied.
Nach dem Laden abonniert das Widget die Änderungen deiner TCF-Plattform (tcloaded, useractioncomplete) und reagiert sofort, ohne Neuladen.
Nutzt du eine Plattform ohne TCF, steuerst du den Stand über das Attribut. Typisch: den Loader erst nach der Zustimmung einfügen.
// Beispiel: Loader nach Zustimmung nachladen
function chatLaden(zugestimmt) {
var s = document.createElement('script');
s.src = 'https://cdn.reactive.chat/loader.js';
s.async = true;
s.setAttribute('data-rc-site-key', 'SITE_KEY');
s.setAttribute('data-rc-consent', zugestimmt ? 'granted' : 'denied');
document.head.appendChild(s);
}
Einen API-Befehl zum Setzen der Einwilligung gibt es nicht; ein Widerruf über deine TCF-Plattform wirkt sofort, sonst ab dem nächsten Seitenaufruf.
Was mit und ohne Einwilligung passiert
Ohne Einwilligung (denied oder unknown):
- Der Chat funktioniert; Kennungen liegen nur im
sessionStorageund verschwinden mit dem Tab. - Es werden keine fremden Kennungen gelesen (etwa einer MousePlayer-Sitzung).
- Kein Seitenkontext (
ctx), kein Seitentext, keine Navigationsmeldungen. - Bittet der Chat im Projekt vor der ersten Nachricht um Einwilligung, fragt er den Besucher selbst; dessen Antwort geht als
consentan den Server.
Mit Einwilligung (granted):
- Besucher- und Sitzungskennung sowie der Offline-Puffer liegen im
localStorage; das Gespräch bleibt über Tabs und Besuche hinweg erhalten. - Seitenkontext und – außer auf sensiblen Seiten – Seitentext gehen an den Server (SPA).
Wechselt der Stand, verschiebt das Widget seine Einträge (rc_*) zwischen localStorage und sessionStorage und meldet den Wechsel dem Server. Cookies setzt das Widget nicht.
Daten des Besuchers im Widget
Der Besucher kann im Widget den Verlauf per E-Mail anfordern, seine Einwilligung widerrufen und seine Daten löschen lassen. Wie Löschwünsche und Aufbewahrungsfristen im Konto eingestellt werden, steht im Handbuch.
Bereiche vom Seitentext ausnehmen
Der Assistent liest den sichtbaren Text der aktuellen Seite, um Fragen dazu zu beantworten. Nie gelesen werden Formularfelder, unsichtbare Elemente, das Widget selbst und Seiten mit Pfaden wie Konto, Checkout, Warenkorb, Bestellungen oder Rechnungen. Weitere Bereiche schließt du aus:
<section data-rc-private>
Kundennummer: 4711 · Vertragsdetails …
</section>
data-rc-ignore wirkt gleich. Ganz abschalten: data-rc-dom-spiegel="false" am Loader-Tag (dann gibt es auch kein „Zeig's mir“).
Datenschutztext automatisch einbinden
Ein Element in deiner Datenschutzerklärung zeigt den Abschnitt zu reactive.chat – passend zu deinen Projekteinstellungen (Einwilligung vor der ersten Nachricht, Löschfristen, KI-Assistent und sein Name, Smart Answer) und in der Sprache der Seite. Änderungen stehen nach höchstens zehn Minuten auf deiner Seite. Die Kurzfassung steht unter Datenschutztext automatisch einbinden.
<div data-rc-privacy data-lang="de" data-heading="2" data-email="datenschutz@deine-firma.de">
Hinweise zum Chat findest du in Abschnitt 7.
</div>
- data-rc-privacy (Pflicht) – markiert das Element.
- data-lang (optional) –
de,enoderpl; ohne Angabe<html lang>, sonst Englisch. - data-heading (optional) – Überschriftenebene
2bis6, Vorgabe3. - data-email (optional) – Kontaktadresse, wird in den passenden Sätzen verlinkt.
- data-rc-privacy-state (vom Widget gesetzt) –
loading,doneodererror.
Was im Element steht, bleibt stehen, bis der Text geladen ist – und wenn er nicht geladen werden kann. Der Text wird nur aus Textknoten aufgebaut (keine eigenen Farben oder Schriften) und übernimmt die Gestaltung deiner Seite.
Technik: Der Loader lädt dafür ein kleines Modul, auch ohne Einwilligung. Es ruft den Text per GET von der Chat-Adresse ab – ohne Cookies, ohne Referrer, ohne Besucherkennung – und speichert nichts im Browser. Der Text erscheint nur auf den Domains deines Projekts. Später eingefügte Elemente (SPA) erkennt das Modul selbst.
Blockiert deine Consent-Plattform den Loader auf der Datenschutzseite, binde das Modul direkt ein:
<script src="https://cdn.reactive.chat/datenschutz.js" data-rc-site-key="SITE_KEY" async></script>
Mit eigener Domain zusätzlich data-rc-ws-url="wss://chat.deine-firma.de/rc_wss/" und src von deiner Subdomain.
Weiter: Grenzen und Quoten
An nuashonrú is déanaí: