Meetlead-Widget implementieren
Konfiguriere eine Website, binde das Skript ein und verbinde anonyme Besuche sicher mit angemeldeten Kundenkonten.
Schnellstart
Integration in vier Schritten
Der kürzeste Weg von einer leeren Konfiguration zum ersten Testgespräch.
- Erstelle unter Einstellungen eine Website und kopiere ihre eindeutige öffentliche clientId.
- Füge jeden erlaubten Hostnamen exakt hinzu. example.com und www.example.com werden getrennt eingetragen; Wildcards werden nicht unterstützt.
- Binde das Skript einmal im gemeinsamen Seitenlayout ein.
- Sende eine Testnachricht und prüfe, ob das Gespräch im Meetlead-Posteingang erscheint.
<script
src="https://widget.meetlead.eu/widget.js"
data-client-id="DEINE_CLIENT_ID"
async
></script>Konfiguration
Website konfigurieren
Eine Website bestimmt Domains, Darstellung, Regeln und den Datenkontext der Besucher.
Nutze für jede unabhängige Website oder jeden Kundendatenkontext eine eigene Website. Verwende niemals die clientId einer anderen Website, da Ereignisse und Gespräche sonst dem falschen Kontext zugeordnet werden.
Füge Staging-Hosts zum Testen hinzu und entferne ungenutzte Domains in Produktion. Konfiguriere Widget-Texte, Arbeitszeiten, Datenschutzerklärung und aktive Anwendungen vor der Veröffentlichung.
Einbettung
Widget installieren
Platziere das asynchrone Skript im Dokumentkopf oder im gemeinsamen Anwendungslayout, sodass es genau einmal lädt.
Nutze für WordPress das offizielle Plugin oder ein vertrauenswürdiges Werkzeug für Header-Code. In React, Vue und anderen SPAs gehört das Skript in die Root-HTML statt in jeden Routenwechsel. In Next.js wird das gemeinsame App-Router-Layout oder die Pages-Router-Anwendung verwendet.
Umgehe nach dem Deployment den Browser-Cache, prüfe widget.js in den Entwicklertools, öffne den Launcher und sende eine Testnachricht. Die öffentliche clientId ist kein Geheimnis.
<script
src="https://widget.meetlead.eu/widget.js"
data-client-id="DEINE_CLIENT_ID"
async
></script>Kunden
Besuch mit einem Kunden verbinden
Rufe meetlead.identify() nach der Anmeldung mit einer stabilen userId auf. Für die Profilzuordnung innerhalb einer Website sind weder Geheimnis noch HMAC erforderlich.
Lade das Profil über einen authentifizierten Backend-Endpunkt mit Cache-Control: no-store. Übergib die gespeicherte userId und Kontaktdaten; vertraue keiner ID aus dem Request-Body.
onResult liefert accepted, rejected oder timeout sowie requestId, clientId und identityVerified. Speichere die lokale Kontozuordnung erst nach einer passenden accepted-Antwort. accepted bestätigt das Profil, aber keinen Zugriff auf Gespräche. Frühere Gespräche erfordern eine verifizierte Sitzung oder signierte Identität. Wenn die Wiederherstellung per E-Mail-Code für die Website verfügbar ist, erfordert sie eine separate Prüfung und erteilt Zugriff nur auf erlaubte Verläufe. Eine Zusammenführung durch Operatoren erteilt keinen Browserzugriff.
Rufe logout bei Abmeldung, Kontowechsel oder Sitzungsablauf auf. Wiederhole vorübergehende Netzwerkfehler ohne Abmeldung und ignoriere verspätete Ergebnisse früherer Konten. Profile und Berechtigungen gelten jeweils für eine Website. Bestehende signierte Integrationen können weiterhin eine optionale userHash übergeben; das HMAC-Geheimnis bleibt ausschließlich im Backend.
// Der Endpunkt erfordert eine aktive Benutzersitzung.
// Keine Kennung aus dem Request-Body verwenden.
response.setHeader('Cache-Control', 'no-store');
return {
userId: String(authenticatedUser.id),
email: authenticatedUser.email,
name: authenticatedUser.name
};(() => {
const identity = {
userId: currentUser.userId,
email: currentUser.email,
name: currentUser.name,
attributes: { plan: currentUser.plan }
};
const options = {
requestId: crypto.randomUUID(),
onResult(result) {
// accepted bestätigt die Profilzuordnung, nicht den Historienzugriff.
if (result.status === 'accepted') console.log('Profil zugeordnet');
}
};
const meetlead = window.meetlead || (window.meetlead = { q: [] });
if (typeof meetlead.identify === 'function') {
meetlead.identify(identity, options);
} else {
meetlead.q.push(['identify', identity, options]);
}
})();(() => {
const meetlead = window.meetlead || (window.meetlead = { q: [] });
if (typeof meetlead.logout === 'function') {
meetlead.logout();
} else {
meetlead.q.push(['logout']);
}
})();Kontexte
Mehrere Websites sicher verwenden
Jede Website besitzt eigene Domains, Widget-Einstellungen und Besucherdaten.
Team und Abonnement können in einem Workspace gemeinsam sein, Anfragen, Sockets und Analysen arbeiten jedoch immer im ausgewählten Website-Kontext. Nutze auf jeder Seite die passende clientId und enge Domainlisten.
Veröffentliche bei einem Umzug zuerst die neue Website-Konfiguration und teste sie, bevor du die alte Domain entfernst. Verwende eine clientId nicht als Abkürzung für unabhängige Marken oder Mandanten.
Messung
Ziele und Kundenfeedback senden
Nutze ausdrückliche Ereignisse für wichtige Ergebnisse, statt sie aus Seitenaufrufen abzuleiten.
Lege Zielschlüssel im Panel an und sende sie erst, nachdem die entsprechende Geschäftsaktion erfolgreich war. Namen und Metadaten dürfen keine sensiblen personenbezogenen Inhalte enthalten.
Nach einem Gespräch kann CSAT eine Bewertung und optionales Feedback entsprechend Widget-Konfiguration und Datenschutzhinweis erfassen.
// Das Ziel muss zuvor in Meetlead erstellt und aktiviert werden.
(() => {
const meetlead = window.meetlead || (window.meetlead = { q: [] });
const goalOptions = { value: 249, currency: 'PLN' };
if (typeof meetlead.goal === 'function') {
meetlead.goal('purchase', goalOptions);
} else {
meetlead.q.push(['goal', 'purchase', goalOptions]);
}
})();function submitMeetleadCsat(score, comment) {
const meetlead = window.meetlead || (window.meetlead = { q: [] });
if (typeof meetlead.csat === 'function') {
meetlead.csat(score, comment);
} else {
meetlead.q.push(['csat', score, comment]);
}
}
// Erst nach der bewussten Abgabe einer Bewertung von 1–5 durch den Kunden aufrufen.
// submitMeetleadCsat(customerScore, customerComment);Produktion
Sicherheit, Einwilligung und Content Security Policy
Veröffentliche erst nach Prüfung von Domains, Datenschutzregeln, Maskierung und Produktions-CSP.
- Erlaube die für aktive Funktionen notwendigen Meetlead-API- und Widget-Quellen.
- Wähle den Einwilligungsmodus passend zu Rechtsgrundlage und CMP-Verhalten.
- Maskiere oder schließe Eingaben und Inhalte aus, die nicht in Aufzeichnungen gelangen dürfen.
- Prüfe Launcher-Position, Offline-Formulare und Datei-Uploads auf Desktop und Mobilgeräten.
- Teste Identifikation nach Anmeldung und Abmeldung auf einem gemeinsam genutzten Gerät.
- Bestätige das erste Produktionsgespräch in der richtigen Website.
Diagnose
Häufige Installationsprobleme lösen
Die meisten Fehler entstehen durch falsche clientId, fehlende Domain, doppeltes Skript oder blockierende CSP.
Erscheint der Launcher nicht, prüfe Netzwerk und Konsole, den exakten Hostnamen und ob das Widget aktiv ist. Treffen Gespräche in der falschen Website ein, entferne das Skript sofort und ersetze die clientId.
Bei fehlerhafter Identifikation prüfe die stabile userId, clientId und passende requestId in der Bestätigung. Blockiert die Einwilligung Analyse, prüfe Modus und CMP-Signal, bevor du Widget-Code änderst.