Skip to content
Mignuti Chatbot

Docs

Mignuti Chatbot is a Web Component. If your platform lets you paste a <script> tag, you can embed Mignuti Chatbot. Below: the 60-second quickstart plus eight platform-specific recipes.

Not technical? For WordPress there's a no-code plugin. For every other platform it's one line your team can paste in two minutes.

Quickstart (60 seconds)

  1. Sign up at /en/signup (free, no credit card).
  2. Onboarding wizard creates your first project. Choose a vertical template or upload a document (PDF, text, Markdown) or paste a URL.
  3. Step 3 generates your embed code — one line of HTML with a data-project attribute.
  4. Paste that line into your site. Reload. The chat launcher appears bottom-right.

Embed-tag anatomy

<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: public key, safe to expose in HTML.
  • data-secret: bcrypt-bound, validated server-side. Without it, the widget will not boot.
  • data-consent: defaults to pending — the widget waits for an explicit window.MignutiChatbot.setConsent('granted') call before it loads sessions or writes localStorage. Wire that into your cookie banner (see Consent).
  • async: never blocking. The widget weighs about 37 KB (gzip).

WordPress

Three options, in order of preference:

1. Plugin "Mignuti Chatbot" (recommended)

The dedicated plugin sets itself up in one click — including page targeting, a GDPR consent bridge (Borlabs, Complianz, Cookiebot, Usercentrics, Real Cookie Banner) and a "Test connection" button. On the official directory since 26 September 2026: wordpress.org/plugins/mignuti-chatbot. All the details →

Alternative: download the ZIP (18 KB)
  1. WP-Admin → Plugins → Add New → search for "Mignuti Chatbot" → Install Now → activate. (Or upload the ZIP via Upload Plugin — same version.)
  2. Settings → Mignuti Chatbot → click "Connect with Mignuti", pick your project — key and domain are set automatically.

Updates arrive automatically through the directory, alongside your other plugin updates. Prefer no connect flow? Enter data-project + data-secret by hand under "Enter details manually".

2. Header-footer-injection plugin (Insert Headers and Footers, WPCode)

Paste the embed snippet into the "Body" or "Footer" hook. Works on any 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>';
});

JTL-Shop

JTL-Shop 5 has a dedicated plugin — no template editing:

Download the JTL-Shop plugin (ZIP)
  1. Shop admin → Plugins → Plugin manager → Upload → pick the ZIP → install.
  2. Plugins → Mignuti Chatbot → Settings: enter data-project (project ID) and secret from the Mignuti admin → Embed, pick the consent mode and an optional accent color.
  3. Important — clear the cache: System → Cache → "Clear entire object cache" AND "Clear entire template cache". Only then does the chat appear in the storefront.

The plugin appends the loader before </body> on every storefront page, with optional hiding for logged-in customers and during checkout. Remember to add your shop domain under Embed → Allowed domains in the Mignuti admin.

Shopware 6

Shopware 6 has a dedicated plugin — no theme editing:

Download the Shopware plugin (ZIP)
  1. Admin → Extensions → My extensions → Upload extension → pick the ZIP → install & activate.
  2. Extensions → Mignuti Chatbot → Config: enter data-project (project ID) and secret from the Mignuti admin → Embed, pick the consent mode.
  3. Clear the storefront cache — the chat appears on every storefront page.

Optionally hide it in cart/checkout and for logged-in customers. All the details →

Shopify

  1. Online Store → Themes → Edit code on your live theme.
  2. Open layout/theme.liquid.
  3. Paste the embed snippet just before </body>.
  4. Save. The widget appears on storefront, product, cart and collection pages.

For checkout pages, Shopify only allows scripts via the App SDK (Plus plan). Mignuti Chatbot is intentionally not loaded on checkout — chatbots distract during conversion. If you need it, contact us.

Webflow

  1. Project Settings → Custom Code → Footer Code.
  2. Paste the embed snippet.
  3. Save → Publish.

On staging (webflow.io domains) you must add the staging URL to Allowed Origins in your Mignuti Chatbot Embed settings. The widget refuses to boot on un-allow-listed origins as anti-key-theft.

