Docs
Mignuti Chatbot ist eine Web Component. Wenn deine Plattform einen <script>-Tag
erlaubt, kannst du Mignuti Chatbot einbetten. Unten: der 60-Sekunden-Quickstart und sechs
plattform-spezifische Rezepte.
Quickstart (60 Sekunden)
- Registriere dich auf /signup (kostenlos, keine Kreditkarte).
- Der Onboarding-Wizard legt dein erstes Projekt an. Wähle ein Vertical-Template oder lade ein Dokument hoch (PDF, Word, Text …) oder füge eine URL ein.
-
In Schritt 3 generieren wir deinen Embed-Code — eine Zeile HTML mit
data-project-Attribut. - Diese Zeile auf deine Seite einfügen. Reload. Der Chat-Launcher erscheint unten rechts.
Embed-Tag Anatomie
<script
src="https://widget.mignuti.com/v1.js"
data-project="prj_4f9c…" // public Widget-Key
data-secret="sec_9b21…" // bcrypt-bound Secret
data-consent="granted" // 'pending' | 'granted' | 'denied'
async></script> - data-project: öffentlicher Key, darf im HTML stehen.
- data-secret: server-seitig validiert; ohne ihn bootet das Widget nicht. Es steht — wie bei jedem Embed-Widget — im öffentlichen HTML. Die eigentliche Absicherung sind Domain-Binding, Rate-Limits und kurzlebige Session-JWTs; das Secret bindet das Embed nur eindeutig an dein Projekt.
- data-consent: Default
pending— das Widget wartet auf einen explizitenwindow.MignutiChatbot.setConsent('granted')-Call, bevor es Sessions startet oder localStorage schreibt. Verbinde das mit deinem Cookie-Banner (siehe Consent) — oder lass es weg: beipendingzeigt das Widget dem Besucher einen eigenen Einwilligungs-Button, bevor ein Chat startet. - async: nie blockierend. Das Widget wiegt rund 27 KB gzipped.
WordPress
Drei Optionen, sortiert nach Empfehlung:
1. Plugin „Mignuti Chatbot" (empfohlen)
- WP-Admin → Plugins → Hinzufügen → nach „Mignuti Chatbot" suchen.
- Installieren + aktivieren.
-
Einstellungen → Mignuti Chatbot →
data-project+data-secreteinfügen.
2. Header-Footer-Injection-Plugin (Insert Headers and Footers, WPCode)
Embed-Snippet in den „Body"- oder „Footer"-Hook einfügen. Funktioniert auf jedem Theme.
3. Theme functions.php
add_action('wp_footer', function () {
echo '<script src="https://widget.mignuti.com/v1.js" data-project="prj_…" data-secret="sec_…" async></script>';
}); Shopify
- Online-Shop → Themes → Code bearbeiten am aktiven Theme.
layout/theme.liquidöffnen.- Embed-Snippet direkt vor
</body>einfügen. - Speichern. Das Widget erscheint auf Shop-, Produkt-, Warenkorb- und Kollektions-Seiten.
Auf Checkout-Seiten erlaubt Shopify Scripts nur über das App-SDK (Plus-Plan). Mignuti Chatbot lädt absichtlich nicht im Checkout — Chatbots lenken bei der Conversion ab. Falls du es brauchst, meld dich bei uns.
Webflow
- Project Settings → Custom Code → Footer Code.
- Embed-Snippet einfügen.
- Speichern → Publish.
Auf Staging (webflow.io-Domains) musst du die Staging-URL zu „Allowed Origins" in deinen mignuti-chatbot-Embed-Einstellungen hinzufügen. Das Widget bootet nicht auf nicht-allow-listed Origins — Anti-Key-Diebstahl-Schutz.
Plain HTML / statische Sites (Astro, Hugo, Eleventy, Jekyll)
Snippet ins Layout-Template einfügen, direkt vor </body>:
<!-- in deinem <body> -->
<script src="https://widget.mignuti.com/v1.js"
data-project="prj_…" data-secret="sec_…" async></script>
</body> React / Next.js
Sauberstes Pattern ist ein Layout-Effect, der das Script einmal injiziert:
// app/layout.tsx (Next.js 14 App Router)
import Script from 'next/script';
export default function RootLayout({ children }) {
return (
<html lang="de">
<body>
{children}
<Script
src="https://widget.mignuti.com/v1.js"
strategy="lazyOnload"
data-project="prj_…"
data-secret="sec_…"
/>
</body>
</html>
);
}
Warum lazyOnload: Das Widget ist nicht-kritische UI. Erst nach Window-Load laden hält
Largest Contentful Paint sauber.
Vue 3 / Nuxt 3
In nuxt.config.ts:
export default defineNuxtConfig({
app: {
head: {
script: [
{
src: 'https://widget.mignuti.com/v1.js',
'data-project': 'prj_…',
'data-secret': 'sec_…',
async: true,
},
],
},
},
}); Consent / Cookie-Banner
Mit data-consent="pending" (Default) startet Mignuti Chatbot keine Session, bis du
window.MignutiChatbot.setConsent('granted') aufrufst. Das verbindest du mit deinem Cookie-Banner-Akzeptieren-Button:
// nachdem der Besucher Marketing-/Funktional-Cookies akzeptiert:
window.MignutiChatbot?.setConsent('granted');
// nachdem der Besucher abgelehnt hat:
window.MignutiChatbot?.setConsent('denied'); // Widget blendet sich aus Mignuti Chatbot ist technisch ein „Funktional"-Cookie nach den meisten CMP-Kategorisierungen (speichert eine Session-ID in localStorage, damit das Gespräch über Page-Loads bestehen bleibt). DSGVO Art. 6 Abs. 1 lit. a (Einwilligung) ist die sauberste Rechtsgrundlage für B2C-Sites; B2B-Sites mit Berechtigtem-Interesse-Argument (Art. 6 Abs. 1 lit. f) funktionieren auch.
Fehlerbehebung
Meine Seite nutzt eine strikte Content-Security-Policy (CSP)
Das Widget braucht diese CSP-Freigaben — sonst lädt es zwar, aber Sessions/Antworten scheitern still:
script-src ... https://widget.mignuti.com;
connect-src ... https://widget.mignuti.com https://*.supabase.co;
font-src ... https://widget.mignuti.com; script-src: lädtv1.js.-
connect-src: Chat-Session, Antwort-Stream und UI-Übersetzungen (beide Hosts nötig). font-src: nur falls du in der Bot-Konfig eine eigene Schrift gewählt hast.
Der Launcher erscheint nicht
- DevTools → Network — wird
v1.jsmit Status 200 geladen? - Console — gibt es „origin_not_allowed"-Fehler? Host zu „Allowed Origins" hinzufügen.
- Sicherstellen, dass
data-secretgesetzt ist und mitsec_beginnt.
Bot antwortet, sagt aber oft „Das weiß ich nicht"
- Wissensbasis prüfen — ist der Dokument-Status „bereit" (nicht „wartend"/„fehlgeschlagen")?
- Similarity-Schwellwert in der Chatbot-Konfig prüfen (Standard 0,35) — bei knappem Inhalt leicht senken, bei irrelevanten Antworten leicht anheben.
- Q&A-Paare für die häufigsten unbeantworteten Fragen ergänzen (siehe „Offene Fragen"-Seite).
„Bot ist am Limit"-Nachricht
Du hast die Hard-Cap erreicht (3× Plan-Limit). Plan im Billing upgraden oder bis nächsten Monat warten. Die Hard-Cap existiert, damit ein außer Kontrolle geratenes Widget dir nie 10 000 € berechnet.
Widget bricht unser Site-CSS
Kann es nicht — das Widget läuft in einem closed Shadow Root mit :host { all: initial }. Falls du CSS-Bleed siehst, schreib uns an hello@mignuti.com
mit deiner URL — das wäre ein Bug, den wir wissen wollen.
Etwas, das nicht in den Docs steht?
Antwort an Werktagen innerhalb eines Arbeitstages.
hello@mignuti.com