Recourse is an AI chatbot for customer support that answers out of your own content. It reads your published posts, pages and any public custom post types, builds a search index from them, and answers visitors’ questions from that index. Every answer carries numbered citations pointing at the pages it came from, so a visitor can check it and you can see where a wrong answer came from.
Nothing is indexed that a visitor could not already read. Drafts, private posts, password-protected posts and post types you did not tick are all left out, and a recourse_index_post filter is there for anything else your site needs to exclude.
Retrieval runs on your own server and needs no account and no credential. Generating the answer text does: you supply an OpenAI-compatible endpoint and its key, and you pay whatever that provider charges. Until you do, the plugin makes no external request at all.
Under Settings there is a Model Provider picker that fills the endpoint in for
you. These all speak the OpenAI chat format and all work:
https://api.openai.com/v1https://api.anthropic.com/v1https://api.x.ai/v1https://api.deepseek.com/v1https://api.groq.com/openai/v1https://openrouter.ai/api/v1https://api.mistral.ai/v1https://api.moonshot.ai/v1https://dashscope.aliyuncs.com/compatible-mode/v1http://localhost:11434/v1The list is a convenience, not a limit. Anything else speaking the same format
works if you type its address in, and the boxes stay editable after you pick.
The key belongs in wp-config.php rather than the database if you would rather it did not travel in a backup:
define( 'RECOURSE_API_KEY', 'your-key' );
Recourse needs an OpenAI-compatible chat completions endpoint to write an answer. None ships with the plugin and none is contacted until you enter a base URL under Settings, so an unconfigured install makes no external request at all. You supply the base URL and the key, so the service contacted is whichever one you choose.
Whichever provider you point it at, that provider’s own terms of service and privacy policy govern the data you send them. The settings screen offers the following as one-click choices, and each one is a separate company with its own terms:
Ollama is also offered, and is not an external service: it runs on your own server at localhost, so nothing leaves the machine.
Any other OpenAI-compatible endpoint works too. Choose “Other” and enter its address, in which case the service contacted is the one you named and its own terms apply.
On WordPress 6.9 and later the assistant registers itself with the Abilities
API, so other tools on your site can use it, and it can call abilities other
plugins register once you list them. Nothing is called without you naming it,
and an ability marked as destructive is refused even then.
On WordPress 7.0 and later, if your site already has an AI connector set up
under Settings, the assistant will use it and you do not need to enter an
endpoint or a key here at all.
The chat window says “Automated assistant. Answers can be wrong.” under the
assistant’s name. The EU AI Act has required that disclosure of visitor-facing
chatbots since 2 August 2026, and the duty falls on the site rather than on the
plugin, so the wording is yours to change through the recourse_ai_disclosure
filter. It is there by default rather than absent.
The widget script shipped as assets/recourse.min.js is built from the TypeScript sources at https://github.com/ibrahimhajjaj/recourse, under packages/widget/src. The readable build is shipped alongside it as assets/recourse.js. Build both yourself with npm install && npm run build in packages/widget, then take them from dist/wordpress. That is the same source as the general build, compiled without the loader that would fetch a voice runtime from a content delivery network, since a plugin may not fetch code from another host.