Widget JavaScript API
Das SilentChat-Widget exponiert nach Laden ein globales Objekt window.SilentChat.
Chat-Fenster steuern
window.SilentChat.open();
window.SilentChat.close();
window.SilentChat.toggle();
window.SilentChat.hide();
window.SilentChat.show();
Nachricht senden, Besucher-Info setzen
window.SilentChat.sendMessage('Hallo, ich interessiere mich für Produkt X');
// Name und E-Mail des Besuchers — in jedem Tarif.
window.SilentChat.setVisitorInfo({ name: 'Max', email: 'max@example.com' });
// Eigene Merkmale — ab Professional.
window.SilentChat.setCustomData({ plan: 'premium', mitarbeiter: 42 });
// Ein Merkmal wieder entfernen: ausdrücklich null übergeben.
window.SilentChat.setCustomData({ plan: null });
Was mit den Merkmalen passiert. Sie liegen am Besucher und lassen sich in
Segmenten als metadata.<schlüssel> auswerten — so bauen Sie
etwa ein Segment „alle Besucher im Tarif premium".
Grenzen, die wir bewusst ziehen:
- Höchstens 10 Paare je Besucher. Schlüssel bis 40, Werte bis 200 Zeichen.
- Erlaubt sind Text, Zahlen und Ja/Nein — keine verschachtelten Objekte.
- Bitte keine personenbezogenen Daten in Merkmalen. Werte, die wie eine
E-Mail-Adresse oder Telefonnummer aussehen, speichern wir maskiert
(
m***@example.com). Für Name und E-Mail gibt essetVisitorInfo— dort sind sie vorgesehen und im Auftragsverarbeitungsvertrag beschrieben.
Wenn nichts ankommt, sagt die Konsole warum. Beide Methoden schreiben eine Warnung in die Browser-Konsole, wenn der Tarif die Merkmale nicht enthält oder der Besucher dem Tracking nicht zugestimmt hat. Ein stilles Verschlucken gibt es nicht.
Eigene Ereignisse melden
Ein Merkmal sagt, was über den Besucher wahr ist. Ein Ereignis sagt, was passiert ist — mit Zeitstempel, und jedes Vorkommen einzeln:
window.SilentChat.track('warenkorb_gefuellt', { wert: 249.90, artikel: 3 });
window.SilentChat.track('demo_gebucht');
Ihre Agenten sehen die Ereignisse live in der Besucher-Detailspalte — also was jemand getan hat, nicht nur wo er war. Ebenfalls ab Professional.
Namen werden vereinheitlicht. Warenkorb gefüllt,
warenkorb-gefuellt und WARENKORB_GEFUELLT
landen alle als warenkorb_gefuellt. Sonst wären es drei
verschiedene Ereignisse in jeder Auswertung, ohne dass es irgendwo auffällt.
Kleinbuchstaben, Ziffern und Unterstrich bleiben; Umlaute werden
ausgeschrieben.
Grenzen:
- Höchstens 200 Ereignisse je Sitzung.
- Höchstens 50 verschiedene Namen je Konto. Wer darüber hinaus einen neuen
Namen sendet, bekommt ihn unter
_otherverbucht — die Daten gehen nicht verloren, sie werden nur nicht mehr einzeln geführt. Bitte keine Kennungen in den Namen (bestellung_4711), sondern in die Eigenschaften. - Für die Eigenschaften gelten dieselben Regeln wie bei den Merkmalen — einschließlich der Maskierung dessen, was nach einer E-Mail-Adresse oder Telefonnummer aussieht.
- Ereignisse werden so lange aufbewahrt wie Seitenaufrufe und bei einer Löschung des Besuchers mit entfernt.
Was Sie mit Ereignissen anfangen können
Segmente. Im Segment-Editor stehen zwei neue Felder je Ereignis:
event.<name>— wie oft es eingetreten ist. Mit „ist nicht leer" heißt das „mindestens einmal", mit „ist leer" „nie". Mit größer/kleiner vergleichen Sie die Anzahl.event_days.<name>— Tage seit dem letzten Mal. „kleiner als 7" ist also „in der letzten Woche".
Beispiel: event.warenkorb_gefuellt ist nicht leer UND
event.bestellung_abgeschlossen ist leer — alle, die etwas
liegen gelassen haben.
Auslöser. Die Bedingung „Eigenes Ereignis" reagiert, sobald
track in der laufenden Sitzung gemeldet wurde — etwa um
jemanden anzusprechen, der den Warenkorb gefüllt und dann nichts mehr getan
hat. Nur die laufende Sitzung: Für „hat vor drei Wochen etwas gekauft" nehmen
Sie ein Segment.
Consent-API (Presence-Tracking)
window.SilentChat.setConsent('presence_tracking', true);
window.SilentChat.revokeConsent('presence_tracking');
const state = window.SilentChat.getConsent('presence_tracking');
// "granted" | "declined" | "unknown"
const off = window.SilentChat.onConsentChange((type, granted) => {
console.log('Consent geändert:', type, granted);
});
off(); // abmelden
Cookiebot-Integration
window.addEventListener('CookiebotOnAccept', () => {
if (Cookiebot.consent.statistics) {
window.SilentChat.setConsent('presence_tracking', true);
}
});
window.addEventListener('CookiebotOnDecline', () => {
window.SilentChat.revokeConsent('presence_tracking');
});
Usercentrics V2
window.addEventListener('uc-consent-changed', (event) => {
const v = event.detail?.SilentChat?.consent;
if (v === true) window.SilentChat.setConsent('presence_tracking', true);
if (v === false) window.SilentChat.revokeConsent('presence_tracking');
});
Events
window.SilentChat.on('ready', () => { /* Widget geladen */ });
window.SilentChat.on('chat_opened', () => {});
window.SilentChat.on('chat_closed', () => {});
window.SilentChat.on('message_sent', (msg) => {});
window.SilentChat.on('message_received', (msg) => {});
window.SilentChat.off('chat_opened');
HTML-Attribute (Trigger-Modus)
<a href="#" data-silentchat-open>Chat öffnen</a>
<div data-silentchat-trigger data-label="Hilfe?" data-style="branded" data-color="#2563eb"></div>
Oder via URL-Hash: https://ihre-seite.de/seite#silentchat-open
Widget einbinden
<script
src="https://cdn.silentchat.de/silentchat.min.js"
data-widget-key="pk_XXX"
data-api-url="https://api.silentchat.de"
data-ws-url="wss://ws.silentchat.de"
defer
></script>