Operator guide
Running AnswerRails once it is answering: what to put in the knowledge base, what gets logged and for how long, how to answer a data request, how to hand a visitor to a person, and how to remove it all again.
Five things you will actually do, in the order you are likely to meet them. Getting started covers installing and connecting a provider; this page picks up after that.
- 1. Building your knowledge base — the four ways in, sync, and what to expect from each.
- 2. Consent, retention and browser storage — the switches, and what each one commits you to.
- 3. Handling a data request — export, erasure, and the one WordPress quirk that catches everyone.
- 4. Escalations to a person (Pro) — triggers, recipients, and what the assistant will and will not promise.
- 5. Uninstalling and removing data — what goes, what stays, and the setting that decides.
1. Building your knowledge base
Everything lives under AnswerRails → Knowledge Base. What you put in decides what the assistant can answer; nothing else does.
That screen’s settings carry Enable Knowledge Base, ticked from the start. It is the switch for turning grounding off rather than a step in turning it on: unticked, the assistant neither searches your knowledge base nor receives the index of what pages your site has, so it answers from nothing of yours.
The four ways in
- Site Content (pages and posts). A multi-select picker with search and category filters that adds existing content in bulk. Rows already in the knowledge base are badged, so re-running the same selection safely skips them, and anything already added is kept if you navigate away mid-batch. Results are paged, and selecting everything that matches reports its own limit. Pro adds WooCommerce products here.
- Upload Document. Upload a file and give it a title, which defaults to the filename. Plain text (.txt, and Markdown where your WordPress allows .md uploads) is read straight into the local index. Other file types are indexed locally by title only, so use plain text for anything you want the local index to search. With vector search on, the file itself is uploaded to your vector store.
- Structured Data (JSON). Paste valid JSON holding structured facts: FAQs, specifications, price lists. A JSON item can also be declared as a cross-reference table — surname to clan, SKU to product, synonym to page — and the assistant then runs a focused follow-up search when a visitor’s question matches a term in it.
- External URLs (Pro). A page beyond your WordPress site, fetched and kept current.
An example: a small roofing business
Take a small roofing business with a handful of pages and a steady stream of the same questions. Its knowledge base might look like this.
- Site Content: the services page, the areas-covered page and the contact page, so the assistant can say what you do, whether you cover a caller’s town, and how to ask for a quote. These track their source, so adding a town to the areas page changes the answer.
- Upload Document: the guarantee terms as a plain-text file, so the assistant can say what is covered on a new roof, what is covered on a repair, and for how long.
- Structured Data (JSON): opening hours, and a short FAQ — whether a survey is free, whether gutter work needs scaffolding, typical lead times, which payment methods you take.
- External URLs (Pro): your entry on a trade body’s register, so an accreditation question is answered from the page that proves it.
A visitor then asks “Do you cover Linlithgow?”, “Are you open on Saturdays?”, “Will I need scaffolding for a chimney repair?” or “What is the guarantee on a new roof?” and gets an answer drawn from those items, with the source named beneath it. Ask about something none of them cover — a trade you do not offer — and the assistant says so rather than guessing.
Sync, and what “Auto” means
Items drawn from pages, posts, products and URLs track their source: an edit propagates when you save the page, or within the hourly sync. Switch an item to Manual to pin the copy you vetted; switching back to Auto refreshes it immediately. Documents and JSON have no source to track — the stored copy is the source.
If a source page disappears, the item shows Source unavailable, its last good copy keeps answering for 24 hours, and then it is withdrawn from answers until the source returns.
Bulk sync reports each item’s outcome — how many synced, how many failed — and will not report success over a failure. An item that failed carries a persisted Sync failed mark, so when you come back you can tell “never tried” from “tried and failed”, and Last Synced is the server’s answer rather than the browser’s. If the plugin’s temporary folder is not writable by PHP, the Knowledge page warns you before you sync rather than after.
Higher-quality search with a vector store
Out of the box your knowledge base is indexed and searched locally, in your own WordPress database, with a keyword index. That works with any provider and needs no extra account. Adding an OpenAI key lets you optionally enable vector search, which matches on meaning rather than keywords and usually answers more accurately; your knowledge is then also synced to a vector store on your own OpenAI account, and the local index stays as the automatic fallback if vector search ever fails.
Vector search is used whichever provider writes the reply, so you can chat with Mistral or Claude and still search with OpenAI. The OpenAI key for vector search has its own field on the Knowledge screen’s settings, reachable whatever your chat provider is. Paste it, then either paste an existing vector store ID or leave the field blank and create a new store, save, and use Sync all to vector store to upload what you already have. New items sync as they are added, and the Knowledge Base header then reads Vector search active.
The Retrieval setting’s Auto (recommended) uses vector search when it is configured and the local index otherwise. Local keyword only bypasses vector search entirely, which is a useful way to see how your content answers on keywords alone.
Worth knowing
On a single-item knowledge base the local keyword index scores everything near zero, so add several items before judging results. Items are view-only after creation: to change one, delete it and add it again. Each answer draws on the five most relevant passages, and Pro adds a dial for that number. Cost per answer lands on your own provider account, so a focused knowledge base is cheaper to run than a sprawling one.
2. Consent, retention and browser storage
All of it lives under AnswerRails → Chat Settings → Privacy & Compliance, and nothing is logged until you switch it on. Consent, privacy and retention is the full page; this is the short form of what you set and in what order.
Decide whether to log at all.
Log Conversations is off on a new install. Turn it on and choose a Logging Mode: anonymised keeps the transcript against a one-way hashed session id and no personal data; identified also stores IP address, user agent and referrer, and requires consent.
Set retention.
Retention Period defaults to 180 days and accepts 1 to 365. A daily task removes identified logs older than that. Anonymised logs are kept, and anything under a legal hold is skipped.
Choose what the visitor’s browser keeps.
Browser Storage Policy is Persistent (history survives between visits), Session Only (cleared when the tab closes, the default) or No Storage. Auto-Clear After wipes stored history older than the minutes you set; 0 disables it. Window size and position are kept whatever you choose, because they hold no conversation data.
Switch consent on if you need it.
Require User Consent shows a consent dialogue before any chat interaction, and is mandatory if you log in identified mode. The message box and send button are genuinely disabled until the visitor agrees, not merely covered over. Leave Consent Text blank to use the built-in default, which follows your logging mode; Restore Default puts it back if you have edited it. Your own wording accepts links, bold, italics and line breaks, and the placeholder {retention_days} inserts your retention period.
Each agreement is recorded server-side as a receipt carrying the timestamp and a hash of the exact text the visitor saw. Visitors can withdraw from inside the chat with Edit consent; the conversation confirms that logging has stopped and that it will not be restored on reload, and the browser’s association with that session is deliberately severed. Receipts are append-only and readable in the Privacy panel on Chat Logs.
Write your consent text to match your actual settings: name your provider, and say whether transcripts are kept and for how long. Settings → Privacy → Policy Guide in WordPress holds AnswerRails’ suggested privacy-policy wording, which reflects the settings you have actually chosen and is re-flagged for review when you change them.
If you run a consent manager
AnswerRails sets no cookies. Everything it keeps in the visitor’s browser is first-party browser storage — seven entries in all: five holding conversation state under your browser-storage policy, two holding the chat window’s size and position — and it describes each of them, with its purpose and how long it lasts, to the WordPress consent standard (the WP Consent API, a separate plugin that AnswerRails does not require) and registers itself with Complianz, where it is verified. A cookie policy generated by a consent manager that reads those declarations lists AnswerRails by name, with our descriptions, rather than as an unknown service. That is a description of what the plugin stores. The plugin does not read the consent manager’s decision itself; the gate on chat is your own Require User Consent setting above.
If a consent manager blocks the widget, allow the AnswerRails script in that manager’s own per-script list — in Complianz, Complianz → Integrations → Script Center → Whitelist a script, iframe or plugin — and clear your page cache, rather than turning its blocker off for the whole site.
3. Handling a data request
Two routes, and they work together. Both are free.
A request from a named person
Use Tools → Export Personal Data or Tools → Erase Personal Data and enter the requester’s email address. WordPress sends them a confirmation link, so identity is verified for you, and AnswerRails’ chat data is included alongside every other plugin’s.
This is a quirk of WordPress core, not of AnswerRails: Complete request only marks the row as done, without erasing anything. Use Erase personal data or Force erase personal data on the request row.
A request that arrives without an email address
The Privacy panel on AnswerRails → Chat Logs searches by email address, session id or IP address and shows everything held about that person. From there: Export as JSON, Anonymise (the recommended action, which strips identifying metadata and redacts the email and phone number from the transcript itself), or Delete everything. Searches are not logged; exports, anonymisations and deletions are.
Erasure keeps one thing deliberately: a minimal consent receipt — session id and timestamp, with IP, user agent and referrer stripped — as evidence that consent was given. The export reports these as retained items.
Legal hold
From a conversation’s row actions you can Place hold. A held record cannot be deleted or anonymised, including by a subject erasure, until you release it; export is unaffected, so the person can still receive their copy. A hold is placed automatically when the moderation layer detects self-harm signals or ends a session for abuse. Where an erasure is blocked by a hold the record is flagged, and once the hold is released an admin notice asks you to complete or dismiss it. Whether the retention is justified is your decision as data controller.
The panel also shows the recent hold and data-request events and an erasure log. Neither contains personal data, and neither is exported or erased by a subject request. The audit trail is not tamper-evident — it is your own processing record, not independent proof.
4. Escalations to a person (Pro)
An escalation hands a conversation to a human: a visitor’s message matches a trigger, your team is emailed a portion of the transcript, the visitor is told, and, if you want, asked for contact details. This is a Pro capability. On the free plugin there is no handoff machinery, and the assistant never offers one — it points visitors at your site’s usual contact routes instead. Settings live under AnswerRails → Advanced Features → Escalations.
- Enable escalations to humans is the master switch. With it off, nothing below takes effect.
- Escalation recipient is where alerts go, defaulting to the site admin email. Without a recipient the route cannot complete.
- Trigger phrases are case-insensitive and match anywhere in the visitor’s latest message; defaults include “speak to someone”, “contact support” and “talk to a human”. Trigger keywords are exact word matches, defaulting to complaint, refund and urgent. Separate entries with commas or new lines. The defaults apply only until you save your own list.
- Notify customer when escalated shows a confirmation in the chat, which you can reword.
- Collect contact details asks for an email address or phone number after escalating and emails it to your recipient. By default the acknowledgement confirms where the follow-up will reach them, using a masked form of what they typed, so raw contact details never enter the transcript. Your own wording is used as you write it.
- Rate limit — a window in seconds and a maximum number of events in it, two per 300 seconds by default — stops one session flooding your inbox.
The assistant offers a handoff only where the route actually exists: escalations on, and a recipient set. It will not say it can connect someone to your team when it could not honour that. Where the rate limit is holding, the plugin answers rather than letting the model invent a route — saying that a request really has gone to your team where one did, and claiming nothing where none did. If you run escalations silently, with no notice configured, that stays silent. If the email cannot be sent, the visitor is told the request did not reach your team and asked to try again shortly, and a contact detail that could not be passed on is not confirmed. Chat Logs record for each escalation whether the email was sent, the escalation count includes only those that were, and a notice on the AnswerRails admin screens tells you how many notification emails have failed and when the last one did. Email leaves through whatever mail route your WordPress site already uses, so that notice points at your host or mail plugin, not at these settings.
Escalation emails carry transcript content, so make sure your privacy notice says so. Escalations are recorded on the conversation in Chat Logs, and the Business Intelligence screen lists the unanswered questions that led to them.
5. Uninstalling and removing data
One setting decides how much goes: AnswerRails → Chat Settings → Privacy & Compliance → Delete All Data on Uninstall. It is off by default.
Removed whatever you choose: your provider API keys, the reCAPTCHA secret, any legacy licence rows, every plugin cache and transient including per-session consent state, and all scheduled tasks. Secrets never survive an uninstall.
With the setting off, your content and records are kept so a reinstall finds everything intact: the knowledge base and its local index, chat logs, consent receipts and your settings.
With the setting on, uninstalling permanently deletes every knowledge item, chat log, consent receipt and captured record, the local index table and every plugin setting — including logs currently under legal hold and stored consent receipts. As the data controller, satisfy yourself that no retention obligation applies before you enable it.
Three things to know. Licence and account data belongs to the licensing SDK, is shared with any other Freemius-powered plugin on the site, and is never touched by AnswerRails even with the setting on. Cleanup runs only when you uninstall from the WordPress admin at Plugins → Delete; deleting the files over FTP bypasses it, as it would for any plugin. And deactivating is not uninstalling — deactivation stops the widget and clears the scheduled tasks, and deletes nothing.
Chat history already stored in a visitor’s own browser follows your browser-storage policy and auto-clear timer, not the uninstall.