Title: Sohay — AI Chatbot for Knowledge Base and WooCommerce
Author: Mithun Biswas
Published: <strong>18 جُولاءِ 2026</strong>
Last modified: 3 آگسٽ 2026

---

پلگ انس ڳولھيو

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

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

# Sohay — AI Chatbot for Knowledge Base and WooCommerce

 کان: [Mithun Biswas](https://profiles.wordpress.org/bhoot/)

[ڊائون لوڊ ڪريو](https://downloads.wordpress.org/plugin/sohaychat.1.2.0.zip)

 * [تفصيل](https://snd.wordpress.org/plugins/sohaychat/#description)
 * [جائزو](https://snd.wordpress.org/plugins/sohaychat/#reviews)
 *  [تنصيب](https://snd.wordpress.org/plugins/sohaychat/#installation)
 * [ترقي](https://snd.wordpress.org/plugins/sohaychat/#developers)

 [سھائتا](https://wordpress.org/support/plugin/sohaychat/)

## وضاحت

Sohay adds an AI chat widget to your WordPress site that answers visitor questions
from the articles you publish. You write articles in the built-in Knowledge Base,
and the chatbot looks up the best matches before it replies — so it stays on-topic
and uses your real content instead of guessing.

**On a WooCommerce store, the chatbot shops with your visitors.** It searches your
catalog, pulls up a product with its size and colour options, reads live stock and
prices, answers shipping, returns, and refund questions from your store’s own pages,
and adds, changes, or removes items in the shopper’s cart — without them leaving
the conversation. Every cart change comes with an Undo button, and every price and
stock status is read from your store rather than invented. On sites without WooCommerce,
none of it appears.

Every conversation is saved in a built-in inbox under **Sohay  Conversations** —
your team can read, search, filter, assign, and reply from one place.

#### Why site owners pick Sohay

 * **Answers from your own content** — the chatbot reads the articles you publish
   in your Knowledge Base. It doesn’t make up product details or invent prices.
 * **Sells, not just supports** — on a WooCommerce store the chatbot searches your
   catalog, checks stock and prices, and fills the shopper’s cart inside the conversation.
   Declares HPOS and Cart-Checkout-Blocks compatibility. On sites without WooCommerce
   the shopping tools stay hidden and everything else works the same.
 * **No coding to set up** — paste an OpenAI or Google Gemini API key, publish a
   few articles, click “Sync All Articles”. The widget appears on every page.
 * **A real inbox for your team** — every conversation is saved. Search, filter 
   by status, assign one to a teammate, or reply yourself.
 * **Predictable costs** — set a daily token cap and the plugin stops calling your
   AI provider for the rest of the day once you hit it. A runaway loop or a hostile
   bot can’t drain your account overnight.
 * **GDPR-friendly out of the box** — conversations are stored on your own site,
   in your own database. Signed-in visitors’ chats flow through WordPress’s built-
   in **Export / Erase Personal Data** tools; anonymous guest chats (which have 
   no email to match on) are erased by deleting them from the **Conversations** 
   inbox. See **Privacy** below.

#### What’s included

 * A **chat widget** that drops into every page (you can hide it on pages you don’t
   want it on).
 * **WooCommerce shopping tools** (WooCommerce 7.0 or later) — catalog search and
   browse, product and variant lookup, live stock and prices, shipping/returns/refund
   answers, and add, change, or remove in the shopper’s cart. Each result renders
   as a card in the chat rather than a wall of text.
 * A **Knowledge Base** section in the WordPress admin, with a “Sync All Articles”
   button.
 * A **Conversations admin** where you can read, search, filter, assign, reply, 
   pin, and close chats.
 * An **AI Settings** screen for picking the AI provider and model, writing the 
   welcome message, and setting daily spend caps.
 * A **Diagnostics** screen that shows today’s token usage and the most recent plugin
   log entries.
 * **Fast page loads** — the chat code only downloads when a visitor actually opens
   the chat, not on every page view.
 * **Your API keys are encrypted** in the database and never shown in the admin 
   UI after you save them.

#### You’ll need

 * A WordPress site running version 6.6 or later, on PHP 8.1 or later.
 * An account and API key with **OpenAI** or **Google (Gemini)**. You pay that provider
   directly for the model usage — Sohay does not resell access. A typical small 
   support site stays in single-digit dollars per month. If you use the Knowledge
   Base, you need an OpenAI key regardless of which provider answers the chat — 
   see **External services**.
 * Optional — WooCommerce 7.0 or later, if you want the shopping tools. Everything
   else works without it.

#### External services

Sohay sends data to an AI provider to generate chat answers, and to OpenAI to index
and search your Knowledge Base. Without an account and API key for at least one 
provider, the plugin has no upstream model to call and the chat widget cannot answer
questions.

**Which service receives your visitors’ messages depends on the provider you select**
under **Sohay  AI Settings**:

 * **OpenAI** (https://openai.com) — the default.
 * **Google (Gemini)** (https://ai.google.dev) — optional alternative.

**Knowledge Base indexing and search always go to OpenAI**, whichever provider answers
the chat. If you select Google and switch the Knowledge Base on, keep an OpenAI 
key saved as well; without one the chatbot answers without consulting your articles.

**What is sent, and when**

 * **When a visitor sends a chat message** — the message text and recent conversation
   history are forwarded over HTTPS to the selected provider and processed by the
   model configured under **Sohay  AI Settings**. That is `https://api.openai.com/
   v1/responses` for OpenAI, or `https://generativelanguage.googleapis.com/v1beta/
   models/*:streamGenerateContent` for Google.
 * **When you publish or update a Knowledge Base article** — the title and body 
   are sent in the background to OpenAI Files and Vector Stores (`https://api.openai.
   com/v1/files`, `/v1/vector_stores`, `/v1/vector_stores/*/files`) so the chat 
   can retrieve them. The sync runs in the background, not while you click Save.
   This happens on OpenAI regardless of which provider answers the chat.
 * **When the chatbot looks something up in your Knowledge Base** — the visitor’s
   question is sent to `https://api.openai.com/v1/vector_stores/*/search` to find
   matching articles, and the matched article text is then sent on to whichever 
   provider is generating the reply.
 * **On a WooCommerce store, when the chatbot uses a shopping tool** — the answer
   it looks up is sent back to the model so it can reply, in the same conversation
   as the message that prompted it. Depending on the tool, that is: product names,
   descriptions, prices, sale prices, stock status, categories, tags, option names
   and values (size, colour), product page and image URLs; the text of the store
   pages you have set as Terms, Privacy, Refunds and Returns, plus any Knowledge
   Base articles matched to a shipping, returns or refund question; and the contents
   of the shopper’s cart — the items in it, their quantities and options, and the
   cart totals. This happens only on stores running WooCommerce, and only for the
   tools the chatbot actually calls in that conversation.

**What is _not_ sent.** The cart data describes the basket, not the shopper: no 
name, email address, postal address, phone number, or payment details are included.
Sohay never sends order history, customer records, or anything from WooCommerce’s
checkout to your AI provider, because none of the shopping tools read them.

**Where it goes**

All requests go over HTTPS to `api.openai.com` and, if you select Google, `generativelanguage.
googleapis.com`. The plugin does not contact any other external service — no analytics,
no telemetry, no third-party fonts or CDN assets, and no phone-home for updates.
Updates come from WordPress.org.

**How your API keys are handled**

The API key you enter for a provider under **AI Settings** authenticates that provider’s
requests. Keys are encrypted at rest (AES-256-GCM) in your WordPress database, masked
in the admin UI after the first save, and excluded from the WordPress REST API. 
A key is only ever sent to the service it belongs to. Saving a key for a provider
you have not selected stores it but does not use it — that is what lets you switch
back without re-entering it.

**Your responsibilities**

Before activating the plugin, please review the terms of the provider you select—
OpenAI’s [Terms of Use](https://openai.com/policies/terms-of-use) and [Privacy Policy](https://openai.com/policies/privacy-policy),
and if you use Gemini, Google’s [Gemini API Additional Terms of Service](https://ai.google.dev/gemini-api/terms)
and [Privacy Policy](https://policies.google.com/privacy). Note that Google applies
different data-handling terms to free-tier and paid API keys; read the terms for
the tier you are on. Because Knowledge Base indexing runs on OpenAI either way, 
a site with the Knowledge Base switched on shares data with OpenAI even when Gemini
answers the chat. Site owners are responsible for obtaining the appropriate legal
basis (consent, contract, legitimate interest, etc.) to share visitor messages with
these services under GDPR, CCPA, and other applicable privacy regimes in the jurisdictions
they operate in. On a WooCommerce store that basis needs to cover the shopping tools
too — what a visitor has put in their cart is information about that visitor, even
though no name or address is attached to it. If you would rather it never left your
site, the shopping tools can be switched off individually in code; see the FAQ below.

#### Privacy

Conversations and messages are stored in custom database tables on your own site.

For **signed-in visitors**, the plugin registers WordPress’s personal-data exporter
and eraser, so the standard **Tools  Export Personal Data** and **Tools  Erase Personal
Data** flows include their Sohay conversations, matched on their account email.

**Anonymous (logged-out) visitors’ chats** aren’t tied to an email address, so those
email-based tools can’t locate them. To erase a specific guest conversation, open
it under **Sohay  Conversations** and delete it (available to users with the AI-
settings capability); it leaves the inbox immediately and is permanently purged 
after the retention window — 30 days by default, filterable in code. A visitor can
also delete their own chat from the widget, and every soft-delete follows the same
purge path.

**On a WooCommerce store**, the chatbot’s shopping tools read your catalog, your
policy pages, and the visitor’s own cart. What they find is sent to your AI provider
so the model can answer, and it is also saved with the conversation — that is what
lets the product card or cart summary still be there when the visitor scrolls back.
So a stored conversation on a WooCommerce store can contain a snapshot of what that
visitor had in their cart at the time. It is covered by the same export, erase and
retention paths as the rest of the conversation: erasing the chat erases the snapshot
with it. No customer name, address, or payment detail is involved — see **External
services** for the exact list.

See the **External services** section above for what gets sent, and to which service.

## تصوير

[⌊The chat launcher sitting in the bottom-right of the site, respecting iOS safe-
area-inset above the home indicator.⌉⌊The chat launcher sitting in the bottom-right
of the site, respecting iOS safe-area-inset above the home indicator.⌉[

The chat launcher sitting in the bottom-right of the site, respecting iOS safe-area-
inset above the home indicator.

[⌊The expanded chat panel mid-conversation, streaming an answer grounded in a Knowledge
Base article.⌉⌊The expanded chat panel mid-conversation, streaming an answer grounded
in a Knowledge Base article.⌉[

The expanded chat panel mid-conversation, streaming an answer grounded in a Knowledge
Base article.

[⌊Shopping in the chat — a product search returning live catalog results, each card
carrying the store's own price, stock, and "Add to cart".⌉⌊Shopping in the chat —
a product search returning live catalog results, each card carrying the store's 
own price, stock, and "Add to cart".⌉[

Shopping in the chat — a product search returning live catalog results, each card
carrying the store’s own price, stock, and “Add to cart”.

[⌊Adding to the cart from the chat, with the running cart, totals, an Undo button,
and a link straight to checkout.⌉⌊Adding to the cart from the chat, with the running
cart, totals, an Undo button, and a link straight to checkout.⌉[

Adding to the cart from the chat, with the running cart, totals, an Undo button,
and a link straight to checkout.

[⌊Sohay → Conversations — the admin SPA listing recent conversations with filter,
search, and assignee controls.⌉⌊Sohay → Conversations — the admin SPA listing recent
conversations with filter, search, and assignee controls.⌉[

**Sohay  Conversations** — the admin SPA listing recent conversations with filter,
search, and assignee controls.

[⌊A single conversation opened in the admin, showing message history and the reply
composer.⌉⌊A single conversation opened in the admin, showing message history and
the reply composer.⌉[

A single conversation opened in the admin, showing message history and the reply
composer.

[⌊Sohay → AI Settings → Spend protection — daily per-visitor and site-wide token
caps with the live usage readout.⌉⌊Sohay → AI Settings → Spend protection — daily
per-visitor and site-wide token caps with the live usage readout.⌉[

**Sohay  AI Settings  Spend protection** — daily per-visitor and site-wide token
caps with the live usage readout.

[⌊Sohay → Dashboard — conversation volume and trends, recent activity, recently 
published Knowledge Base articles, and quick actions.⌉⌊Sohay → Dashboard — conversation
volume and trends, recent activity, recently published Knowledge Base articles, 
and quick actions.⌉[

**Sohay  Dashboard** — conversation volume and trends, recent activity, recently
published Knowledge Base articles, and quick actions.

## انسٽاليشن

 1. From the **Plugins  Add New** screen, search for **Sohay** and click **Install 
    Now**, then **Activate**. A new **Sohay** menu appears in your WordPress admin 
    sidebar.
 2. Visit **Sohay  AI Settings**, choose your AI provider, and paste that provider’s
    API key into its field. (If you don’t have one yet, create an OpenAI key at platform.
    openai.com or a Gemini key at aistudio.google.com/apikey.) Click **Save**. Keys
    are stored encrypted — the field shows a masked placeholder from now on.
 3. While still on **AI Settings**, pick the model you want to use, set a daily token
    cap under **Spend protection**, and (optionally) write a welcome message that greets
    visitors when they open the chat.
 4. Add at least one article under **KB Articles  Add New**. This is the content the
    chatbot draws from. You can write as many as you like; longer-form support articles
    work best.
 5. Visit **Sohay  KB Settings  Dashboard** and click **Sync All Articles**. The sync
    runs in the background — articles become searchable to the chatbot within a minute
    or two.
 6. Visit your site’s front-end. The chat launcher appears in the bottom-right corner.
    Click it to open the chat and try a question your Knowledge Base can answer.

## FAQ

### Which AI provider should I pick, and can I switch later?

Sohay works with **OpenAI** or **Google (Gemini)** — choose one under **Sohay  AI
Settings**. OpenAI is the default. You can switch at any time; each provider’s key
and model choice are stored separately, so switching back does not mean re-entering
anything.

One thing to know before choosing: the Knowledge Base indexes and searches your 
articles through OpenAI whichever provider answers the chat. If you select Gemini
and use the Knowledge Base, keep an OpenAI key saved as well. Without one, the chatbot
still replies but stops consulting your articles.

### Do I need an account with an AI provider?

Yes. Sohay is a front-end for someone else’s models — without an API key the plugin
has no model to call and the chat cannot answer questions. The provider bills you
directly per token; Sohay does not resell access. The **Spend protection** controls
under **AI Settings** let you cap daily token usage to keep costs predictable.

### How much will it cost me?

Providers charge per token, and the per-token rate depends on the model you pick(
the cheaper models cost a fraction of a cent per chat reply). A small support site
typically stays in single-digit dollars per month. The **Spend protection** controls
under **AI Settings** let you cap daily token usage — once the cap is hit, the plugin
stops calling the provider for the rest of the day. The **Diagnostics** page shows
today’s usage so you can spot a runaway loop or a hostile bot before it costs you
real money.

### Will the chatbot make things up?

The chatbot is _grounded_ in the articles you publish — if it can’t find a matching
article, it tells the visitor it doesn’t know instead of inventing an answer. To
improve answer quality, publish articles covering the questions you actually get
asked, and write a fallback “Contact us” article so the chatbot can route off-topic
questions to your human support team.

### Where can I see what visitors are asking?

**Sohay  Conversations** lists every chat — search them, filter by status, assign
a chat to a teammate, or reply yourself. The **Diagnostics** page shows OpenAI errors
if you’re investigating a technical problem.

### Will my visitors’ chats be visible to other admins?

By default, every WordPress administrator can read every conversation. The plugin
ships with five granular capabilities so you can delegate access — for example, 
give a support agent the ability to read and reply to chats without granting them
access to AI Settings. See the developer questions below for an overview, and the
capability documentation in the plugin’s GitHub repository for the full matrix with
worked role-configuration examples.

### Does this slow down my site?

A tiny launcher (~8 KB) loads on every page. The full chat code only downloads when
a visitor actually clicks to open the chat, so most visitors never download it. 
No third-party scripts, fonts, or trackers are loaded from external CDNs.

### Why don’t my translation or session-recording plugins see the chat widget?

The chat renders inside an isolated container so that your theme’s styling cannot
break the chat, and the chat’s styling cannot change your site’s fonts, colours,
borders, or spacing. That isolation is deliberate — it is what makes the widget 
look and behave the same way on every theme.

The trade-off is that other plugins and scripts which scan your pages for content
do not look inside that container. In practice:

 * **Translation plugins** (TranslatePress, Weglot, and similar) will not translate
   the chat’s own wording. This does not affect your visitors’ answers — the chatbot
   replies in the language the visitor writes in — and Sohay’s own buttons and labels
   are translated through WordPress’s standard translation files.
 * **Session-replay and heatmap tools** (Hotjar, Clarity, FullStory) record the 
   widget as a blank area.
 * **Accessibility overlays** that restyle a page from the outside will not restyle
   the chat.

Screen readers and keyboard navigation are unaffected — assistive technology reads
the accessibility tree, which the isolation does not hide.

The container is open rather than sealed, so a script that explicitly supports this
kind of isolation can still reach the chat’s content. Most third-party scripts do
not.

### What can shoppers do in the chat on a WooCommerce store?

On stores running WooCommerce 7.0 or later, a shopper can:

 * **Search and browse your catalog** — “show me waterproof jackets under $100”,“
   what’s new?”, “what’s on sale?” — results come back as product cards with photo,
   price, and stock.
 * **Look at one product in detail**, including its options, so they can pick a 
   size or colour without leaving the chat.
 * **See live stock and prices**, read from your store at the moment they ask.
 * **Ask about shipping, returns, refunds, and payment** — answered from your WooCommerce
   store pages first, then from Knowledge Base articles you’ve tagged “policy” or“
   faq”.
 * **Manage their cart** — add an item, change a quantity, or remove a line, each
   with an Undo button.

The chatbot cannot take payment or place an order. When the shopper is ready it 
hands them to your normal WooCommerce checkout.

### Does the plugin work without WooCommerce?

Yes. The chat widget, Knowledge Base, and Conversations inbox work on any WordPress
site — the shopping tools simply never appear. On stores running WooCommerce 7.0
or later they switch on by themselves, with no configuration. The plugin also declares
HPOS and Cart-Checkout-Blocks compatibility so stores don’t see an “uncertified 
plugin” banner.

### Can I hide the widget on specific pages?

Uncheck **Show widget** under **Sohay  AI Settings** to hide it everywhere. To hide
it only on certain pages or post types, see the developer questions below.

### Can I customize the welcome message and system prompt?

Yes. **Sohay  AI Settings** has a Welcome Message field (max 280 characters). **
Sohay  KB Settings  Settings** has a Custom System Prompt field (max 4000 characters)
for the instructions the chatbot follows when it generates answers. The Custom System
Prompt field recognises `{site_name}` and `{current_date}` placeholders — they are
replaced with your site’s title and today’s date before the prompt is sent to the
model.

### Where are my API keys stored?

Encrypted with AES-256-GCM in your WordPress database. The admin UI shows a masked
placeholder once you’ve saved a key, and the values are excluded from the WordPress
REST API. Each key is only ever sent to the service it belongs to.

### What happens to my data if I uninstall Sohay?

Uninstalling deletes the plugin’s own database tables (conversations, messages, 
sync jobs, diagnostic logs), its settings, and the capabilities it added. **Your
Knowledge Base articles are kept** — they’re regular WordPress content, so removing
the plugin doesn’t delete them, and they’re still there if you reinstall. If you
want them gone too, delete the articles under **KB Articles** before you uninstall.

### Does Sohay work on WordPress Multisite?

Yes. Each site in the network keeps its own conversations, Knowledge Base, and settings—
nothing is shared across the network. Network-activate to enable Sohay everywhere(
each site sets itself up on first load) or activate it per-site. Uninstalling from
the network removes Sohay’s data from every site.

### For developers

The questions below cover code-level customization. Sohay exposes 48 filters and
12 actions in total; the most-used ones appear here, and the full catalog lives 
in `docs/HOOKS.md` in the plugin’s GitHub repository, alongside `docs/CAPABILITIES.
md` for the full capability matrix.

### How do I customize the plugin with code?

The most commonly customized filters:

 * `sohaychat_should_render_widget` (bool) — per-request gate on the chat widget.
   Combine with `is_singular()` / `is_product()` to scope the widget to specific
   pages.
 * `sohaychat_allowed_openai_models` / `sohaychat_allowed_google_models` (string[])—
   allowlist of model slugs the proxy may call for each provider. Restrict to cheaper
   models to cap spend.
 * `sohaychat_default_ai_provider` (string) — which provider answers the chat when
   no choice is saved in the admin.
 * `sohaychat_provider_options` (array) — provider-specific request settings, such
   as Gemini’s safety thresholds, thinking budget, or search grounding.
 * `sohaychat_help_url` and `sohaychat_upgrade_url` (string) — override the admin-
   header “Help” and “Upgrade” links for resellers.
 * `sohaychat_admin_conversation_scope` — restrict which conversations a non-admin
   operator can see.
 * `sohaychat_tools` — the resolved tool list for the request. Remove an entry and
   the chatbot is never told that tool exists, so it can neither call it nor send
   its data to your AI provider.

Example — keep the WooCommerce catalog answers but never let the cart leave the 
site:

    ```
    add_filter( 'sohaychat_tools', function ( $tools ) {
        unset( $tools['sohaychat-wc/get-cart'], $tools['sohaychat-wc/update-cart'] );
        return $tools;
    } );
    ```

The keys are the tool names: `sohaychat-wc/search-catalog`, `sohaychat-wc/lookup-
catalog`, `sohaychat-wc/get-product`, `sohaychat-wc/search-shop-policies-and-faqs`,`
sohaychat-wc/get-cart`, `sohaychat-wc/update-cart`, and `sohaychat-kb/get-information`
for the Knowledge Base lookup. Returning an empty array disables tool use entirely—
the chatbot still replies, just with no way to look anything up.

Example — hide the widget everywhere except the WooCommerce shop and product pages:

    ```
    add_filter( 'sohaychat_should_render_widget', function ( $enabled ) {
        if ( ! $enabled ) { return false; }
        return function_exists( 'is_shop' ) && ( is_shop() || is_product() );
    } );
    ```

The constants on `Bengal_Studio\Sohaychat\Sohaychat_Hooks` are the recommended form
for new code; the legacy literal form continues to work across releases.

### How do I delegate access to non-admin roles?

Five granular capabilities let you delegate parts of the plugin to non-admin roles:

 * `sohaychat_manage` — AI Settings page, provider selection, API key entry, model
   selection. Implicitly grants all four other plugin caps.
 * `sohaychat_view_conversations` — Sohay menu, Dashboard + Conversations submenus(
   read-only). Non-admin users with this cap are scoped to “assigned to me or unassigned”
   conversations.
 * `sohaychat_reply_conversations` — everything `sohaychat_view_conversations` grants,
   plus operator reply, assignee changes, pin / unpin, close / reopen. Implicitly
   grants `sohaychat_view_conversations`.
 * `sohaychat_manage_kb` — KB Settings admin page and KB sync routes.
 * `sohaychat_view_logs` — Diagnostics admin page (read-only). Clearing the log 
   buffer is escalated to `sohaychat_manage` for forensics integrity.

WordPress’s built-in `manage_options` capability implicitly grants all five, so 
administrators keep working unchanged. Use Members, User Role Editor, or WP-CLI (`
wp cap add <role> sohaychat_view_conversations`) to delegate caps to non-admin roles.
See `docs/CAPABILITIES.md` in the GitHub repository for the full matrix, every REST
route’s required cap, three worked role-configuration examples, and the conversation-
scope filter contract.

### How do I adjust rate limits or the daily OpenAI token budget in code?

Three independent limiter filters. The chat-message rate limit (`limit` requests
per rolling `window` seconds, per visitor):

    ```
    add_filter( 'sohaychat_rate_limit_options', function ( $opts ) {
        $opts['limit']  = 60;
        $opts['window'] = 60;
        return $opts;
    } );
    ```

Behind Cloudflare or another reverse proxy, enable proxy-aware client-IP detection
so per-visitor limits key off the real visitor rather than the proxy:

    ```
    add_filter( 'sohaychat_rate_limit_options', function ( $opts ) {
        $opts['proxy_support'] = true;
        return $opts;
    } );
    ```

Enable `proxy_support` **only** when your site is reachable exclusively through 
the trusted proxy, and that proxy overwrites the `CF-Connecting-IP` / `X-Real-IP`/`
X-Forwarded-For` headers on every request. On an origin that’s also reachable directly,
a visitor could forge those headers to sidestep per-visitor limits; the site-wide
daily token budget still caps total spend.

The public `/auth/guest-token` mint rate limit (separate so token-mint amplification
protection can be tuned independently):

    ```
    add_filter( 'sohaychat_auth_rate_limit_options', function ( $opts ) {
        $opts['limit']  = 5;
        $opts['window'] = 60;
        return $opts;
    } );
    ```

The daily OpenAI token budget (caps also configurable under **AI Settings  Spend
protection**; ceilings reset at UTC midnight; setting either value to 0 disables
that particular ceiling):

    ```
    add_filter( 'sohaychat_usage_tracker_options', function ( $opts ) {
        $opts['site_cap']  = 5000000;
        $opts['actor_cap'] = 25000;
        return $opts;
    } );
    ```

The live readout on the Diagnostics page shows today’s usage so you can spot a runaway
loop before it 429s real visitors.

### Can I disable the KB search cache?

KB vector-search results are memoized in the `sohaychat_kb` object-cache group for
5 minutes by default. To shorten the window, lengthen it, or disable the cache entirely,
use the `sohaychat_kb_search_cache_ttl` filter (return 0 to disable):

    ```
    add_filter( 'sohaychat_kb_search_cache_ttl', '__return_zero' );
    ```

KB sync events flush the cache automatically, so content updates don’t get masked.

### Why does the streaming response cut off behind my CDN?

The plugin sets `Cache-Control: no-cache`, `X-Accel-Buffering: no`, and clears output
buffers, but some CDNs still buffer Server-Sent Events. If your CDN supports it,
mark the chat REST route as bypassing the cache and disable transformations on the
response.

### Where can I see streaming/proxy errors?

**Sohay  Diagnostics** shows the last 100 plugin log entries with timestamps and
context. Each entry also fires the `sohaychat_log_error` action for integration 
with Sentry, Stackdriver, Query Monitor, etc.

## جائزا

ھن پلگ ان لاءِ ڪي به رايا ناھن.

## تعاون ڪندڙ & ڊولپرز

“Sohay — AI Chatbot for Knowledge Base and WooCommerce” اوپن سورس سافٽ ويئر آهي.
ھيٺين ماڻھن ھن پلگ ان ۾ حصو ورتو آھي.

تعاون ڪندڙ

 *   [ Mithun Biswas ](https://profiles.wordpress.org/bhoot/)

[ترجمو ڪريو “Sohay — AI Chatbot for Knowledge Base and WooCommerce” توهان جي ٻولي ۾.](https://translate.wordpress.org/projects/wp-plugins/sohaychat)

### ڊولپمينٽ ۾ دلچسپي؟

[ڪوڊ براؤز ڪريو](https://plugins.trac.wordpress.org/browser/sohaychat/)، چيڪ ڪريو
[SVN مخزن](https://plugins.svn.wordpress.org/sohaychat/)، يا رڪنيت حاصل ڪريو [ڊولپمينٽ لاگ](https://plugins.trac.wordpress.org/log/sohaychat/)
پاران [RSS](https://plugins.trac.wordpress.org/log/sohaychat/?limit=100&mode=stop_on_copy&format=rss).

## لاگ تبدیل ڪريو

#### 1.2.0

 * New — pick your AI provider. Choose OpenAI or Google (Gemini) under Sohay  AI
   Settings, paste that provider’s API key, and choose its model. Each provider’s
   key and model are stored separately, so switching back later doesn’t mean re-
   entering anything. Existing sites keep using OpenAI, with no migration and no
   change in how the chatbot behaves.
 * Knowledge Base users, please note — indexing and search always run on OpenAI,
   whichever provider answers the chat. If you select Gemini and use the Knowledge
   Base, keep an OpenAI key saved as well. Without one the chatbot still replies
   but stops consulting your articles, and the Knowledge Base lookup now switches
   itself off cleanly instead of failing partway through an answer.
 * Changed — the chat widget now renders in an isolated container, so your theme
   can no longer change how the chat looks, and the chat can no longer change your
   site’s fonts, colours, borders, or spacing. The trade-off is that plugins which
   scan your pages for content — translation plugins, session recorders, and accessibility
   overlays — no longer see inside the chat. Screen readers and keyboard navigation
   are unaffected. See the FAQ for the details.
 * Fixed — right-to-left languages now get the mirrored layout. Arabic, Hebrew, 
   Persian, and other RTL sites were being served the left-to-right stylesheet in
   both the chat widget and the Sohay admin screens.
 * Changed — the plugin is now listed as “Sohay — AI Chatbot for Knowledge Base 
   and WooCommerce”, so the name says what it does on a store. Nothing under the
   name moves: your settings, saved conversations, Knowledge Base articles, and 
   the Sohay admin menu are all unchanged, and the update installs over your existing
   copy with no migration.
 * For developers — five new filters for choosing and configuring the service behind
   the chat: `sohaychat_allowed_ai_providers`, `sohaychat_default_ai_provider`, `
   sohaychat_provider_options`, `sohaychat_allowed_google_models`, and `sohaychat_default_google_model`.

#### 1.1.0

 * New — WooCommerce shopping tools. On stores running WooCommerce 7.0 or newer,
   the chatbot can help shoppers right inside the chat: search and browse your catalog,
   look up a specific product and its options, check live stock and prices, answer
   shipping, returns, refund, and payment questions from your store settings and
   Knowledge Base, and add, change, or remove items in the shopper’s cart. Cart 
   changes come with an Undo button, and every price, stock count, and product detail
   comes straight from your store — the chatbot never makes them up. On sites without
   WooCommerce the tools stay completely hidden.
 * Tag Knowledge Base articles as “policy” or “faq” (under KB Articles) so the store-
   policy answers prefer them for shipping, returns, and refund questions.
 * Faster, cheaper repeat lookups — read-only catalog and policy results are briefly
   cached on sites running a persistent object cache (Redis or Memcached), scoped
   per shopper so nothing leaks between visitors. Tunable via the new `sohaychat_tool_cache_ttl`
   filter.
 * Improved default chatbot instructions — the built-in prompt now greets visitors,
   declines off-topic questions politely, cites Knowledge Base articles as links,
   and answers in the visitor’s language. Custom prompts now recognise `{site_name}`
   and `{current_date}`; your own custom system prompt still takes priority.
 * Fixed — the chat widget no longer briefly showed a false “Chat is temporarily
   unavailable” message right after a successful answer.
 * Fixed — the Conversations inbox now lists chats by most recent activity with 
   correct timestamps regardless of your site’s timezone, and loading older chats
   no longer repeats rows.
 * For developers — a new `sohaychat_system_prompt` filter, a tools/abilities foundation
   with new action and filter hooks, and a conversation tool-call audit table. This
   release also runs a one-time, automatic database update on upgrade.

Older releases are listed in changelog.txt.

## ميٽا

 *  Version **1.2.0**
 *  Last updated **7 ڪلاڪَ اڳ**
 *  Active installations **10 کان گھٽ**
 *  WordPress version ** 6.6 يا وڌيڪ **
 *  Tested up to **7.0.2**
 *  PHP version ** 8.1 يا وڌيڪ **
 *  Language
 * [English (US)](https://wordpress.org/plugins/sohaychat/)
 * Tags
 * [AI](https://snd.wordpress.org/plugins/tags/ai/)[chatbot](https://snd.wordpress.org/plugins/tags/chatbot/)
   [customer support](https://snd.wordpress.org/plugins/tags/customer-support/)[knowledge base](https://snd.wordpress.org/plugins/tags/knowledge-base/)
   [woocommerce](https://snd.wordpress.org/plugins/tags/woocommerce/)
 *  [ترقي يافته ڏيک](https://snd.wordpress.org/plugins/sohaychat/advanced/)

## درجه بندي

No reviews have been submitted yet.

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

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

## تعاون ڪندڙ

 *   [ Mithun Biswas ](https://profiles.wordpress.org/bhoot/)

## سھائتا

چوڻ لاءِ ڪجهه آهي؟ مدد گهرجي؟

 [ڏسو سپورٽ فورم](https://wordpress.org/support/plugin/sohaychat/)