Plain HTML / static sites (Astro, Hugo, Eleventy, Jekyll)

Paste the snippet into your layout template, just before </body>:

<!-- in your <body> -->
<script src="https://widget.mignuti.com/v1.js"
  data-project="prj_…" data-secret="sec_…" async></script>
</body>

React / Next.js

The cleanest pattern is a Layout-level effect that injects the script once:

// app/layout.tsx (Next.js 14 App Router)
import Script from 'next/script';

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <body>
        {children}
        <Script
          src="https://widget.mignuti.com/v1.js"
          strategy="lazyOnload"
          data-project="prj_…"
          data-secret="sec_…"
        />
      </body>
    </html>
  );
}

Why lazyOnload: the widget is non-critical UI. Loading it after window-load keeps Largest Contentful Paint clean.

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,
        },
      ],
    },
  },
});

With data-consent="pending" (the default), Mignuti Chatbot does not start any session until you call window.MignutiChatbot.setConsent('granted'). Hook this into your cookie-banner accept-button:

// after the visitor accepts marketing/functional cookies:
window.MignutiChatbot?.setConsent('granted');

// after the visitor refuses:
window.MignutiChatbot?.setConsent('denied');  // widget hides itself

Mignuti Chatbot is technically a "functional" cookie under most CMP categorisations (it stores a session id in localStorage so the conversation persists between page-loads). DSGVO Art. 6(1)(a) consent is the cleanest legal basis for B2C sites; B2B with legitimate-interest argument also works.

Connect a Dropbox folder

Instead of uploading files you can connect a Dropbox folder: the bot reads new and changed files by itself, deleted ones disappear from the knowledge base again. Available from the Standard plan up.

  1. In the dashboard go to Knowledge → Add knowledge → Dropbox folder, then Connect Dropbox.
  2. Approve access at Dropbox. This creates the folder Apps/Mignuti Chatbot in your Dropbox — that folder is all we see.
  3. Drop files into it and hit Sync now (or wait for the schedule).

You can optionally name a subfolder when connecting, for example /Manuals. The bot then reads only that part.

What gets read

  • Formats: PDF, TXT, Markdown — up to 25 MB per file. Everything else is left alone.
  • Sync: daily, weekly, monthly or on demand only. The fastest cadence depends on your plan, same as with URL crawling.
  • Read-only: we never write, move or delete anything in your Dropbox — not even when you delete a document on our side.
  • Volume limit: the same document limit as for uploads applies. Once it is reached, the source shows "limit reached" and stops reading further files.

Which way deleting works

  • File deleted in Dropbox → the document leaves the knowledge base on the next sync.
  • Document deleted on our side → it does not come back, and the file in your Dropbox stays untouched.
  • Connection removed → all documents read from it are deleted and the token is revoked at Dropbox.
The folder stays empty / nothing is read
  • Are the files really in Apps/Mignuti Chatbot? If a second folder with the same name exists under Apps, Dropbox simply reports an empty folder to us — no error.
  • Has the Dropbox client finished uploading (green check)? Half-synced files are not visible to our request yet.
  • Is the format supported? Spreadsheets, slides and images are skipped on purpose — the source shows them as "skipped".

Connect Google Drive

On Drive you pick individual files instead of a folder, in the familiar Google dialog. We only ever see what you click there. Available from the Standard plan up.

  1. Knowledge → Add knowledge → Google Drive, then Connect Google Drive and approve at Google.
  2. Pick files opens the Google dialog. Multi-select works, and you can extend the list at any time.
  3. Done — the first sync runs immediately, after that on your chosen schedule.

What gets read

  • Formats: PDF, TXT, Markdown and Google Docs — the latter are pulled as plain text, which works better for a chatbot than a PDF. Sheets and slides are left alone.
  • Size: up to 25 MB per file.
  • Access: only the files you picked, read-only. The rest of your Drive stays invisible to us — not as a promise, but by the shape of the permission you grant.

