Title: AnswerRails
Author: celtic3d
Published: <strong>November 3, 2026</strong>
Last modified: November 3, 2026

---

Search plugins

![](https://ps.w.org/answerrails/assets/banner-772x250.png?rev=3781976)

![](https://ps.w.org/answerrails/assets/icon.svg?rev=3781976)

# AnswerRails

 By [celtic3d](https://profiles.wordpress.org/celtic3d/)

[Download](https://downloads.wordpress.org/plugin/answerrails.1.0.1.zip)

 * [Details](https://wordpress.org/plugins/answerrails/#description)
 * [Reviews](https://wordpress.org/plugins/answerrails/#reviews)
 *  [Installation](https://wordpress.org/plugins/answerrails/#installation)
 * [Development](https://wordpress.org/plugins/answerrails/#developers)

 [Support](https://wordpress.org/support/plugin/answerrails/)

## Description

AnswerRails adds a trustworthy AI customer service assistant to your WordPress site—
a chat widget that answers visitor questions, grounded in your own content, with
the guardrails and privacy controls a business needs.

It keeps AI assistants on track and on message: answers are grounded in your knowledge
base, kept within configurable limits, and logged according to your privacy policy.

**AnswerRails is a complete, compliance-first assistant.** Any AI provider, any 
model in the catalogue, using your own API key. Answers cite their sources. The 
assistant admits what it doesn’t know instead of inventing something. Every visitor
message is checked for abuse before it reaches your provider — with no off-switch.
And it includes **every privacy and compliance control it has**: conversation logging
modes, retention, consent receipts, browser-storage policy, auto-clear, and full
GDPR data-request tooling.

AnswerRails Pro is a separate plugin that adds further knowledge source types, conversation
analytics, and human-handoff escalations. It is listed further down.

**Key features**

 * **Front-end chat widget** — clean, accessible UI with configurable title, subtitle,
   avatar, welcome message, and a configurable floating launcher. Themeable to your
   brand (with automatic dark mode and contrast-checked colours), draggable and 
   resizable on desktop, and a full-screen takeover experience on phones.
 * **Accessible to every visitor (WCAG 2.2 AA)** — because the widget lives on YOUR
   site, its accessibility is part of your site’s conformance, and we build for 
   that: screen-reader announcements for every answer and status change, full keyboard
   operation, proper dialog and conversation-log semantics, visible focus, reduced-
   motion support, and an admin contrast guard so your brand colours never make 
   the chat unreadable. Tested with a screen-reader protocol on real assistive technology.
 * **Any provider, any model, your own key** — OpenAI, Anthropic Claude, or Mistral,
   with every model in the catalogue included. New installs default to Mistral’s
   free tier, which is well suited to evaluating AnswerRails; for a live site we
   recommend a paid model — pay-as-you-go on Mistral, or credit on OpenAI or Anthropic—
   because free mode has no reserved capacity. Usage is billed to your own provider
   account; there is no middleman.
 * **Knowledge grounding** — answer from your own documents and content rather than
   generic model knowledge. Load your existing site content in bulk: a multi-select
   picker adds pages and posts to the knowledge base with search, filters, and per-
   item progress — the fastest route from a fresh install to grounded answers (pages,
   posts, documents and JSON; WooCommerce product and external-URL sources are in
   AnswerRails Pro, a separate plugin). Items sourced from posts, pages, products,
   or URLs stay current automatically: edits propagate on save or within the hourly
   sync, and if a source disappears the item shows a visible “Source unavailable”
   state and is withdrawn from answers rather than serving stale text indefinitely.
   Prefer an approved snapshot? Any tracked item can be switched to Manual — pinned
   to the copy you vetted — and back again, at any time.
 * **Answers that show their working** — grounded answers cite their sources, shown
   to the visitor as a “Sources” list under the reply (with an owner toggle).
 * **Honest by design** — when your knowledge base can’t support an answer, the 
   assistant says so plainly instead of inventing one or over-promising; structured,
   policy-checked responses are how citations and honesty flags come back reliably.
   A reliability guardrail backs this up deterministically: an answer that invents
   a link to a page on your own site that doesn’t exist is never served, and substantive
   answers with no knowledge-base backing are declined rather than improvised.
 * **Links that tell the truth** — the assistant carries a live index of your site’s
   real published pages, so it links only to pages that actually exist and can honestly
   say when you don’t have something. A mistyped internal link is repaired to the
   real page when exactly one confident match exists; a link that misrepresents 
   its target is stripped before serving; an invented link still means the answer
   is never served. You control how much of the index is shared per answer.
 * **Cross-reference tables** — declare a JSON knowledge item as a cross-reference(
   surname  clan, SKU  product, synonym  page) and the assistant follows the mapping:
   when a visitor’s question matches a term, it runs a focused follow-up search 
   on what it maps to before answering. Deterministic — no model decides whether
   it runs — and it works inside nested documents (pick the section, or several;
   the rest of the document keeps grounding answers as normal).
 * **Outage-resilient answers** — your knowledge base is also indexed locally in
   your own WordPress database; if the cloud knowledge-search service has an outage,
   the assistant automatically falls back to the local index and keeps answering
   from your content instead of handing visitors off.
 * **Reliability-focused routing & health dashboard** — automatic failover between
   AI endpoints, plus an at-a-glance system health view: which model is answering,
   whether knowledge search is healthy, and what happens at each stage of the pipeline—
   with a one-click test of every service the assistant depends on.
 * **The complete privacy & compliance layer, all of it included** — configurable
   conversation logging (off / anonymised / identified), retention period, consent
   prompts, and disclaimer text. Consent is recorded server-side as receipts (including
   the disclaimer text agreed to), and visitors can withdraw consent from inside
   the chat as easily as they gave it. You also control what the chat keeps in the
   visitor’s own browser: storage policy (local, per-session, or nothing at all)
   and an auto-clear timer. GDPR data-request tooling is built in: WordPress’s own
   Export/Erase Personal Data flows cover chat data, and a Privacy panel on the 
   Chat Logs screen finds, exports, anonymizes, or deletes everything stored about
   a person — with an audit trail recording holds, requests, and blocked operations.
   Uninstalling is clean by default: keys and secrets are always removed, while 
   your content and records are deleted only if you explicitly opt in. **Every control
   listed here is part of this plugin** — a compliance control you cannot reach 
   is a compliance control you do not have.
 * **Spam & abuse protection** — optional Google reCAPTCHA v3 on the chat endpoint
   with a tunable score threshold, plus built-in rate limiting. The reCAPTCHA script
   only loads for visitors who actually open the chat.
 * **Visitor-input moderation** — every visitor message is checked against your 
   AI provider’s content-safety service BEFORE it reaches the chat model. Abusive
   messages get a neutral deflection (your brand never engages with abuse, and the
   content never reaches your provider account — your provider’s terms govern responsibility
   for end-user content); repeated abuse ends the session; self-harm signals get
   a supportive signposting reply with a universal helpline link, and the conversation
   is preserved under a legal hold. Moderation records are fair by design: they 
   name the classifier’s own category, score, and model rather than asserting a 
   verdict about your visitor, and borderline flags deflect without counting toward
   ending the session. It is always on, and there is no off-switch.
 * **Operator visibility** — chat logs and an activity overview, so you can always
   see what your assistant told a visitor: every turn shows which pipeline path 
   produced it, and even failed sends (say, during a provider outage) leave a record
   of exactly what the visitor was shown.

**AnswerRails Pro — a separate plugin**

AnswerRails Pro is a separate plugin that adds the capabilities listed below. AnswerRails
does not require it.

 * **Catalogue & web grounding** — add WooCommerce products and external URLs as
   knowledge sources, so the assistant can answer from your catalogue and from pages
   beyond your WordPress site.
 * **Business Intelligence** — one screen for what your conversations are telling
   you: grounding and deflection analytics, answer-quality distribution, and the
   knowledge gaps worth filling next.
 * **Idea capture** — product feedback, feature requests, and demonstrated unmet
   demand extracted from real conversations into a triage ledger.
 * **Sales-lead detection** — buying intent flagged and emailed to your team with
   the transcript.
 * **Human-handoff escalations** with triggers, customer notifications, email transcripts,
   and rate limiting.
 * Plus the control surfaces that ride with them: a Grounding-depth dial (retrieval
   uses the top 5 knowledge-base passages per answer — the untuned-safe default;
   the dial lets you tune depth to your content and your API budget) and moderation
   tuning (strike limit and the wording of moderation responses — for example, naming
   the crisis helplines for your region). The protection itself always runs.

> Three AI providers are supported: OpenAI, Mistral (including Mistral’s free tier—
> the default for new installs, with a guided training opt-out, and a good way to
> evaluate AnswerRails before you move to a paid model), and Anthropic Claude.

### External Services

AnswerRails connects to the third-party services below. No visitor data is sent 
anywhere until you configure an AI provider API key, and the only AI provider contacted
is the one you configure, using your own account.

**Your AI provider — OpenAI, Mistral, or Anthropic (one of, your choice; new installs
default to Mistral)**
 Contacted on every answered visitor question. What is sent:
the visitor’s message and recent conversation context, the knowledge-base passages
selected as relevant to the question, and a hashed session identifier (so any misuse
is attributed to the visitor session rather than your account). Visitor messages
are also checked against the same provider’s content-safety (moderation) service
before any chat model is called. Usage is billed to your own provider account.

 * OpenAI (chat, moderation, and — only if you enable vector search — syncing your
   knowledge base to a vector store on your own OpenAI account): [Terms of Use](https://openai.com/policies/terms-of-use/)·
   [Privacy Policy](https://openai.com/policies/privacy-policy/)
 * Mistral (chat, moderation): [Terms](https://legal.mistral.ai/terms) · [Privacy Policy](https://legal.mistral.ai/terms/privacy-policy)
 * Anthropic (chat, moderation): [Commercial Terms](https://www.anthropic.com/legal/commercial-terms)·
   [Privacy Policy](https://www.anthropic.com/legal/privacy)

**Google reCAPTCHA (optional, off by default)**
 Contacted only if you enable spam
protection, and only for visitors who open the chat: Google’s reCAPTCHA script loads
in the visitor’s browser, and each chat message is verified server-side with Google(
the reCAPTCHA token and the visitor’s IP address are sent to Google’s verification
endpoint). [Terms](https://policies.google.com/terms) · [Privacy Policy](https://policies.google.com/privacy)

**Freemius (licensing platform)**
 Handles licensing and, for paid plans, checkout
and billing. Licence status checks go to Freemius. Diagnostic data (your site address,
WordPress and PHP versions, and activation events) is sent only if you opt in — 
the choice is presented on activation and is off unless you accept it. [Terms of Service](https://freemius.com/terms/)·
[Privacy Policy](https://freemius.com/privacy/)

Your chat logs and consent records stay in your own WordPress database; your API
keys are stored in your database and sent only to the provider they belong to.

## Screenshots

[[

[[

[[

[[

## Installation

 1. Upload the `answerrails` plugin folder to `/wp-content/plugins/`, or install the
    plugin zip via **Plugins  Add New  Upload Plugin**.
 2. Activate **AnswerRails** through the **Plugins** menu in WordPress.
 3. Go to **AnswerRails  Settings**, enter your AI provider API key, and choose a model.
 4. For a live site, put your provider account on a paid footing — pay-as-you-go on
    Mistral, or credit on OpenAI or Anthropic. Mistral’s free tier is well suited to
    evaluating AnswerRails, but free mode has no reserved capacity, so it is not the
    footing to run a live assistant on.
 5. Configure the widget appearance, knowledge sources, and privacy options.
 6. (Optional) AnswerRails Pro, a separate plugin, is added from **AnswerRails  Advanced
    Features**, installs in place without a manual upload, and is administered on the**
    AnswerRails  Account** screen. Your existing configuration is untouched — Pro adds
    its capabilities beside it.

## FAQ

### Which AI provider does it use?

Whichever you choose: OpenAI (the Responses API and Chat Completions, with automatic
failover between them for reliability), Mistral — including Mistral’s free tier —
or Anthropic Claude. Every model in the catalogue is included; new installs default
to Mistral. (Google Gemini support was removed: Gemini’s API terms are incompatible
with an embedded public-site chat — an under-18 site-level exclusion, an EEA/CH/
UK unpaid-use restriction, and free-tier training with no opt-out.)

### Do I need my own API key?

Yes. AnswerRails uses a bring-your-own-key model: you supply your own AI provider
API key, and usage is billed to your provider account. New installs default to Mistral,
whose API key is free to create (no card required) at console.mistral.ai — the setup
walkthrough also guides you through turning off Mistral’s free-tier training BEFORE
your assistant answers its first question. Mistral’s free tier is well suited to
evaluating AnswerRails; for a live site we recommend a paid model — pay-as-you-go
on Mistral, or credit on OpenAI or Anthropic — because free mode has no reserved
capacity. No OpenAI account is required — without one, your knowledge base is indexed
and searched locally in your own WordPress database.

### What do I actually get for free?

The whole assistant. Chat on any supported provider and any model with your own 
key; knowledge grounding from your pages, posts, documents and JSON with real source
citations; honest “I don’t know” behaviour and the guardrails that enforce it; visitor-
input moderation with no off-switch; the health dashboard and chat logs; and every
privacy and compliance control the plugin has — logging modes, retention, consent
receipts, browser-storage policy, auto-clear, and the GDPR export/erase tooling.
All of it is included here. AnswerRails Pro, a separate plugin, adds its own business
capabilities: catalogue and web grounding, Business Intelligence, idea capture, 
lead detection, and escalations.

### How are knowledge sources used?

You attach documents and/or site content as a knowledge base, and the assistant 
grounds its answers in that material rather than answering from generic model knowledge.

### Where is my knowledge base stored?

Your knowledge base is stored and searched in your own WordPress database; only 
the excerpts relevant to a question are shared with your AI provider to answer it.
If you add an OpenAI key, you can optionally enable higher-quality vector search,
which syncs your knowledge to an OpenAI vector store on your own OpenAI account —
the local index stays in place as an automatic fallback either way.

### What happens if the AI provider has an outage?

Chat endpoints fail over automatically where the provider offers more than one. 
For knowledge search, AnswerRails keeps a searchable copy of your knowledge base
in your own WordPress database and falls back to it automatically, so answers stay
grounded in your content during a cloud search outage. Failures are never silent:
the dashboard’s health panel shows exactly which service degraded and how many answers
were served by the fallback.

### How do I read the dashboard’s health panel?

The Overview’s AI System Health panel shows whether chat and knowledge search are
working now, what the last error was, and what to do about it. A full guide to every
badge and figure on it is at https://answerrails.com/go/troubleshooting/

### How do I handle a GDPR request about a visitor’s chat data?

Use WordPress’s own flows: **Tools  Export Personal Data** and **Tools  Erase Personal
Data** cover AnswerRails chat data by email address, with the requester’s identity
verified by WordPress. One WordPress quirk to know: when fulfilling an erasure request,
click **“Erase personal data”** (or “Force erase personal data”) — the “Complete
request” action only marks the row as done without erasing anything (reported upstream
as WordPress core Trac #65735). For direct look-ups, the Privacy panel on the Chat
Logs screen searches by email, session id, or IP, and can export, anonymize, or 
delete what it finds. Erasure anonymizes conversations in place, and what happens
to the consent record is your choice under **Settings  Privacy  Consent Evidence
on Erasure**: keep it (default — the identifying details are removed and the record
of the decision is kept, so you can still show consent was given) or delete it outright.
Either way the outcome is written to the erasure log.

One limit to know about, because it changes which search finds what: **a consent
record holds no email address.** It is keyed by session id, so an email-based request
can only reach it through the conversation transcript that mentioned that address.
Once that transcript has been deleted or anonymized, an email-based look-up can 
no longer identify which consent records belong to that person. A request that supplies
the **session id** does reach them, and that is the route to use. We deliberately
do not build a session-to-email map to close the gap: it would create more personal
data than it protects.

### What happens to my data if I uninstall the plugin?

By default, uninstalling removes the plugin’s API keys, caches and scheduled tasks,
but **keeps your content and records** — knowledge base, chat logs, consent receipts
and settings — so reinstalling finds everything intact. If you want a complete removal
instead, enable **Settings  Privacy  Delete All Data on Uninstall** before uninstalling:
that permanently deletes all AnswerRails data, including chat logs under a legal
hold and stored consent receipts (whether a retention obligation applies first is
your decision as data controller). Licence and account data is managed by the licensing
SDK (Freemius) and is retained by it. Note: cleanup runs only when the plugin is
uninstalled from the WordPress admin — deleting plugin files manually (e.g. over
FTP) bypasses it, as with any WordPress plugin.

### Does AnswerRails support WordPress Multisite?

AnswerRails is designed for standard single-site WordPress installs. WordPress Multisite
is not currently supported.

### How are updates delivered?

Through the standard WordPress plugin update mechanism — use the normal plugin **
Update** action.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“AnswerRails” is open source software. The following people have contributed to 
this plugin.

Contributors

 *   [ celtic3d ](https://profiles.wordpress.org/celtic3d/)
 *   [ Freemius ](https://profiles.wordpress.org/freemius/)

[Translate “AnswerRails” into your language.](https://translate.wordpress.org/projects/wp-plugins/answerrails)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/answerrails/), check
out the [SVN repository](https://plugins.svn.wordpress.org/answerrails/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/answerrails/) by
[RSS](https://plugins.trac.wordpress.org/log/answerrails/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.1

 * Changed: internal code-comment wording only. This is a maintenance release — 
   nothing about how the assistant answers, what it stores, or what you see in the
   admin has changed. It carries everything listed under 1.0.0.

#### 1.0.0

 * Fixed: automatic page links are added only on an exact, whole-word mention of
   a page title or a title variation, so ordinary phrases like “we visit” no longer
   link to an unrelated page; a plain web address in a reply is no longer broken
   by a link inserted inside it.
 * Fixed: follow-up questions retrieve with the previous turn’s context, so a question
   like “What would you replace it with?” finds the page the conversation is about.
 * Fixed: the Overview’s health badges read Down only while the provider is failing
   now, and read Recovering once requests succeed again after an outage. A passing
   Test APIs restarts the count without deleting history, and AnswerRails re-checks
   a Down chat endpoint automatically, and straight away when an API key is saved.
   On OpenAI, an endpoint the selected model cannot use reads Unknown instead of
   a stale Down.
 * Fixed: the chat widget writes nothing to the visitor’s browser and sends nothing
   when a page loads; a chat session starts at the visitor’s first consent tick 
   or first message.
 * Fixed: escalations sent while “Notify customer” is off now show on their Chat
   Logs row, and sites logging chats anonymously no longer gain a hidden chat-log
   record for every escalation (an upgrade step deletes the ones already created,
   except any under legal hold).
 * Fixed: on a site with reCAPTCHA on, a chat whose consent record had gone missing
   recovers and answers instead of failing verification.
 * Fixed: the “API key looks invalid” notice clears with the next successful chat;
   a key pasted with characters a key never has is rejected with an error instead
   of being saved empty; the Knowledge Base’s empty-state button opens the add form;
   pages added through Site Content are listed as “Page”.
 * Changed: the Mistral model labels no longer recommend a model on Mistral’s free
   tier. The free tier is for evaluating AnswerRails; a live site needs pay-as-you-
   go on Mistral, or credit on OpenAI or Anthropic.
 * Added: the Overview’s health panel links to a guide on reading it, and the FAQ
   points to the same guide.
 * Removed: the “Match Confidence Threshold” and “Custom Field Search” settings,
   which could no longer take effect; upgrade steps delete what they stored.

#### 0.1.7

 * Security: the bundled Freemius licensing SDK is updated to 2.13.5, Freemius’s
   security release, which fixes a stored cross-site scripting issue in its admin
   notices and two lower-severity issues. Nothing about how the assistant answers,
   what it stores, or what you see in the admin has changed.

#### 0.1.6

 * Changed: internal code-comment wording only. This is a maintenance release — 
   nothing about how the assistant answers, what it stores, or what you see in the
   admin has changed.

#### 0.1.5

 * Fixed: the Overview now describes every turn your visitors had, and describes
   each one honestly. The Grounding Rate is relabelled “Grounded share of answered
   turns” — it has always counted only the turns that were answered, and now says
   so and, when there are any, names how many it left out. Answers the assistant
   withheld on purpose, because your knowledge base could not support them or the
   question was out of scope, join the Deflected count instead of being counted 
   as answers. And turns handled by the content-safety layer before any AI ran have
   a segment of their own, kept deliberately apart from turns that could not be 
   safety-checked at all — one means your guardrail worked, the other means a provider
   needs attention. Please note that Answer Quality and Avg Retrieval Relevance 
   may move when you upgrade with nothing having changed about your chat: they were
   averaging in those withheld turns, which are scored zero by design, so Answer
   Quality will typically rise and comparing the new figures against figures from
   before the upgrade will mislead you. Nothing about how conversations are answered,
   recorded or stored changes, and no past record is rewritten.
 * Fixed: the Avg Retrieval Relevance tile no longer prints the AI provider beneath
   the score. The score comes from the knowledge-base search, not from the AI that
   wrote the reply, so naming the provider there attached the wrong system to the
   number — it is already shown, with its live statistics, on the API health card.
 * Fixed: the Overview’s Chat card could read Healthy through a complete provider
   outage. It now follows each provider’s run of consecutive failures — a refusal
   that retrying cannot clear turns it Down at once, a busy period turns it Down
   after three refusals over ten minutes, and a successful call ends the outstanding
   failure — and AnswerRails reads the provider’s own error details and rate-limit
   headers, so a provider reporting no request capacity at all is shown as exactly
   that, with a notice on every AnswerRails screen until the next successful chat
   call. Call counts are kept per UTC day and match the range you selected and its
   tooltip, and an upgrade step resets the stored counts, so each card reads Unknown
   until its first call. Visitors are no longer invited to try again when retrying
   cannot help — they are told plainly that the assistant isn’t available right 
   now — every failed turn now leaves a record in the chat log, whatever the cause,
   carrying the provider, the model and the provider’s error code rather than the
   provider’s error message, and Anthropic rate limits are no longer reported as
   an exhausted quota.
 * Fixed: chat turns on OpenAI are always sent to OpenAI. The assistant no longer
   refuses a turn, or moves it to the other OpenAI endpoint, because of earlier 
   failures on record: a provider that has recovered answers the next visitor, and
   that answer clears the Chat card’s failure without a Test APIs click. A turn 
   that fails on the first endpoint is still retried once on the second when the
   failure is one a retry could clear, and never for a quota, credentials or capacity
   failure. Test APIs on OpenAI also stops marking the Chat card Degraded on its
   own, which it did on every click.
 * Fixed: chat logs and consent records are aged on your site’s own clock. The retention
   period was measured in UTC while the records themselves are stamped in your site’s
   timezone, so on a site ahead of UTC the IP address, browser and referring page
   kept with a record outlived the number of days you set, and on a site behind 
   UTC records were removed early.
 * Fixed: consent records are found by the data-subject search, export, anonymize
   and erase actions even when the conversation has been deleted, anonymized, or
   was never logged at all. All four used to start from the chat log and reach the
   consent record through it, so where no chat log survived none was found — which
   happened whenever a conversation aged past your retention period, whenever a 
   visitor agreed and then left without sending a message, whenever you anonymized
   a conversation on that person’s own erasure request, and from the very first 
   visitor on any site not running identified logging. One consequence to know about:
   a session-keyed “Delete everything” on a visitor whose conversation had already
   been purged used to find nothing, delete nothing and report success, and now 
   deletes the consent records it previously left behind.
 * Fixed: consent records are trimmed at your retention cut-off instead of being
   kept in full forever. The identifying details — IP address, browser and referring
   page — are removed once a record passes the cut-off, and the record of the decision
   itself is kept after that as evidence that consent was given. Nothing is deleted.
   A record belonging to a conversation under a legal hold is left alone and trimmed
   on the first run after the hold is released, and your retention setting now says
   all of this, because your published privacy text describes it.
 * Fixed: a consent withdrawal the site failed to record is retried and, if it still
   cannot be recorded, the visitor is told and can try again. The Try again button
   now looks like a button and shows a clear outline when reached with the keyboard,
   and the line confirming that a withdrawal has been recorded no longer appears
   in the styling used for failures. You are warned in the admin when consent receipts
   cannot be written; privacy exports and the subject search say whether each receipt
   was a grant or a withdrawal, and whether a conversation was held with consent;
   and an error message that did not come from AnswerRails is no longer repeated
   to visitors word for word.
 * Added: you choose what an erasure request does with consent records, at **Settings
   Privacy  Consent Evidence on Erasure**. Keeping them — the default, and the previous
   behaviour — removes the identifying details and keeps the record of the decision,
   so you can still show that consent was given; deleting them removes the record
   outright. Either outcome is written to the erasure log. The explicit “Delete 
   everything” action is unaffected: it has always removed consent records and says
   so.
 * Improved: ten lines of owner-facing copy and one message the eraser reports now
   describe what the plugin does and leave the legal judgement to you, the site 
   owner. The settings screen no longer tells you that a setting is required for
   compliance, or that consent is mandatory; it says what each setting does and 
   that whether your site needs it is your decision as data controller, and the 
   notice shown when identified logging is on with the consent prompt off says the
   same and is now translatable. The message the eraser reports when a chat log 
   is kept under a legal hold — a message you may quote to the person who asked —
   states that the log was kept because of the hold and when it becomes erasable,
   and no longer cites an article of law on your behalf. Separately, the suggested
   privacy-policy text no longer describes chat logs on a site that keeps none: 
   with conversation logging off, paragraphs still said that contact details were
   kept with the conversation log, that chat logs are visible to this site’s administrators,
   and that erasure anonymizes your conversations in place, where every paragraph
   describing something the site stores now follows your logging setting.
 * New: the model list offers OpenAI’s GPT-6 line (`gpt-6.1-sol`, `gpt-6-luna`, `
   gpt-6-astra`) and Anthropic’s Claude 5.5 line (`claude-sonnet-5-5`, `claude-haiku-
   5-5`, `claude-opus-5-5`, `claude-fable-5-1`), keeps the previous lines labelled
   as such, and drops `gpt-4.1`, `gpt-4.1-mini` and `gpt-4o-mini`, which OpenAI 
   shuts down on 14 January 2027. New installs default to `gpt-6-luna` on OpenAI
   and `claude-sonnet-5-5` on Anthropic. Existing settings are untouched: a site
   already using a dropped model keeps it, shown as the current setting, with a 
   retirement notice from 15 November 2026. Retirement notices now cover the further
   OpenAI, Anthropic and Mistral models that have a dated shutdown, including `claude-
   sonnet-4-5` on 30 November 2026 and the older OpenAI models retired this year;
   the `gpt-4o` notice gives the right date, 14 January 2027, rather than 23 October
   2026, when only the dated `gpt-4o-2024-05-13` snapshot was shut down; a `gpt-
   6` model id entered as a custom OpenAI model works, where before every chat turn
   on it failed; and a build-time check now requires the default and moderation 
   models AnswerRails ships to be current ones, each offered in the model list and
   carrying no announced retirement.
 * Changed: the four kinds of record AnswerRails stores — knowledge items, chat 
   logs, captured ideas and consent receipts — now use the `answerrails_` name prefix,
   and a one-time upgrade step moves your existing records onto it. They were stored
   under names beginning `ar_`, and WordPress.org asks that a plugin’s stored names
   carry a prefix long enough that it cannot collide with another plugin’s, which
   three letters is not. The upgrade step runs once, by itself, the first time you
   load the admin after updating. Nothing is deleted and nothing is rewritten — 
   only the internal label changes — and it is safe to re-run, so an interrupted
   upgrade simply finishes next time; your knowledge base, chat logs, captured ideas
   and consent receipts keep every field, date and attachment they had. If you have
   bookmarked an admin URL for one of these screens, reach it from the AnswerRails
   menu instead.
 * Improved: the plugin’s wording describes what this plugin includes, with AnswerRails
   Pro named as the separate plugin it is. Nothing about how the plugin behaves 
   has changed, and nothing has ever been held back — but a great many sentences
   were written as denials of that, and a few screens described capabilities as 
   belonging to a tier of one product rather than to a second, separate plugin. 
   Read by a person that is merely redundant; read by an automated scanner it is
   the vocabulary of a paywall, and it caused one to report this plugin as trial
   software. An automated check keeps the wording that way from here on.
 * Fixed: the instruction fields on the Advanced Features screen say what they do—
   any HTML pasted in is removed, and the assistant’s own recording tags were never
   part of what you type there.
 * Security: four inputs are now validated at the point they are read. None of them
   was reachable as a way into your site, and none changes what the plugin accepts
   or stores: the link-priority setting is matched strictly against its three allowed
   values, so a value of the wrong type falls back to the default; an uploaded document’s
   filename is cleaned as it is read, which also covers the case where it became
   an item’s title; a pasted JSON knowledge document is decoded and re-encoded by
   the plugin as it arrives, so what is stored is always the plugin’s own output,
   and JSON that works today still works; and the two places a visitor’s IP address
   is read are cleaned before use.

#### 0.1.4

 * Fixed: signed-in visitors no longer see “Cookie check failed” instead of a reply.
   The chat no longer relies on a page security token that can go stale — this affected
   owners previewing their own assistant and every signed-in visitor on a membership
   site, with or without caching.
 * Fixed: long conversations no longer stop working. Past roughly six to eight turns
   the assistant could refuse every message on a site behind AWS WAF, Cloudflare
   or mod_security with their default request-size limits, because the widget re-
   sent the whole rendered conversation each time and every retry was larger than
   the last. It now sends only what the assistant actually reads, within a size 
   budget; when a request never reaches the site it says so plainly and points to
   the “New conversation” button; and an over-long single message is caught in the
   message box before it is sent, with the visitor’s text kept in place.
 * Fixed: escalations tell the truth about email. A visitor whose support request
   could not be emailed is told so instead of being promised a follow-up; the Chat
   Log’s escalation status and count reflect sends that actually happened; and the
   admin warns when notification emails are failing — a condition a site could previously
   sit in indefinitely with no symptom.
 * Added: AnswerRails describes its browser storage to consent managers — all seven
   entries, each with its purpose and lifetime, and each correctly described as 
   browser storage rather than a cookie — through the WP Consent API (an optional
   plugin, never required) and a Complianz integration, so a site’s generated cookie
   policy no longer lists AnswerRails as an “Unknown Service”. AnswerRails sets 
   no cookies. It does not claim to be registered as consent-honouring with the 
   WP Consent API; honouring a consent manager’s decision is tracked separately.
   A new Supported Environments document covers consent managers, CDNs, firewalls
   and caching layers.
 * Removed: the `/wp-json/answerrails/v1/ping` endpoint. It only refreshed the token
   the first fix makes unnecessary; anything still requesting it receives a 404.

#### 0.1.3

 * Fixed: when the assistant can’t answer a follow-up, it says so instead of repeating
   its request for your visitor’s contact details. The ask is made at most once 
   per conversation, and an erasure request removes the record that it was made.
 * Fixed: support requests are answered honestly when the escalation rate limit 
   is holding. The assistant used to invent support routes and promise handoffs 
   that nothing performed; it now claims a handoff only where one really happened,
   and otherwise invites a retry. Sites that run escalations silently stay silent.
 * Fixed: the “Sources” line under an answer is always the plugin’s own, computed
   from what was actually retrieved. A rendered Sources block used to ride the conversation
   history back to the model, which taught it to write its own ungated Sources line;
   existing conversations heal on their next message.
 * Fixed: bulleted and numbered answers arrive as real lists instead of literal 
   hyphens, and a numbered run that starts partway through keeps its numbers.
 * Fixed: a Sources block that cannot tell which of its candidates the answer used
   now names its single best candidate instead of showing up to four. Knowledge-
   base sources with nowhere to click render muted, so a visitor can see which sources
   open.
 * Fixed: the message box is genuinely disabled before consent is given — it was
   a visual overlay only, so keyboard and screen-reader users could tab in and type
   invisibly. Withdrawing consent now confirms in the conversation what it did.
 * Fixed: bulk knowledge sync reports per-item outcomes and never claims success
   over a failure. Failed items carry a visible “Sync failed” mark, Last Synced 
   comes from the server, and the Knowledge screen warns when the plugin’s temp 
   directory is not writable — the failure mode that silently lost nine documents
   on our own site.
 * Fixed: a fresh install no longer ships an empty consent notice. There is one 
   logging-aware default, Restore Default works, and the consent receipt records
   the text the visitor actually saw.
 * New: an “OpenAI API key for vector search” field on Knowledge  Settings, reachable
   whichever chat provider you run. Setup copy no longer names OpenAI where any 
   provider will do.
 * Fixed: the Custom Pages picker renders directly beneath the Display Location 
   dropdown instead of ~1,770px further down the page, and posts join the inventory
   as their own group.
 * Fixed: per-turn telemetry tells the truth — a handoff is recorded when an escalation
   really was triggered, response times are milliseconds everywhere, and the transcript
   notice for an escalation records whether the visitor was told.
 * Fixed: the knowledge Remove handler can no longer fatal on a request that arrives
   without a post id.
 * Improved: the reCAPTCHA site key is published only when spam protection is switched
   on.
 * Improved: shipped code comments describe what the plugin does now rather than
   narrating past changes. No behaviour changed.

#### 0.1.2

 * Fixed: on sites with an active Pro licence, every chat response failed with a
   critical error after updating to 0.1.0 or 0.1.1. Free installs were unaffected.
   Chat on licensed sites works again, and the failure mode is now covered by regression
   tests so it cannot recur silently.
 * Removed: outdated upgrade notices for long-past versions.

#### 0.1.1

 * Fixed: the Custom Pages selection under Display Location now saves. Its section’s
   Save button previously failed with an invalid-section error (the selection could
   not be saved from the settings screen at all), and — worse — saving the Basic
   Setup section silently cleared any stored Custom Pages selection. Both halves
   are fixed and covered by regression tests.
 * Fixed: deprecation notices on PHP 8.4 (implicitly nullable parameter declarations)—
   the plugin now runs deprecation-clean on PHP 8.4.

#### 0.1.0

 * Changed: a lot more of AnswerRails is now free, and nothing in the free plugin
   is locked. Provider choice (OpenAI, Anthropic, or Mistral) and the full model
   catalogue are available on every plan, and the complete privacy and compliance
   layer — identified conversation logging, browser storage policy, and the auto-
   clear timer — is included free alongside the DSAR tooling, consent receipts and
   retention controls that already were. There are no locked controls or “PRO” labels
   anywhere in the free plugin; Pro features are simply not present rather than 
   present-but-disabled.
 * Security: every setting is now sanitised at save time, the knowledge-base REST
   list endpoint requires administrator permissions, and the consent disclaimer 
   accepts only a small explicit set of HTML tags (links, bold, italics, line breaks).
 * Changed: “Captured Ideas” is now “Business Intelligence” (Pro) — one screen for
   the ideas ledger, sales leads, knowledge gaps and deep analytics. The Overview
   page is slimmer on every plan, and the Advanced Features page in the free plugin
   now simply describes what Pro adds.
 * Fixed: adding two different items of the same custom knowledge type no longer
   rejects the second as a duplicate; the “Remove every trace of AnswerRails when
   the plugin is uninstalled” toggle now saves correctly.

#### 0.0.73

 * Added: an External Services section in this readme — every third-party service
   the plugin can contact, what is sent and when, with terms and privacy links for
   each.
 * Improved: documentation accuracy pass — trimmed the readme changelog (the full
   history ships in the plugin’s CHANGELOG.md), clarified that WordPress Multisite
   is not currently supported, and cleaned up two stale plugin-header fields.

#### 0.0.72

 * Improved: internal cleanup completing the move to the current update system —
   the legacy self-update mechanism has been fully removed from the codebase. Updates
   continue to arrive exactly as before: use the normal plugin **Update** action.
 * Fixed: a leftover twice-daily background task scheduled by versions up to 0.0.69
   is now cleaned up automatically on update.

#### 0.0.71

 * New: uninstalling the plugin now cleans up after itself. API keys, secrets, caches,
   and scheduled tasks are always removed on uninstall; your knowledge base, chat
   logs, consent receipts, and settings are kept (reinstalling finds them intact)
   unless you enable the new “Delete All Data on Uninstall” option on the Settings
   screen (off by default, with a clear warning covering records under a legal hold).
 * Fixed: saving or deleting a knowledge item now refreshes the assistant’s index
   of linkable pages immediately, instead of within the hour.
 * Improved: internal cleanup — removed dead code paths identified by an automated
   audit. No functional changes beyond the fix above.

#### 0.0.70

 * New: licensing is now powered by Freemius — Pro checkout completes in-admin, 
   your licence is managed on the **AnswerRails  Account** screen, and Pro updates
   arrive through the secure licensing channel. The old License page and its key-
   entry form are retired; stored legacy licence settings are cleaned up automatically.
 * Fixed: after updating from an earlier version, returning visitors no longer see
   a one-time “This conversation could not be verified” message — the chat recovers
   silently into a fresh conversation.
 * Fixed: on sites without the consent prompt enabled, conversations no longer fail
   at the second message (the session credential minted on the first chat request
   is now stored correctly).
 * Improved: chat responses now explicitly tell page and CDN caches never to cache
   them, removing any possibility of one visitor’s chat state being served to another;
   verified against LiteSpeed Cache.
 * Improved: the plugin listing now shows the AnswerRails icon.

#### 0.0.69

 * Security: visitor chat sessions are now protected end to end — session identifiers
   are cryptographically random, every chat and consent request carries a per-session
   credential checked on the server, and a REST endpoint that could return a conversation
   transcript without authentication has been removed (privacy requests are served
   through the Chat Logs privacy tooling instead).
 * Security: three internal REST endpoints (health, metrics, test) that were reachable
   without authentication have been removed; the dashboard’s health card uses its
   own authenticated path and is unaffected.
 * New: an idea-capture sensitivity control — Chatty, Normal, or Minimal. The default(
   Normal) is more selective than before, so expect fewer, better captured ideas;
   a new “service gap” category records requests for services you don’t offer.
 * Improved: the Sources list under an answer now shows only the sources the answer
   actually used (up to four) instead of everything retrieved; the chat log keeps
   the full retrieved set, with unused sources dimmed.
 * Improved: the guard that strips misleadingly-labelled links now matches whole
   words only, and repaired links pass through the same guard before serving.
 * Fixed: “Delete Selected Items” on the Knowledge Base screen now works — it had
   never been wired to a working endpoint; three buttons that errored or did nothing(
   Overview “Export CSV”, the invalid-URL “Add to Knowledge”, Knowledge Gaps “Add
   Knowledge”) are removed.
 * Fixed: Overview  Invalid URLs  “Clear Log” now shows a green success notice; 
   it previously showed a red error notice reading “success”.
 * Fixed: a conversation’s “Ideas captured” count reflects ideas actually recorded,
   not the number the model proposed.
 * Improved: when the assistant deliberately declines to answer, the reply appears
   as a normal assistant message rather than a red error; genuine failures still
   show as errors.

#### 0.0.68

 * Fixed: bulk Export-to-CSV on the Chat Logs screen works again — a leftover internal
   reference crashed the export after the download had started, which browsers showed
   as a blank connection error rather than an error page. Exports are now fully 
   assembled before the download begins, so any future failure is a readable message,
   not a broken download.
 * Fixed: the Overview’s Answer Quality average now includes conversations scored
   zero (for example, ones ending on a guardrail deflection). The average may read
   lower after updating — that is the corrected number, now matching the Chat Logs
   list.
 * Improved: an answer that links to a page on your own site is never treated as
   small talk — it always gets the full grounding treatment: Sources shown, quality
   scored, counted in grounding metrics. The Overview’s Conversational segment narrows
   to true no-content turns (greetings, thanks) accordingly.

The full version history back to 0.0.8 is in the CHANGELOG.md file included with
the plugin.

## Meta

 *  Version **1.0.1**
 *  Last updated **12 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 8.0 or higher **
 * Tags
 * [AI](https://wordpress.org/plugins/tags/ai/)[chat widget](https://wordpress.org/plugins/tags/chat-widget/)
   [chatbot](https://wordpress.org/plugins/tags/chatbot/)[customer service](https://wordpress.org/plugins/tags/customer-service/)
   [knowledge base](https://wordpress.org/plugins/tags/knowledge-base/)
 *  [Advanced View](https://wordpress.org/plugins/answerrails/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/answerrails/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/answerrails/reviews/)

## Contributors

 *   [ celtic3d ](https://profiles.wordpress.org/celtic3d/)
 *   [ Freemius ](https://profiles.wordpress.org/freemius/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/answerrails/)