The chatbot widget keeps the conversation entirely on the visitor’s browser. No conversation history is kept on your server or on the RAG service beyond the per-request logs.
sessionStorage, not localStorage
Two sessionStorage keys are used per site:
| Key | Holds |
|---|---|
helpwp_chat_<site_key> | The current open conversation (an array of message objects). |
helpwp_threads_<site_key> | Up to 20 previous conversations on this device. |
A third key, helpwp_auto_opened_<site_key>, is set when the auto-open trigger fires so the panel is not auto-opened twice in the same session.
Because all three keys are in sessionStorage (not localStorage), they are cleared the moment the visitor closes the tab. A returning visitor on a fresh tab starts with an empty chat.
Why per-tab and not persistent
The chatbot is for live questions in the moment. Persisting conversations across days adds privacy weight (the visitor’s history sits on disk), needs an “are you sure you want to clear this?” UI, and tempts you to display outdated conversation context where the AI would re-read it. Session-only storage avoids all three issues.
The “+ New” button
Inside the chat panel the visitor can click the + New button to archive the current conversation and start fresh. The archived conversation moves into the threads list (capped at 20). Clicking any thread in the list re-opens it for re-reading. Threads are part of sessionStorage and likewise vanish when the tab closes.
What the server knows
The RAG service receives:
- The current question.
- Up to 10 prior turns of the current conversation (for context).
- Your
data-site-key. - The visitor’s current page URL (for grounding “where am I?” questions).
It logs the question, the answer, the relevance score, and the cost. It does not log the visitor’s IP, browser fingerprint, or anything that identifies them across sessions. Logs are accessible at HelpWP -> Settings -> AI -> Chatbot Logs.
Clearing conversations programmatically
If you ever want to clear the current visitor’s chat history (for example, after a logout flow on your site), call this from your front-end code:
Object.keys(sessionStorage)
.filter(k => k.startsWith('helpwp_'))
.forEach(k => sessionStorage.removeItem(k));
Was this doc helpful?