Chatbot Pilot
Chatbot Pilot is een AI customer support chatbot voor WordPress. Hij komt als een floating chat widget op de frontend en een volledige administratie- omgeving in Instellingen → Chatbot Pilot. De plugin biedt twee operating modes:
- n8n mode — de widget stuurt elk bezoekersbericht via webhook door naar een externe n8n workflow. Gebruik dit wanneer je al automations, custom logic of third-party integraties buiten WordPress draait.
- Native RAG mode — de plugin indexeert je eigen site-content (posts, pages, custom post types) in chunks die in een lokale SQLite-database worden opgeslagen, haalt de meest relevante passages op tijdens query time en genereert een antwoord met de LLM-provider van jouw keuze (OpenAI, Anthropic Claude, Google Gemini, DeepSeek of een self-hosted Ollama-instance).
Beide modes delen dezelfde widget, hetzelfde conversation log en dezelfde feedback-/export-tools, dus je kunt op elk moment van backend wisselen zonder de bezoeker-facing ervaring te verliezen.

Voordelen
- Dual backend: n8n-webhook of volledig native Retrieval-Augmented Generation.
- Multi-provider LLM-ondersteuning: OpenAI, Anthropic Claude, Google Gemini, DeepSeek, Ollama (lokaal).
- Native RAG-engine met SQLite-storage, configureerbare chunk size en top-K retrieval.
- Background indexing via WordPress cron, zodat re-indexeren nooit de admin UI blokkeert.
- Customizable widget: positie, primary/background/text colors, user- en bot-bubble-colors, dimensies, border radius, typografie.
- Bewerkbare teksten voor welkomstbericht, subtitle, input-placeholder, loading-state en error-message.
- Conversation log met per-message feedback (thumbs up / thumbs down) en CSV-export.
- Ingebouwde health check die provider-connectivity, index-status en webhook-bereikbaarheid verifieert.
- Multilingual ready via Polyglot — widget-teksten en knowledge base kunnen per taal worden geserveerd.
Vereisten
De plugin is self-contained en vereist in Native RAG mode geen externe service buiten de LLM-API van jouw keuze. De meegeleverde vector store gebruikt SQLite, dat in elke standaard PHP-build beschikbaar is.
| Component | Aanbevolen |
|---|---|
| WordPress | 6.2 of nieuwer (getest tot 7.0) |
| PHP | 7.4 of nieuwer (8.x aanbevolen) |
| Database | MySQL/MariaDB voor WordPress-data, SQLite voor de vector-index |
| HTTPS | Vereist voor webhook- en provider-calls |
| Outbound network | Vereist om de geselecteerde LLM-provider te bereiken |
Voor n8n mode heb je daarnaast een bereikbare n8n-instance nodig met een
Webhook-node geconfigureerd om POST-requests te accepteren. Voor Ollama
heb je een draaiende Ollama-server nodig die bereikbaar is vanaf de
WordPress-host (meestal http://localhost:11434).
Installatie
- Open Plugins → Nieuwe plugin → Plugin uploaden in de WordPress-admin en upload het Chatbot Pilot ZIP-bestand.
- Activeer Chatbot Pilot.
- Open Instellingen → Chatbot Pilot. De plugin maakt zijn database- tabellen en default-opties aan bij de eerste load.
- Kies de backend mode (n8n of Native RAG) en rond de provider- configuratie hieronder af.
- Klik in Native RAG mode minstens één keer op Reindex om de knowledge base te vullen voordat je de widget aan bezoekers blootstelt.
- Bezoek een willekeurige publieke pagina op de frontend om te bevestigen dat de widget op de geconfigureerde positie verschijnt.
De widget wordt automatisch op elke pagina ge-enqueued zodra de plugin geconfigureerd is; geen shortcode of theme-edit nodig.
Configuratie
Het settings-scherm staat onder Instellingen → Chatbot Pilot en is verdeeld over zes tabs — General, AI / RAG, Appearance, Icons, Texts en Feedback. Alle waarden worden per site opgeslagen (of per network-site op multisite) en kunnen gewijzigd worden zonder opnieuw te indexeren, behalve de indexing-parameters zelf.
General

De General-tab bevat drie kaarten:
- License — plak je
PILOT-XXXX-XXXX-XXXX-XXXX-key en druk op Verify & Save om automatische plugin-updates te activeren. - General → Enable Chatbot — hoofdschakelaar om de widget op de site te tonen.
- Visibility → Hidden on these URLs — comma- of newline-separated
lijst van paden waarop de widget verborgen moet blijven (prefix-matches:
/loginverbergt ook/login/). - Balloon Notification — popt een balloon-style hint naast de
chat-bubble na een configureerbare delay (
Show Afterin seconden,0= direct) om aandacht te trekken.
Backend mode
Kies precies één backend. De keuze bepaalt welke volgende velden zichtbaar zijn.
- n8n webhook — de widget POST het bezoekersbericht, conversation ID
en huidige page URL naar de webhook die je opgeeft. De verwachte
response is een JSON-payload met een
reply-string die naar de gebruiker wordt terug gerenderd. - Native RAG — het request wordt in-process afgehandeld. De plugin haalt de top-K meest relevante chunks uit de lokale index, bouwt een prompt en roept de geconfigureerde LLM-provider aan.
n8n-instellingen
Alleen zichtbaar wanneer de backend mode is ingesteld op n8n webhook.
- Webhook URL — volledige HTTPS-URL van je n8n Webhook-node.
- Authentication header (optioneel) — naam en waarde van een header die bij elke request wordt meegestuurd, handig voor shared-secret- protected webhooks.
- Timeout — maximale tijd, in seconden, om op een reply te wachten voordat de errormelding aan de gebruiker wordt getoond.
AI provider (Native RAG)
Alleen zichtbaar wanneer de backend mode is ingesteld op Native RAG.

Selecteer één provider en vul de bijbehorende velden in:
| Provider | Notities |
|---|---|
| OpenAI | Beste overall kwaliteit met de GPT-4-familie. Vereist een API key van platform.openai.com. |
| Anthropic Claude | Sterke reasoning en tone control. Vereist een API key van console.anthropic.com. |
| Google Gemini | Snelle responses tegen competitieve prijzen. Vereist een key van Google AI Studio. |
| DeepSeek | Budget-vriendelijke optie met sterke performance op technische content. |
| Ollama | Draait lokaal. Configureer de base URL (default http://localhost:11434) en de modelnaam. Geen API key nodig. |
Elke provider toont dezelfde drie velden:
- API key (of base URL voor Ollama) — opgeslagen in de WordPress options-tabel; nooit aan de frontend blootgesteld.
- Model — de specifieke model-identifier om aan te roepen (bijvoorbeeld
gpt-4o-mini,claude-3-5-sonnet,gemini-1.5-flash,deepseek-chat,llama3.1:8b). - Test connection — stuurt een minimale ping naar de provider en rapporteert success of de verbatim error die door de API is teruggegeven. Draai dit altijd na het wijzigen van de key of het model.
Knowledge base
Regelt hoe de Native RAG-index gebouwd en bevraagd wordt. Wijzigingen aan de chunking-parameters worden effectief bij de volgende reindex.
- Source path — comma-separated lijst van post types (of een root URL)
om te ingesten. Laat op de default
post,pagestaan om de hele site te indexeren, of beperk tot een specifiek knowledge-base CPT. - Chunk size — token count van elke chunk geschreven naar de index.
Default
500. Kleinere chunks verbeteren retrieval-precisie; grotere chunks behouden meer surrounding context. - Top-K — aantal chunks dat per bezoekersvraag wordt opgehaald en als
context aan de LLM wordt doorgegeven. Default
5. - Reindex — plant een volledige rebuild via WP-Cron. De progress bar toont het aantal documents queued, processed en skipped. Terwijl de job draait blijft de bestaande index queries servicen.
- Clear index — drop elke rij uit de vector-tabel. Gebruik dit voordat je het embedding-model wisselt.
Appearance
Elk visueel aspect van de widget is bewerkbaar vanuit deze tab. De live preview rechts update meteen wanneer je waarden wijzigt.

Positie
- Bottom-right (default)
- Bottom-left
Colors
- Primary color — header background, send button, focus rings.
- Background color — achtergrond van het chat-venster.
- Text color — basis tekstkleur binnen het venster.
- User message color — bubble-achtergrond voor de bezoeker.
- Bot message color — bubble-achtergrond voor de assistant.
Dimensies
- Window width en window height — in pixels.
- Launcher button size — diameter van de floating button.
- Border radius — toegepast op het venster, de bubbles en de launcher.
Typografie
- Font family — erft standaard van het theme; kan overschreven worden met elke CSS font stack.
- Base font size — toegepast op de chat-body.
Icons

De Icons-tab koppelt branding los van de Appearance-tab, zodat je de launcher-, close- en send-iconen kunt wisselen zonder kleuren of maten aan te raken. De meegeleverde set dekt de meest voorkomende chat-patronen; het veld Custom URL accepteert elke publiekelijk bereikbare SVG of PNG.
Texts

Elke bezoeker-facing string staat op de Texts-tab, zodat je de widget kunt vertalen of herformuleren zonder het visuele theme aan te raken:
- Welcome message — eerste bericht dat getoond wordt zodra een bezoeker de widget opent.
- Subtitle — kleine tekst onder de title in de header.
- Input placeholder — tekst getoond in het lege input-veld.
- Loading text — getoond tijdens het wachten op de assistant reply.
- Error message — getoond wanneer de backend-call faalt of timeout geeft.
- Feedback prompt — tekst getoond boven de thumbs-up- / thumbs-down- controls (wanneer feedback ingeschakeld is).
- Balloon Notification text — tekst getoond in de balloon-hint.
Visibility-regels
- Show on — kies tussen All pages, Only on selected pages of Everywhere except selected pages. Page IDs worden als comma-separated lijst ingevoerd.
- Hide for logged-in users — toggelt de widget uit voor geauthenticeerde sessies.
- Mobile breakpoint — viewport-breedte waaronder de widget naar een compacte layout inklapt.
Feedback & analytics
- Enable feedback buttons — voegt thumbs-up- / thumbs-down-controls onder elk assistant-bericht toe.
- Store conversations — bewaart het volledige transcript in de
tabel
wp_chatbotpilot_conversationsvoor review en export. - Retention period — aantal dagen waarna opgeslagen conversations
door de daily cron-job worden gewist. Zet op
0om voor altijd te bewaren.
Health check
Het health-check-panel is altijd zichtbaar bovenaan het settings-scherm. Het runt drie probes en toont een gekleurde status-pill voor elke:
- Provider reachability — roept de LLM-API aan met een one-token-ping.
- Index status — telt chunks in de SQLite-store en rapporteert de timestamp van de laatste succesvolle reindex.
- Webhook reachability (n8n mode) — stuurt een
OPTIONS-request naar de geconfigureerde webhook-URL.
Elke niet-groene status is klikbaar en klapt uit naar de verbatim error die door de onderliggende call is teruggegeven, wat meestal genoeg is om het probleem te diagnosticeren.
Gebruik
Voor bezoekers
De widget verschijnt op elke pagina waar de visibility-regels gelden. De bezoeker klikt op de launcher-knop om het venster te openen, leest het welkomstbericht en typt een vraag in het input-veld. Het indrukken van Enter of de send-knop verstuurt het bericht; de widget toont de loading-tekst en rendert vervolgens de assistant reply met markdown- formatting (bold, links, ordered en unordered lists, code blocks).
Zijn de feedback-knoppen ingeschakeld, dan kan de bezoeker elk assistant- bericht beoordelen. De rating wordt opgeslagen tegen de message ID, zodat hetzelfde antwoord later in het admin-paneel kan worden gereviewd.
Voor beheerders
Dagelijkse administratie gebeurt op twee plekken:
- Instellingen → Chatbot Pilot voor configuratie en het health-check- panel.
- Chatbot Pilot → Conversations voor het conversation log en de feedback-export.

Het conversation log lijst elke sessie met de datum, de originating page, het aantal berichten en de aggregate feedback. Elke rij kan uitgeklapt worden om het volledige transcript te tonen, inclusief de retrieved context passages in Native RAG mode. De knop Export CSV bovenaan de lijst produceert een UTF-8 CSV met één rij per bericht; hij respecteert elk actief date- of rating-filter.
Reindexen na content-wijzigingen
De native index update zichzelf niet in real time. Trigger een reindex wanneer:
- Je een batch posts publiceert of substantieel bewerkt.
- Je de chunk size, de source path of het embedding-model wijzigt.
- Het health-check-panel stale of empty index-status rapporteert.
Voor incrementele updates reindexeert de plugin ook een enkele post bij save wanneer de optie Auto-reindex on save is ingeschakeld in de Knowledge Base-tab. Dit voegt een kleine overhead toe aan elke post-save maar houdt de knowledge base zonder handmatige interventie in sync.
Backends wisselen
Je kunt op elk moment tussen n8n en Native RAG wisselen. De widget, het conversation log en de feedback-store worden over modes gedeeld. Bij het voor het eerst overstappen op Native RAG: vergeet niet Reindex te draaien voordat de widget vragen kan beantwoorden.
Screenshots
De screenshots hieronder corresponderen met de vier hoofd-gebieden van de admin-interface en de frontend widget.
Frontend chat widget

AI provider configuratie

Widget appearance editor

Conversation log en feedback-export

FAQ
Welke backend moet ik kiezen?
Gebruik Native RAG wanneer het je doel is om vragen te beantwoorden over je eigen site-content en je een self-contained oplossing wilt die alleen een LLM API key nodig heeft. Gebruik n8n wanneer je de chatbot wilt combineren met externe tools (CRM-lookups, ticketing, custom routing), of wanneer de conversation acties buiten WordPress moet triggeren.
Moet ik n8n installeren om de plugin te gebruiken?
Nee. n8n is alleen nodig wanneer je n8n als backend mode selecteert. Native RAG mode is volledig self-contained.
Wordt mijn data naar een derde partij gestuurd?
In Native RAG mode worden elke prompt en de retrieved context naar de LLM-provider gestuurd die je geselecteerd hebt. Is dit onaanvaardbaar, draai de plugin dan tegen een lokale Ollama-instance — er verlaat dan geen data de server. In n8n mode wordt elk bericht naar je eigen n8n-endpoint gestuurd; wat daarna gebeurt hangt af van de workflow die je bouwt.
Waar wordt de index opgeslagen?
De vector-index is een SQLite-bestand in wp-content/uploads/chatbot-pilot/.
De WordPress options-tabel houdt de chatbot-configuratie, en de tabel
wp_chatbotpilot_conversations houdt het conversation log.
Kan ik het op een meertalige site gebruiken?
Ja. Met Polyglot geïnstalleerd ingest de indexer de vertaalde versies van elke post en wordt de widget-tekst per taal geserveerd. Zonder Polyglot kun je nog steeds één widget per taal draaien door de source path te beperken tot taal-specifieke categorieën.
Ondersteunt het custom post types?
Ja. Voeg de CPT-slugs toe aan het veld Source path, comma-separated, en reindex.
Kan ik conversations exporteren?
Ja. De knop Export CSV op het Conversations-scherm produceert een UTF-8 CSV-bestand met één rij per bericht, inclusief de rating, de timestamp, de originating page en de volledige berichttekst.
Hoe verwijder ik de data van een bezoeker?
Open Chatbot Pilot → Conversations, filter op session ID of op IP en gebruik de Delete-actie op de matchende rijen. De conversation en zijn feedback-entries worden meteen verwijderd.
Werkt de widget zonder JavaScript?
Nee. De widget is een JavaScript single-page component; hij valt niet gracieus terug op een noscript-fallback.
Troubleshooting
De widget verschijnt niet op de frontend
- Verifieer dat de backend mode is ingesteld en dat de relevante credentials (API key of webhook URL) zijn opgeslagen.
- Check de visibility-regels — de pagina kan uitgesloten zijn.
- Inspecteer de browser console: een 4xx-response van
admin-ajax.phpduidt meestal op een permissions- of nonce-probleem veroorzaakt door een agressieve cache-plugin.
De assistant antwoordt met de errormelding
Open het health-check-panel en klik op de rode status-pill om de provider-error verbatim te lezen. Veel voorkomende oorzaken:
- Verlopen of ingetrokken API key.
- Het geselecteerde model is niet beschikbaar voor je account of regio.
- Rate limit overschreden — wacht of upgrade het provider-plan.
- De webhook-URL geeft een non-2xx-status terug.
Reindexen lijkt vast te zitten
WordPress cron vuurt alleen wanneer de site verkeer ontvangt. Trigger
een handmatige page hit, of roep wp cron event run --due-now aan vanuit
WP-CLI. De progress bar ververst elke paar seconden terwijl de job draait.
Antwoorden zijn off-topic of gehallucineerd
- Reindex na recente content-edits.
- Verhoog Top-K om het model meer context te geven.
- Verlaag Chunk size voor finer-grained retrieval, daarna reindexen.
- Probeer een sterker model (bijvoorbeeld overschakelen van GPT-4o-mini naar GPT-4o, of van Gemini Flash naar Gemini Pro).
Ollama-replies zijn erg traag
Lokale inference-snelheid hangt volledig af van de host. Gebruik een
quantized model (:q4_K_M of vergelijkbaar), zorg dat GPU-acceleratie
ingeschakeld is en houd de chunk size en top-K bescheiden.
Conversations worden niet opgeslagen
Bevestig dat Store conversations ingeschakeld is in de tab
Feedback & analytics en dat de tabel wp_chatbotpilot_conversations
bestaat. De plugin deactiveren en heractiveren maakt ontbrekende
tabellen opnieuw aan.