{"id":369117,"date":"2026-09-27T11:04:18","date_gmt":"2026-09-27T11:04:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/storesidekick-for-woocommerce\/"},"modified":"2026-09-28T17:51:38","modified_gmt":"2026-09-28T17:51:38","slug":"storegauge-ai","status":"publish","type":"plugin","link":"https:\/\/kab.wordpress.org\/plugins\/storegauge-ai\/","author":23566366,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.8.9","stable_tag":"0.8.9","tested":"7.1.2","requires":"6.9","requires_php":"7.2","requires_plugins":null,"header_name":"StoreGauge AI for WooCommerce","header_author":"StoreGauge AI","header_description":"A private, bring-your-own-key AI assistant for WooCommerce: chat with your live store data in any language \u2014 read-only, audit-logged, with automatic charts.","assets_banners_color":"5e3c8d","last_updated":"2026-09-28 17:51:38","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/storesidekick\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":223,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.6.0":{"tag":"0.6.0","author":"storesidekick","date":"2026-09-27 12:28:46","revision":3715475},"0.6.1":{"tag":"0.6.1","author":"storesidekick","date":"2026-09-27 12:56:35","revision":3715507},"0.6.2":{"tag":"0.6.2","author":"storesidekick","date":"2026-09-27 14:54:04","revision":3715632},"0.6.3":{"tag":"0.6.3","author":"storesidekick","date":"2026-09-27 15:27:16","revision":3715665},"0.6.4":{"tag":"0.6.4","author":"storesidekick","date":"2026-09-27 15:27:16","revision":3715665},"0.7.0":{"tag":"0.7.0","author":"storesidekick","date":"2026-09-27 16:57:44","revision":3715757},"0.7.1":{"tag":"0.7.1","author":"storesidekick","date":"2026-09-27 17:19:08","revision":3715785},"0.7.10":{"tag":"0.7.10","author":"storesidekick","date":"2026-09-28 11:05:10","revision":3716982},"0.7.11":{"tag":"0.7.11","author":"storesidekick","date":"2026-09-28 11:26:37","revision":3717032},"0.7.2":{"tag":"0.7.2","author":"storesidekick","date":"2026-09-27 17:29:45","revision":3715801},"0.7.3":{"tag":"0.7.3","author":"storesidekick","date":"2026-09-27 17:55:09","revision":3715884},"0.7.4":{"tag":"0.7.4","author":"storesidekick","date":"2026-09-27 18:03:58","revision":3715927},"0.7.5":{"tag":"0.7.5","author":"storesidekick","date":"2026-09-27 18:13:32","revision":3715945},"0.7.6":{"tag":"0.7.6","author":"storesidekick","date":"2026-09-28 09:19:51","revision":3716747},"0.7.7":{"tag":"0.7.7","author":"storesidekick","date":"2026-09-28 09:36:14","revision":3716777},"0.7.8":{"tag":"0.7.8","author":"storesidekick","date":"2026-09-28 10:05:19","revision":3716843},"0.7.9":{"tag":"0.7.9","author":"storesidekick","date":"2026-09-28 10:17:21","revision":3716882},"0.8.0":{"tag":"0.8.0","author":"storesidekick","date":"2026-09-28 11:35:40","revision":3717048},"0.8.1":{"tag":"0.8.1","author":"storesidekick","date":"2026-09-28 11:47:47","revision":3717069},"0.8.2":{"tag":"0.8.2","author":"storesidekick","date":"2026-09-28 12:06:44","revision":3717117},"0.8.3":{"tag":"0.8.3","author":"storesidekick","date":"2026-09-28 16:06:56","revision":3717549},"0.8.4":{"tag":"0.8.4","author":"storesidekick","date":"2026-09-28 16:17:12","revision":3717557},"0.8.5":{"tag":"0.8.5","author":"storesidekick","date":"2026-09-28 16:31:40","revision":3717587},"0.8.6":{"tag":"0.8.6","author":"storesidekick","date":"2026-09-28 16:48:59","revision":3717610},"0.8.7":{"tag":"0.8.7","author":"storesidekick","date":"2026-09-28 17:06:15","revision":3717643},"0.8.8":{"tag":"0.8.8","author":"storesidekick","date":"2026-09-28 17:18:01","revision":3717652},"0.8.9":{"tag":"0.8.9","author":"storesidekick","date":"2026-09-28 17:51:38","revision":3717711}},"upgrade_notice":{"0.2.1":"<p>Security hardening of the audit log: anonymous requests can no longer create audit entries, and old entries are pruned automatically. Recommended for all users.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3715368,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3715368,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3715368,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.6.0","0.6.1","0.6.2","0.6.3","0.6.4","0.7.0","0.7.1","0.7.10","0.7.11","0.7.2","0.7.3","0.7.4","0.7.5","0.7.6","0.7.7","0.7.8","0.7.9","0.8.0","0.8.1","0.8.2","0.8.3","0.8.4","0.8.5","0.8.6","0.8.7","0.8.8","0.8.9"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3715475,"resolution":"1","location":"assets","locale":"","width":1030,"height":700},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3715475,"resolution":"2","location":"assets","locale":"","width":764,"height":1624},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3715475,"resolution":"3","location":"assets","locale":"","width":764,"height":1624},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3715475,"resolution":"4","location":"assets","locale":"","width":764,"height":1624},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3715475,"resolution":"5","location":"assets","locale":"","width":764,"height":1624}},"screenshots":{"1":"Connect any AI provider with your own API key \u2014 OpenRouter, Google Gemini, or any OpenAI-compatible endpoint.","2":"Ask about your store in plain language: daily sales for the last 90 days with an automatic chart and the top-performing days.","3":"Attach a product photo and a vision model writes SEO descriptions, keywords and alt text for it.","4":"Customer privacy is built in: emails are always masked in every answer.","5":"A daily briefing surfaces what deserves attention \u2014 stuck orders, low stock \u2014 with one-click follow-ups."}},"plugin_section":[],"plugin_tags":[2353,1320,2364,242115,286],"plugin_category":[45],"plugin_contributors":[282953],"plugin_business_model":[],"class_list":["post-369117","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-assistant","plugin_tags-chatbot","plugin_tags-mcp","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-storesidekick","plugin_committers-storesidekick"],"banners":{"banner":"https:\/\/ps.w.org\/storegauge-ai\/assets\/banner-772x250.png?rev=3715368","banner_2x":"https:\/\/ps.w.org\/storegauge-ai\/assets\/banner-1544x500.png?rev=3715368","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/storegauge-ai\/assets\/icon-256x256.png?rev=3715368","icon_2x":"https:\/\/ps.w.org\/storegauge-ai\/assets\/icon-256x256.png?rev=3715368","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/storegauge-ai\/assets\/screenshot-1.png?rev=3715475","caption":"Connect any AI provider with your own API key \u2014 OpenRouter, Google Gemini, or any OpenAI-compatible endpoint."},{"src":"https:\/\/ps.w.org\/storegauge-ai\/assets\/screenshot-2.png?rev=3715475","caption":"Ask about your store in plain language: daily sales for the last 90 days with an automatic chart and the top-performing days."},{"src":"https:\/\/ps.w.org\/storegauge-ai\/assets\/screenshot-3.png?rev=3715475","caption":"Attach a product photo and a vision model writes SEO descriptions, keywords and alt text for it."},{"src":"https:\/\/ps.w.org\/storegauge-ai\/assets\/screenshot-4.png?rev=3715475","caption":"Customer privacy is built in: emails are always masked in every answer."},{"src":"https:\/\/ps.w.org\/storegauge-ai\/assets\/screenshot-5.png?rev=3715475","caption":"A daily briefing surfaces what deserves attention \u2014 stuck orders, low stock \u2014 with one-click follow-ups."}],"raw_content":"<!--section=description-->\n<p>StoreGauge AI for WooCommerce adds a private AI assistant to your WordPress dashboard. Ask questions like \"How did sales trend last week?\", \"Which products are running low?\" or \"Who are my best customers?\" \u2014 and get answers from your live store data, with automatic charts, quick prompt chips and a short daily briefing on issues that deserve attention.<\/p>\n\n<p>Bring your own key: connect Google Gemini, OpenRouter or any OpenAI-compatible provider \u2014 including a custom endpoint like GMI Cloud or your own local server. Your API key and your store data travel directly from your server to the provider you choose: no middleman service, no data passing through us.<\/p>\n\n<p>Safe by design: the assistant is read-only \u2014 it can analyze revenue, orders, stock, customers, coupons and reviews, but it can never modify anything. Customer emails are masked, every AI access is written to an audit log, and everything is OFF until you enable it.<\/p>\n\n<p>Also included: read-only store abilities for the WordPress 7.1 Abilities API, so external AI assistants (via an MCP adapter) can query the same data \u2014 with the same masking and audit trail.<\/p>\n\n<p>StoreGauge AI connects your WooCommerce store to the AI assistant of your choice \u2014 safely.<\/p>\n\n<ul>\n<li><strong>AI chat sidebar in wp-admin<\/strong> \u2014 ask about your shop in plain language. Answers stream in live, and the AI calls the read-only store tools itself with its own arguments: \"compare last 7 days vs last 30 days\" just works. Pick the model per chat from a dropdown with capability badges (Vision, Tools, context size), attach a product photo or a text file, and every conversation is stored in your own database. Uses YOUR API key with any OpenAI-compatible provider (OpenAI, Gemini, OpenRouter, Groq, Mistral, Ollama, LM Studio\u2026). Your key and your data never pass through us.<\/li>\n<li><strong>Read-only store abilities<\/strong> for the WordPress Abilities API \/ official MCP adapter: revenue summaries, recent orders, low-stock products, top sellers, product prices with unit costs (so the AI can reason about pricing and margins). Every ability is OFF by default and re-checks permissions on every single call.<\/li>\n<li><strong>Local audit log<\/strong> \u2014 every AI-visible action is recorded in your own database, with customer contact details masked and automatic pruning after 30 days (filterable).<\/li>\n<\/ul>\n\n<h4>External services<\/h4>\n\n<p>This plugin contacts one external service: the AI provider <strong>you<\/strong> choose and configure in the settings. Nothing is sent anywhere until you enable a feature and paste your own API key.<\/p>\n\n<p>When you use the chat sidebar (or connect an MCP client), your own server sends requests directly to the provider base URL you configured, for example:<\/p>\n\n<ul>\n<li>Google Gemini (<code>https:\/\/generativelanguage.googleapis.com\/v1beta\/openai<\/code>) \u2014 <a href=\"https:\/\/policies.google.com\/terms\">Terms of Service<\/a>, <a href=\"https:\/\/policies.google.com\/privacy\">Privacy Policy<\/a><\/li>\n<li>OpenAI (<code>https:\/\/api.openai.com\/v1<\/code>) \u2014 <a href=\"https:\/\/openai.com\/policies\/terms-of-use\">Terms of Use<\/a>, <a href=\"https:\/\/openai.com\/policies\/privacy-policy\">Privacy Policy<\/a><\/li>\n<li>OpenRouter (<code>https:\/\/openrouter.ai\/api\/v1<\/code>) \u2014 <a href=\"https:\/\/openrouter.ai\/terms\">Terms of Service<\/a>, <a href=\"https:\/\/openrouter.ai\/privacy\">Privacy Policy<\/a><\/li>\n<\/ul>\n\n<p>What is sent with each chat request:<\/p>\n\n<ul>\n<li>Your chat message and the recent conversation history (last 10 messages). If you attach a product photo or a text file, that attachment is included too \u2014 the AI provider needs it to answer.<\/li>\n<li>The results of read-only store tools the AI requests: revenue summaries, order lists (customer contact details masked), low-stock products, top sellers, product prices and costs. This data is included in the request so the provider's AI model can answer.<\/li>\n<li>Your API key, as an authorization header, sent only to the base URL you configured.<\/li>\n<\/ul>\n\n<p>The plugin author receives nothing: no telemetry, no analytics, no proxy server. The API key is stored in your own site's database and never leaves your server except to call the provider you configured.<\/p>\n\n<h4>Privacy<\/h4>\n\n<p>Store data goes directly from your server to the AI provider YOU configure. The plugin author receives nothing.<\/p>\n\n<h4>Roadmap<\/h4>\n\n<ul>\n<li>One-click Claude Desktop connect via the official MCP adapter (STDIO config)<\/li>\n<li>Pro: weekly AI reports, restock lists, bulk product content, cart-recovery drafts \u2014 with dry-run + human approval on every write<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install WooCommerce and WordPress 6.9+.<\/li>\n<li>Upload the plugin and activate it.<\/li>\n<li>Go to Settings \u2192 StoreGauge AI, enable what you need, and paste your AI provider API key.<\/li>\n<li>Optional, for MCP only: if you want to connect an external AI agent \u2014 Claude, Cursor, ChatGPT, Codex or any other MCP client \u2014 to your store, you also need the official WordPress MCP Adapter. Without it there is no MCP endpoint and external agents cannot connect; the chat sidebar above is unaffected and needs nothing extra. Open Settings \u2192 StoreGauge AI \u2192 Connect AI assistants (MCP) and click \"Install adapter\" to add it in one click, with a manual download link if you prefer.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"who%20pays%20for%20the%20ai%20usage%3F\"><h3>Who pays for the AI usage?<\/h3><\/dt>\n<dd><p>You do \u2014 directly to the provider you choose (Google, OpenAI, OpenRouter, Groq\u2026). Free tiers work fine. The plugin author never sees your key or your data.<\/p><\/dd>\n<dt id=\"can%20the%20ai%20change%20my%20store%3F\"><h3>Can the AI change my store?<\/h3><\/dt>\n<dd><p>No. StoreGauge AI is read-only by design. Every ability only describes data, and everything is logged locally.<\/p><\/dd>\n<dt id=\"where%20is%20the%20audit%20log%3F\"><h3>Where is the audit log?<\/h3><\/dt>\n<dd><p>Settings \u2192 StoreGauge AI shows the most recent audit events. Entries are stored as private records in your own database and pruned automatically after 30 days. Developers can change retention with the <code>storegauge_audit_retention_days<\/code> filter (set it to 0 to disable pruning).<\/p><\/dd>\n<dt id=\"where%20are%20my%20conversations%20stored%3F\"><h3>Where are my conversations stored?<\/h3><\/dt>\n<dd><p>In your own site's database \u2014 never on our servers and never in the cloud. Each wp-admin user sees their own conversation; it is trimmed to the last 50 messages and pruned after 30 days. The \"\uff0b\" button in the chat starts a fresh one.<\/p><\/dd>\n<dt id=\"can%20it%20read%20images%3F\"><h3>Can it read images?<\/h3><\/dt>\n<dd><p>Yes, when the selected model supports vision (look for the Vision badge in the model dropdown). Attach a product photo and ask for a description or alt text; plain-text files (.txt, .csv, .md, .json) are also supported.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.8.9<\/h4>\n\n<ul>\n<li>Gross profit now also reports covered_revenue, the part of revenue that actually has a recorded cost. The margin is calculated from that figure, and the result now says so explicitly, so an assistant connecting over MCP cannot misread the margin as a share of total revenue.<\/li>\n<\/ul>\n\n<h4>0.8.8<\/h4>\n\n<ul>\n<li>The setup reminder now also appears if you remove your last connected AI provider later, not only on a brand-new install.<\/li>\n<\/ul>\n\n<h4>0.8.7<\/h4>\n\n<ul>\n<li>The chat assistant is now available as soon as you activate the plugin, and if no AI provider is connected yet it opens with a single button that takes you straight to the settings screen. Connecting an external AI agent over MCP is still opt-in.<\/li>\n<\/ul>\n\n<h4>0.8.6<\/h4>\n\n<ul>\n<li>The installation instructions now spell out that the WordPress MCP Adapter is required only for connecting an external AI agent, that it can be added in one click from the settings screen, and that the chat assistant does not need it.<\/li>\n<\/ul>\n\n<h4>0.8.5<\/h4>\n\n<ul>\n<li>Privacy fix: replies no longer cause WordPress to load emoji images from WordPress.org. The assistant writes emoji often, and WordPress was turning each one into a request to its own servers \u2014 one reply measured eleven of them, revealing the shop manager's IP address to a third party. Emoji still display, using your system's own characters. No images are loaded from anywhere outside your site.<\/li>\n<\/ul>\n\n<h4>0.8.4<\/h4>\n\n<ul>\n<li>Replies render more of the formatting the assistant uses. Task lists (\"- [ ] add your costs\") now show real checkboxes instead of raw brackets, nested lists keep their structure instead of flattening, and a plain typed web address becomes a clickable link.<\/li>\n<li>An image in a reply is shown as a normal link rather than loading the remote picture. This keeps the promise that StoreGauge makes no external requests from your admin.<\/li>\n<\/ul>\n\n<h4>0.8.3<\/h4>\n\n<ul>\n<li>Fixed: raw markdown syntax showing in replies. A heading that the assistant ran onto the end of a sentence (\"I'll pull the data.## Best day\") displayed its ## markers instead of a heading, and a stray escaped asterisk (&#042;) appeared literally when the assistant left emphasis unclosed. Headings are now recognised mid-line and stray escapes are cleaned up. Ordinary text containing a # is unaffected, and code is untouched.<\/li>\n<\/ul>\n\n<h4>0.8.2<\/h4>\n\n<ul>\n<li>Fixed: the Copy for LLM prompt split the Windows Claude Desktop config path across a line break, so an assistant following it received a broken path. The prompt also now lists all 14 abilities including gross profit.<\/li>\n<\/ul>\n\n<h4>0.8.1<\/h4>\n\n<ul>\n<li>Fixed: gross profit and the other period tools disagreed on revenue whenever a refund existed. Gross profit nets refunds, because a refunded sale is not revenue and WooCommerce does not rewrite the stored cost snapshot either, while the revenue, daily and category tools report revenue before refunds. Rather than leave two different revenue figures unexplained, every gross profit answer now also returns revenue_gross and refunded, so the two reconcile exactly.<\/li>\n<\/ul>\n\n<h4>0.8.0<\/h4>\n\n<ul>\n<li>New: realised gross profit. The assistant can now report what the store actually made over a period, per month, using the cost (COGS) snapshot WooCommerce stores on each order when it is paid, rather than today's catalogue prices.<\/li>\n<li>Profit is only ever calculated on order lines that have a recorded cost. Every answer carries a coverage percentage alongside the profit, and revenue on lines with no recorded cost is reported separately and excluded, because its cost is genuinely unknown. When no line has a cost, the assistant says the records are missing instead of reporting zero profit.<\/li>\n<li>Coverage is assessed per order line rather than per order, so an order mixing a costed and an uncosted product is never counted as fully costed.<\/li>\n<li>Refunds are netted out of both revenue and cost for the period.<\/li>\n<\/ul>\n\n<h4>0.7.11<\/h4>\n\n<ul>\n<li>The assistant no longer invents totals it cannot support. Asked \"so what profit would that have been?\" it used to multiply a margin percentage by revenue and present the result as a rough estimate, and it could also subtract its way to a COGS figure. Both are now forbidden outright, even when labelled rough, ballpark or indicative: when the data cannot support a total, the assistant says so, names what is missing, and stops.<\/li>\n<\/ul>\n\n<h4>0.7.10<\/h4>\n\n<ul>\n<li>Top sellers now accepts a day range like the other period tools (1-365, default 30). It previously reported 30-day numbers no matter what a client asked for, because the window was hardcoded and the parameter was not declared.<\/li>\n<\/ul>\n\n<h4>0.7.9<\/h4>\n\n<ul>\n<li>The Copy for LLM prompt now states in one line that the endpoint also lists WordPress and WooCommerce abilities, so the 13 StoreGauge tools are never mistaken for the whole list.<\/li>\n<\/ul>\n\n<h4>0.7.8<\/h4>\n\n<ul>\n<li>Fixed: all period tools (revenue, daily sales, categories, top sellers\/customers, refunds) now share one reporting window of N calendar days including today, so their totals always reconcile; previously the daily chart silently dropped orders paid on the partial first day of the window.<\/li>\n<li>Fixed: the refund rate is now measured against PAID orders (the only ones that can be refunded); pending, on-hold and cancelled orders no longer dilute the base.<\/li>\n<li>Improved: ability and tool descriptions now state their exact scope (for example inventory value covers stock-managed products only) so assistants do not read different tools as contradicting each other.<\/li>\n<\/ul>\n\n<h4>0.7.7<\/h4>\n\n<ul>\n<li>The connect prompt now carries the hard-won details from a real OpenCode session: desktop CLI path, no hot reload (restart required), \"oauth\": false on remote entries, strip the spaces from the application password before base64, the correct verify command, and an honest inventory of everything the endpoint lists (13 read-only StoreGauge tools + WordPress\/WooCommerce abilities, whose write tools the endpoint refuses; a WordPress user without edit rights makes that permanent).<\/li>\n<\/ul>\n\n<h4>0.7.6<\/h4>\n\n<ul>\n<li>Fixed: UI alignment polish \u2014 provider logos are now identical in size (the Google tile grew 2px from its border), action buttons line up across cards, icons sit centered in buttons and pills, and chat bubbles are exactly the same width.<\/li>\n<\/ul>\n\n<h4>0.7.5<\/h4>\n\n<ul>\n<li>The connect wizard now uses clean, generic line icons (adapter, abilities, credential, actions) and a row of supported client names \u2014 no third-party logos are bundled, by design.<\/li>\n<\/ul>\n\n<h4>0.7.4<\/h4>\n\n<ul>\n<li>The Copy for LLM prompt now also offers the direct Streamable HTTP route (for clients with native remote-MCP support and a custom Authorization header) before falling back to the official stdio proxy, ends with one concrete self-test call, and is shown on the page so you can read it before copying.<\/li>\n<li>The wizard now lists what the assistant can do (13 read-only tools) and where each client config lives.<\/li>\n<\/ul>\n\n<h4>0.7.3<\/h4>\n\n<ul>\n<li>Improved: the Copy for LLM prompt now targets the client it is pasted into (Claude Code, OpenCode, Claude Desktop, Cursor), follows each client official config location and CLI syntax, and prefers the user-scope file so the connection works in every project.<\/li>\n<\/ul>\n\n<h4>0.7.2<\/h4>\n\n<ul>\n<li>Fixed: the Copy for LLM button now produces the full setup prompt (a copy error stopped it from working).<\/li>\n<\/ul>\n\n<h4>0.7.1<\/h4>\n\n<ul>\n<li>New: product prices and recorded unit costs are now exposed to external MCP assistants (13th read-only ability).<\/li>\n<li>The connect wizard follows the official MCP client configuration formats (one mcpServers config for Claude Desktop\/Claude Code\/Cursor + one for OpenCode), uses copy icons, and can copy a ready-to-paste setup prompt for other AI assistants \u2014 with the application password deliberately left as a placeholder so it never ends up in a chat.<\/li>\n<li>The wizard explains that a lost application password can simply be replaced (old ones revoked from the profile).<\/li>\n<\/ul>\n\n<h4>0.7.0<\/h4>\n\n<ul>\n<li>New: Connect AI assistants (MCP) wizard \u2014 one-click install of the official WordPress MCP Adapter, application-password creation, ready-to-paste client configuration for Claude Desktop, Claude Code and Cursor, and a connection test.<\/li>\n<li>The wizard detects what is already set up and only asks for what is missing; every step is audit-logged.<\/li>\n<\/ul>\n\n<h4>0.6.4<\/h4>\n\n<ul>\n<li>Fix: charts no longer break on long ranges \u2014 90-day views now render as clean weekly buckets with readable date labels, instead of hairline bars with clipped fragments.<\/li>\n<\/ul>\n\n<h4>0.6.3<\/h4>\n\n<ul>\n<li>Fix: the settings page now shows the reason when a provider cannot be added (for example adding a provider that is already connected) instead of failing silently.<\/li>\n<\/ul>\n\n<h4>0.6.2<\/h4>\n\n<ul>\n<li>New: provider model catalogs auto-refresh once a day when the chat opens \u2014 new provider models appear without a manual reload.<\/li>\n<li>New: friendly guard against adding a connected provider twice as a custom provider.<\/li>\n<li>Improvement: empty text files and unreadable images are now caught before sending, with clear warnings.<\/li>\n<\/ul>\n\n<h4>0.6.1<\/h4>\n\n<ul>\n<li>New: margin insights \u2014 a 12th read-only ability computes per-product profit margins from recorded unit costs (COGS), with honest counts of products missing cost data and guidance to enable it.<\/li>\n<\/ul>\n\n<h4>0.6.0<\/h4>\n\n<ul>\n<li>Renamed the plugin to StoreGauge AI for WooCommerce.<\/li>\n<\/ul>\n\n<h4>0.5.6<\/h4>\n\n<ul>\n<li>Fix: attaching an unsupported file now shows a clear message about allowed file types instead of the generic API-key error.<\/li>\n<\/ul>\n\n<h4>0.5.5<\/h4>\n\n<ul>\n<li>Fixed: math formulas sent by the AI now render as plain readable text instead of raw LaTeX code, and the assistant is instructed to avoid LaTeX markup altogether<\/li>\n<\/ul>\n\n<h4>0.5.4<\/h4>\n\n<ul>\n<li>Fixed: text domain now matches the plugin slug and all database queries use identifier placeholders (full WordPress.org Plugin Check compliance)<\/li>\n<li>Improved: clearer settings screen \u2014 the MCP\/API toggle now explains that an external MCP adapter plugin connects AI assistants, and every access is audit-logged; the chat toggle explains where conversations live<\/li>\n<li>Improved: consistent button and input heights across the provider cards, and card action buttons optically aligned with the provider subtitle<\/li>\n<li>Improved: the \"Load models from provider\" button now has a tooltip explaining it re-fetches the current list (run it again when a provider adds models)<\/li>\n<\/ul>\n\n<h4>0.5.3<\/h4>\n\n<ul>\n<li>Fixed: removing a model in the settings now immediately removes it from the chat model picker (the picker re-fetches instead of using a page-old list)<\/li>\n<li>Fixed: if your saved chat model is removed from its provider, the assistant falls back to another model of the same provider instead of silently using the removed one<\/li>\n<li>Fixed: asking the AI to reveal a customer now gets a polite privacy explanation together with the masked data, instead of a bare refusal<\/li>\n<li>Fixed: monetary amounts always follow the store currency set in WooCommerce (verified with EUR and USD)<\/li>\n<\/ul>\n\n<h4>0.5.2<\/h4>\n\n<ul>\n<li>Fixed: the quick prompt chips are no longer cut off by their own scrollbar or squeezed on short screens<\/li>\n<li>Fixed: wide tables and long date ranges no longer create a horizontal scrollbar that covers the last chat lines \u2014 tables wrap to fit and long ranges shrink the chart bars<\/li>\n<\/ul>\n\n<h4>0.5.1<\/h4>\n\n<ul>\n<li>Fixed: the coupon usage ability silently reported \"no coupons\" on WooCommerce 11, where an API it relied on was removed \u2014 coupons are now listed correctly with their discount type and usage count<\/li>\n<li>Fixed: charts now survive a page reload \u2014 the daily-sales series is stored with the message and redrawn on restore, for every provider and model<\/li>\n<li>Fixed: replies now reliably follow the language you write in, even for small free models that previously drifted mid-conversation<\/li>\n<li>Improved: conversation memory is now safe for every model \u2014 earlier assistant replies no longer re-enter the AI context (weak models copied stale numbers from them or drifted into another language); your questions stay in context and the assistant re-fetches live data for follow-ups<\/li>\n<li>Improved: clearer custom-provider form examples (GMI Cloud endpoint) and a generic \"Model name\" hint, since model ids differ per provider<\/li>\n<li>Improved: new server icon for custom providers (Lucide, ISC)<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>New: 7 more read-only abilities \u2014 daily sales series (with automatic charts in the chat), top customers (masked), coupon usage, refund rate, review summaries, sales by category, inventory value. The assistant now answers trends, customers, coupons, refunds and inventory questions from real data<\/li>\n<li>New: quick prompt chips above the input \u2014 one tap for revenue, sales trend, low stock, top sellers and pricing analysis<\/li>\n<li>New: proactive daily briefing \u2014 a badge on the chat bubble shows deterministic findings (stuck orders, stock running out, revenue drops, refund spikes), each with a one-tap follow-up question; findings are computed locally from your database, never invented by the AI<\/li>\n<li>Improved: the assistant is now explicitly instructed never to invent or estimate numbers \u2014 when data is missing it says exactly what it cannot see<\/li>\n<\/ul>\n\n<h4>0.4.2<\/h4>\n\n<ul>\n<li>Improved: chat footer alignment \u2014 paperclip, input text and send arrow are now properly centered<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Improved: full visual redesign of the chat panel \u2014 purple brand header, restyled bubbles, model dropdown, badges, attachment chips with file size, and message timestamps<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>New: multiple AI providers side by side \u2014 connect Google Gemini, OpenRouter and any custom OpenAI-compatible endpoint, each with its own API key<\/li>\n<li>New: per-provider model lists \u2014 load the catalog automatically, remove models you don't want, or add models by hand<\/li>\n<li>New: the chat model dropdown groups models under each connected provider<\/li>\n<li>Improved: providers that disconnect and models the provider can't run are remembered and hidden<\/li>\n<li>Improved: existing single-provider setups migrate automatically<\/li>\n<\/ul>\n\n<h4>0.3.2<\/h4>\n\n<ul>\n<li>Improved: the whole chat UI now uses one consistent inline SVG icon set (Lucide, ISC license) \u2014 send\/stop, plus, paperclip, copy, close, chevron and check marks<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Fixed: models selected from the dropdown now work on providers whose \/models returns prefixed ids (e.g. \"models\/gemini-2.5-flash\")<\/li>\n<li>Improved: answers render with smooth typewriter pacing so streaming is always visible, even with very fast models<\/li>\n<li>Improved: model dropdown shows chat models first \u2014 non-chat models (TTS, music, robotics\u2026) hide behind \"show more\"<\/li>\n<li>Improved: settings field renamed to \"Default model\" with clearer description<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>New: streaming replies \u2014 answers appear live as the AI writes them, with a stop button<\/li>\n<li>New: model dropdown in the chat header, with capability badges (Vision, Tools, context size) loaded from your provider's \/models endpoint \u2014 with OpenRouter, one key unlocks hundreds of models. Non-chat models (TTS, music, robotics\u2026) are tucked behind \"show more\"<\/li>\n<li>New: attachments \u2014 product photos (vision models) and text files (.txt, .csv, .md, .json)<\/li>\n<li>New: conversations persist in your own database, per wp-admin user, with \"new chat\" to clear<\/li>\n<li>New: pricing analysis \u2014 the AI can read product prices, sale prices and unit costs (COGS, when recorded) to compute margins and suggest pricing<\/li>\n<li>Fixed: customer PII masking now also enforced in the pricing ability<\/li>\n<\/ul>\n\n<h4>0.2.2<\/h4>\n\n<ul>\n<li>New: full Markdown rendering in chat replies \u2014 headings, ordered\/unordered lists, tables, links, inline code, code blocks, blockquotes, bold\/italic\/strikethrough; raw markers never leak into the UI<\/li>\n<li>Housekeeping: dev-only files moved out of the release build<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Security: permission-denied probes from anonymous visitors no longer write audit rows (prevents database flooding via the abilities REST endpoint)<\/li>\n<li>Audit log is pruned automatically after 30 days (filterable via <code>storegauge_audit_retention_days<\/code>; 0 disables pruning)<\/li>\n<li>Abilities now declare explicit MCP exposure meta for the official MCP adapter<\/li>\n<li>wp.org submission hardening: Requires PHP lowered to 7.2, directory-standard readme with external-services disclosure<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>New: tool-calling chat \u2014 the AI requests store data itself with dynamic arguments (any date range 1\u2013365 days)<\/li>\n<li>New: retry with backoff on transient provider errors (429\/500\/503)<\/li>\n<li>New: markdown rendering (bold\/italic) in chat replies<\/li>\n<li>New: replies always follow the language you write in<\/li>\n<li>Improved: provider errors now fully logged to the audit trail<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release: read-only store abilities, BYOK chat sidebar, audit log.<\/li>\n<\/ul>","raw_excerpt":"Bring-your-own-key AI assistant for WooCommerce. Chat with your live store data \u2014 read-only, audit-logged, with automatic charts.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/369117","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=369117"}],"author":[{"embeddable":true,"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/storesidekick"}],"wp:attachment":[{"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=369117"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=369117"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=369117"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=369117"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=369117"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=369117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}