Schnellstart-Wizard — Vom Register zur ersten Bot-Antwort in 5 Minuten
Wer SilentChat neu registriert, landet automatisch im Schnellstart-Wizard — kein zweites Passwort-Prompt, kein langes Suchen nach den ersten Schritten. Der Wizard zeigt drei Karten, die zusammen unter fünf Minuten dauern.
Was passiert direkt nach „Registrieren"?
Nach dem Klick auf „Registrieren" auf app.silentchat.de/register:
- Account + Tenant + Eigentümer-Rolle werden im Hintergrund angelegt
- Auto-Login — du bist sofort eingeloggt, ohne erneute Passwort-Eingabe
- Redirect auf
/onboarding— der 3-Step-Wizard öffnet sich
Falls dein Tenant beim Setup gesperrt wurde (z.B. Trial-Limit erreicht), wirst du stattdessen zur normalen Login-Seite weitergeleitet — der klassische Flow als Fallback.
Die drei Steps
Step 1 — Deine Website
Du gibst die URL deiner Webseite ein. SilentChat:
- Validiert die URL (SSRF-Schutz, Format-Check)
- Verifiziert die Domain automatisch für dein Tenant (mit dem Marker
verification_source = onboarding, sichtbar im Audit-Log) - Stellt den Crawler in die Warteschlange mit dem Onboarding-Profil (max. 50 Seiten, 120s Total-Timeout, Priorität 8)
- Startet den Live-Progress-Feed: du siehst die ersten Seiten in 1–2 Sekunden
Übersprungen? Kein Problem — du kannst später unter Knowledge Base → Auto-Import denselben Crawl manuell auslösen. Der Bot startet dann erst mit einer leeren KB.
Step 2 — Widget einbauen
Der Wizard zeigt einen fertigen HTML-Snippet, vorbefüllt mit dem data-widget-key deines automatisch angelegten Standard-Widgets. Drei API-URLs sind eingebettet (api.silentchat.de, ws.silentchat.de, cdn.silentchat.de).
Wo einfügen? Vor das schließende </body>-Tag — wie bei Google Analytics oder anderen Embed-Scripts.
Kein Entwickler greifbar? Verwende einen der folgenden Plugins/Integrationen:
- WordPress: Insert Headers and Footers (kostenfrei im WP-Plugin-Store)
- Shopify: Customize Theme → theme.liquid, vor dem
</body> - React / Vue / SPA: Manuelle Einbindung in die
index.htmloder peruseEffect-Hook
Step 3 — Test-Chat
Hier kommt ein eingebettetes Test-Widget hin (in Vorbereitung). Bis dahin verlinkt der Step direkt zu Einstellungen → Widgets, wo du dein Standard-Widget im Live-Modus testen kannst — entweder im Preview-iframe oder auf einer beliebigen Webseite mit eingebautem Snippet.
Nach dem Klick auf „Großartig! Zur Inbox" landest du auf /app/dashboard — der Wizard erscheint beim nächsten Login nicht mehr.
Skip-Button
Auf jedem Step gibt es unten links einen „Zur Inbox überspringen"-Button. Damit:
- wird der Wizard sofort als abgeschlossen markiert (
wizard_completedStep in der Onboarding-Progress-Map) - landest du direkt im Dashboard
- erscheint der Wizard beim nächsten Login nicht mehr
Geeignet für Migrationen / Bestands-Tenants / wenn du den Flow schon kennst.
Wizard nochmal durchlaufen?
In v1 nicht über die UI möglich — der wizard_completed Marker bleibt persistent. Wenn du den Wizard nochmal sehen willst, kann ein Super-Admin den Marker per DB-Update löschen:
UPDATE onboarding_progress
SET steps = steps - 'wizard_completed'
WHERE tenant_id = '<deine-tenant-id>';
Bei der nächsten Navigation zu /onboarding öffnet der Wizard wieder bei Step 1.
Bestands-Tenants
Wenn der Wizard ausgerollt wird, sehen alle bestehenden Tenants beim nächsten Login die Wizard-Seite, weil wizard_completed für sie nie gesetzt wurde. Der Skip-Button löst das in einem Klick.
Optional kann ein Super-Admin eine Ankündigungs-Email an alle Bestands-Tenants schicken (Endpoint POST /api/v1/admin/onboarding-announce/dispatch, gegated durch das RuntimeConfig-Flag onboarding_announce_email_enabled). Idempotent: schon angeschriebene Tenants werden übersprungen.
API-Referenz
| Endpoint | Beschreibung |
|---|---|
POST /api/v1/auth/register | Liefert Tokens in der Response (Auto-Login) |
GET /api/v1/onboarding | Step-Status inkl. wizard_completed Marker |
PUT /api/v1/onboarding/wizard_completed | Markiert Wizard als abgeschlossen |
POST /api/v1/onboarding/crawl-domain | Step 1 — Crawl starten (3/24h/Tenant) |
WS-Event: onboarding.crawl.progress ({ phase, current, total, last_url }).