Angemeldete Kunden verbinden
Namen, E-Mail-Adressen und Kundendaten sicher per signiertem JWT an das Chat-Widget übermitteln.
Zuletzt aktualisiert · 02.11.2026
Warum Kundenidentitäten verbinden?
Für Websites mit Kundenkonten ermöglicht die verifizierte Identität den richtigen Gesprächsverlauf und zusätzliche Kundendaten im Posteingang. Dadurch werden die optionale Wiedererkennung bei späteren Besuchen und die E-Mail-Öffnungsmessung nicht aktiviert.
1. Geheimes Signaturkennwort erstellen
Öffne Einstellungen → Installation → Verifizierte Kunden und erstelle den Identitätsschlüssel. Speichere ihn sofort auf deinem Backend, zum Beispiel als SUPPORTWHALE_IDENTITY_SECRET. Er wird nur einmal angezeigt. Ein neuer Schlüssel ersetzt den alten und macht bisherige Tokens ungültig. Gib ihn niemals im Browser oder Widget-Skript an.
2. Token auf deinem Server signieren
Erstelle einen Endpunkt auf deinem Backend, beispielsweise /your-backend/support-identity, den nur angemeldete Kunden erreichen. Verwende den Benutzer aus deiner authentifizierten Serversitzung, niemals eine aus dem Browser übermittelte Benutzer-ID. Dieses Beispiel nutzt Web Crypto auf dem Server (Node.js 22+, Deno, Bun oder Workers). Ersetze sw_YOUR_WEBSITE_KEY durch den öffentlichen Schlüssel aus Installation:
// Server only: Web Crypto (Node.js 22+, Deno, Bun, Workers).
// user must come from your authenticated session, never request input.
// identitySecret is the exact secret text from server configuration.
async function createIdentityToken(user, identitySecret) {
const encode = (value) => btoa(String.fromCharCode(...value))
.replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
const utf8 = new TextEncoder();
const now = Math.floor(Date.now() / 1000);
const header = encode(utf8.encode(JSON.stringify({ alg: 'HS256', typ: 'JWT' })));
const payload = encode(utf8.encode(JSON.stringify({
sub: String(user.id), iss: "sw_YOUR_WEBSITE_KEY", aud: 'supportwhale',
iat: now, exp: now + 300, name: user.name, email: user.email,
metadata: { plan: user.plan }
})));
const key = await crypto.subtle.importKey(
'raw', utf8.encode(identitySecret), { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']
);
const signature = await crypto.subtle.sign('HMAC', key, utf8.encode(header + '.' + payload));
return header + '.' + payload + '.' + encode(new Uint8Array(signature));
}Gib { "token": "..." } mit Cache-Control: no-store zurück und HTTP 401 bei abgemeldeten Benutzern. Verwende den geheimen Schlüssel aus deiner Serverkonfiguration. Erforderliche JWT-Claims sind sub (stabile, nichtleere Kunden-ID, maximal 200 Zeichen), iss (öffentlicher Website-Schlüssel), aud (supportwhale), iat und exp (Unix-Sekunden, höchstens fünf Minuten gültig). Optional: name, email, avatar und JSON-metadata (bis etwa 5 KB). Ein Tarifname ist nützlicher Kontext; übertrage keine Passwörter oder andere Geheimnisse. Weitere kopierbare Beispiele für TypeScript, PHP, C# und Ruby gibt es unter Einstellungen → Installation → Verifizierte Kunden → Integrationsbeispiel.
3. Benutzer im Browser verbinden
Registriere einen Provider, der bei jeder Anfrage ein neues kurzlebiges Token von deinem Backend holt. SupportWhale erneuert verifizierte Sitzungen selbst und behält den korrekten Verlauf:
// Run on your site for an authenticated customer.
function connectSupportWhaleUser() {
void window.SupportWhale.setIdentityProvider(async () => {
const response = await fetch('/your-backend/support-identity', {
credentials: 'same-origin', cache: 'no-store'
});
if (!response.ok) throw new Error('Sign-in required');
const { token } = await response.json();
return token;
});
}
if (window.SupportWhale && !window.SupportWhale._queue) {
connectSupportWhaleUser();
} else {
window.addEventListener('supportwhale:ready', connectSupportWhaleUser, { once: true });
}4. Abmelden und testen
Rufe beim Abmelden oder Kontowechsel vorher await window.SupportWhale.reset() auf. Damit wird die vorherige lokale Chatsitzung gelöscht. Registriere den Provider für das neue Konto erneut. Fehlgeschlagene Erneuerungen starten nicht unbemerkt einen anonymen Chat. Teste mit zwei Konten, ob ihre Gespräche getrennt bleiben.
Verifizierte Kundenidentität ist nicht das Wiedererkennen anonymer Besucher. Optionale Messungen und Einwilligung.