How to remove files again

  • Remove from the selection (the cross next to the file name) → the document leaves the knowledge base, the file in your Drive stays.
  • Deleted or trashed in Drive → disappears on the next sync.
  • Connection removed → all documents read from it are deleted and the grant is revoked at Google.
The Google dialog does not open
  • Is a browser extension blocking apis.google.com? The file picker loads from there.
  • Message "The API developer key is invalid": then the instance's Google configuration is off — hosted with us? Drop us a line and we will check.

Leads to your CRM (Zapier, Make, n8n)

Mignuti Chatbot scores every conversation with a lead score (0–100) and captures the visitor's email when they share it. Push hot leads (score ≥ 70) to your CRM automatically via webhook — no coding. You can also browse them anytime in the admin under Leads (with CSV export).

  1. In Zapier, Make or n8n create a Webhook / Catch Hook trigger and copy the URL.
  2. In the admin under Integrations → Webhooks create a subscription with that URL and select the hot_lead event.
  3. In the CRM step map data.lead_email to the contact email; lead_score and intents as a note. Ready for HubSpot, Pipedrive, Salesforce, Google Sheets, Slack, Notion …

Example payload (POST, JSON):

{
  "id": "hot_lead:8f3c…",
  "event": "hot_lead",
  "occurred_at": "2026-08-27T10:15:00Z",
  "data": {
    "conversation_id": "8f3c…",
    "project_id": "a91b…",
    "lead_score": 82,
    "lead_email": "customer@example.com",
    "intents": ["buying_intent", "price_question"],
    "first_message": "How much is the Enterprise plan?"
  }
}

Every request is HMAC-SHA256 signed. Verify the header and reject requests older than 5 minutes:

x-mignuti-chatbot-signature: t=<ts>,v1=<sig>
x-mignuti-chatbot-timestamp:  <unix-seconds>
x-mignuti-chatbot-event:      hot_lead

// sig = HMAC_SHA256(secret, ts + "." + rawBody)   // hex

The secret is shown once when you create the subscription. No automation tool? The CSV export on the Leads page works with any CRM.

Troubleshooting

My site uses a strict Content-Security-Policy (CSP)

The widget needs these CSP allowances — otherwise it loads but sessions/answers fail silently:

script-src  ... https://widget.mignuti.com;
connect-src ... https://widget.mignuti.com https://api.chatbot.mignuti.com;
font-src    ... https://widget.mignuti.com;
  • script-src: loads v1.js.
  • connect-src: chat session, answer stream and UI translations (both hosts required).
  • font-src: only if you picked a custom font in the bot config.
The launcher does not appear
  • Open DevTools → Network — is v1.js loaded with status 200?
  • Console — any "origin_not_allowed" errors? Add the host to Allowed Origins.
  • Make sure data-secret is present and starts with sec_.
The bot answers but says "I don't know" a lot
  • Check the Knowledge-base — is your document status "ready" (not "pending"/"failed")?
  • Check the similarity threshold in the chatbot config (default 0.35) — lower it slightly for thin content, raise it if answers feel off-topic.
  • Add Q&A pairs for the most-asked unanswered questions (see Pending Questions page).
"Bot is at quota" message

You hit the hard cap (3× plan limit). Upgrade your plan in Billing or wait until next month. The hard cap exists so a runaway widget cannot bill you €10 000.

Widget breaks our site CSS

It cannot — the widget runs inside a closed Shadow Root with :host { all: initial }. If you see CSS bleed, open an issue at media@mignuti.com with your URL — that would be a bug we want to know about.

Stuck on something not in the docs?

Reply within one business day on weekdays.

media@mignuti.com

Blutcode akzeptiert · A B A C A B B

Du kennst den Code. Wir mögen dich jetzt schon.

Das war der Mortal-Kombat-Blutcode vom Sega Mega Drive — nicht das ABACAB-Album von Genesis. Respekt fürs Erinnern.

Dein Rabattcode: MORTALCOMBAT — beim Upgrade einlösen.

Und wenn du so genau hinschaust: wir stellen ein →