{"id":376485,"date":"2026-09-29T09:16:17","date_gmt":"2026-09-29T09:16:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ai-chatbot-for-online-stores-woobotai\/"},"modified":"2026-10-22T20:44:35","modified_gmt":"2026-10-22T20:44:35","slug":"upcodea-store-chat","status":"publish","type":"plugin","link":"https:\/\/ory.wordpress.org\/plugins\/upcodea-store-chat\/","author":11822212,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.4.0","stable_tag":"0.4.0","tested":"7.1.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"UPCODEA Store Chat","header_author":"UPCODEA","header_description":"AI sales and support chatbot for WooCommerce with real-time product catalog context.","assets_banners_color":"","last_updated":"2026-10-22 20:44:35","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/upcodea.gr","rating":5,"author_block_rating":0,"active_installs":0,"downloads":326,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.0":{"tag":"0.2.0","author":"dervisis","date":"2026-09-29 09:58:21","revision":3718685},"0.2.1":{"tag":"0.2.1","author":"dervisis","date":"2026-09-29 11:06:48","revision":3718843},"0.3.0":{"tag":"0.3.0","author":"dervisis","date":"2026-10-02 18:49:28","revision":3725304},"0.3.1":{"tag":"0.3.1","author":"dervisis","date":"2026-10-22 18:59:15","revision":3760406},"0.4.0":{"tag":"0.4.0","author":"dervisis","date":"2026-10-22 20:44:35","revision":3760514}},"upgrade_notice":{"0.4.0":"<p>Adds order status in the chat and moves to Gemini 3.5 models, since Google has retired Gemini 2.5 for new users. Recommended for all sites.<\/p>","0.3.0":"<p>Smarter product search: natural-language and non-English questions now match products more reliably.<\/p>","0.2.1":"<p>Fixes widget colors sometimes being overridden by theme CSS.<\/p>","0.2.0":"<p>Adds uninstall cleanup, cost-protection controls, and privacy-policy disclosures. Recommended before making the plugin public.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3718621,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3718621,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2.0","0.2.1","0.3.0","0.3.1","0.4.0"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3718966,"resolution":"1","location":"assets","locale":"","width":361,"height":515},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3718966,"resolution":"2","location":"assets","locale":"","width":1093,"height":774}},"screenshots":{"1":"Storefront chat widget.","2":"Settings screen."}},"plugin_section":[],"plugin_tags":[2353,2364,2379,286,143783],"plugin_category":[45],"plugin_contributors":[283374],"plugin_business_model":[],"class_list":["post-376485","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-chatbot","plugin_tags-live-chat","plugin_tags-woocommerce","plugin_tags-woocommerce-chatbot","plugin_category-ecommerce","plugin_contributors-dervisis","plugin_committers-dervisis"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/upcodea-store-chat\/assets\/icon-128x128.png?rev=3718621","icon_2x":"https:\/\/ps.w.org\/upcodea-store-chat\/assets\/icon-256x256.png?rev=3718621","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/upcodea-store-chat\/assets\/screenshot-1.jpg?rev=3718966","caption":"Storefront chat widget."},{"src":"https:\/\/ps.w.org\/upcodea-store-chat\/assets\/screenshot-2.jpg?rev=3718966","caption":"Settings screen."}],"raw_content":"<!--section=description-->\n<p>UPCODEA Store Chat is an AI chatbot and live chat widget for your WooCommerce storefront. Customers can ask about products in plain language \u2014 \"do you have this in blue?\", \"what's on sale under $30?\", \"is this in stock?\" \u2014 and get answers generated from your <strong>live<\/strong> product catalog, not a stale export.<\/p>\n\n<p>Customers can also ask \"where is my order?\" right in the chat. Order status answers come straight from your WooCommerce orders, not from the AI, so they keep working even when your AI usage limit is reached.<\/p>\n\n<p>Developed by <a href=\"https:\/\/upcodea.gr\">UPCODEA<\/a>.<\/p>\n\n<p><strong>Key features<\/strong><\/p>\n\n<ul>\n<li>Floating chat widget with product\/category page awareness.<\/li>\n<li>Understands natural-language questions, even in a different language than your product titles.<\/li>\n<li>Answers grounded in real-time WooCommerce data (price, stock, SKU, description, permalink).<\/li>\n<li>Order status in the chat (\"where is my order?\"): a \"Track my order\" button, or customers simply type their order number and billing email. Logged-in customers see their own orders automatically.<\/li>\n<li>Secure order lookups: guests must match the order number with the billing email used at checkout, and repeated failed attempts are blocked. Addresses, phone numbers and payment details are never shown or sent to the AI.<\/li>\n<li>Order status replies are built by your store, not the AI: they don't use your AI quota and work even when it's used up.<\/li>\n<li>Powered by Google Gemini. Start with a free API key; enable billing on your Google project when your store needs more replies per day.<\/li>\n<li>Nonce-protected, rate-limited REST API endpoint; no API keys ever reach the browser.<\/li>\n<li>Configurable widget appearance (title, button label, colors).<\/li>\n<li>Optional site-wide daily reply cap to protect against unexpected API costs.<\/li>\n<li>Dashboard notice when replies were refused because a usage limit was reached, so you hear about it before your customers do.<\/li>\n<li>Guardrails keep the bot on-topic and resistant to prompt-injection attempts from users.<\/li>\n<\/ul>\n\n<p><strong>Requirements<\/strong><\/p>\n\n<ul>\n<li>WooCommerce 8.0+<\/li>\n<li>A free Google Gemini API key from <a href=\"https:\/\/aistudio.google.com\/apikey\">aistudio.google.com\/apikey<\/a><\/li>\n<\/ul>\n\n<h4>Third-party service<\/h4>\n\n<p>UPCODEA Store Chat relies on the <strong>Google Gemini API<\/strong> to generate chat replies. To do so, the plugin sends the visitor's chat message and a small, relevant slice of your product catalog (name, price, stock, SKU, short description, permalink) to Google's servers for each chat turn.<\/p>\n\n<p>If you enable order status lookups (off by default), follow-up questions about a verified order also send that order's number, status, dates, items, total and shipping method. Shipping and billing addresses, phone numbers and payment details are never sent. The order lookup itself and its reply are handled on your own server. No chat content is stored on your own server; conversation history lives only in the visitor's browser for the duration of the session.<\/p>\n\n<p>By using this plugin you are sending customer-submitted data to a third party. Please review and link to in your own store's privacy policy:<\/p>\n\n<ul>\n<li>Google Privacy Policy: https:\/\/policies.google.com\/privacy<\/li>\n<li>Google Gemini API Terms: https:\/\/ai.google.dev\/gemini-api\/terms<\/li>\n<\/ul>\n\n<p>UPCODEA Store Chat adds suggested language to your site's Privacy Policy draft automatically (Settings \u2192 Privacy \u2192 \"Suggest Text\") \u2014 review and publish it before going live.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>upcodea-store-chat<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the zip via Plugins \u2192 Add New \u2192 Upload Plugin.<\/li>\n<li>Activate the plugin. WooCommerce must already be installed and active.<\/li>\n<li>Go to <strong>UPCODEA Store Chat<\/strong> in the wp-admin menu.<\/li>\n<li>Paste a free Gemini API key from <a href=\"https:\/\/aistudio.google.com\/apikey\">aistudio.google.com\/apikey<\/a>.<\/li>\n<li>Optionally, turn on <strong>Order status lookups<\/strong> so customers can check their orders in the chat.<\/li>\n<li>Customize the widget title, button label and colors as needed.<\/li>\n<li>Review Settings \u2192 Privacy and publish the suggested disclosure text.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20cost%20money%20to%20run%3F\"><h3>Does this cost money to run?<\/h3><\/dt>\n<dd><p>The plugin itself is free, with no subscription or paid upgrade. AI replies are generated by Google Gemini under your own API key.<\/p>\n\n<p>A free Gemini API key works, but Google gives free keys low daily request limits: enough to set up and test the chat, usually not enough for a live store with regular traffic. To raise the limits, enable billing on the Google project behind your key. The same key keeps working and nothing changes in the plugin. Google then charges you directly for what you use; see Google's own pricing and rate-limit pages for current figures.<\/p>\n\n<p>You can also set a daily reply cap in the plugin's settings to hard-limit usage and cost.<\/p><\/dd>\n<dt id=\"the%20chat%20says%20it%27s%20%22very%20busy%22.%20what%20happened%3F\"><h3>The chat says it's \"very busy\". What happened?<\/h3><\/dt>\n<dd><p>Your Gemini API key reached Google's usage limit, which happens quickly with a free key. The plugin shows a notice on your Dashboard when this happens. The chat starts answering again when Google resets the limit, or straight away once billing is enabled on your Google project.<\/p><\/dd>\n<dt id=\"can%20customers%20check%20their%20order%20status%20in%20the%20chat%3F\"><h3>Can customers check their order status in the chat?<\/h3><\/dt>\n<dd><p>Yes. Turn on <strong>Order status lookups<\/strong> in the plugin settings. Customers can then click \"Track my order\" in the chat, or just type their order number and billing email. Logged-in customers see their recent orders straight away, with a link to each one in their account.<\/p>\n\n<p>Guests must give both the order number and the billing email used at checkout, the same details WooCommerce's own order tracking asks for. After several failed attempts from the same visitor, lookups pause for an hour.<\/p><\/dd>\n<dt id=\"does%20checking%20an%20order%20use%20my%20ai%20quota%3F\"><h3>Does checking an order use my AI quota?<\/h3><\/dt>\n<dd><p>No. Order status replies are built by your store from the order itself, without calling the AI, so they don't count toward Google's limits or the plugin's daily reply cap, and they keep working when either is reached. Only follow-up questions about the order, such as \"when will it arrive?\", go to the AI.<\/p><\/dd>\n<dt id=\"where%20does%20the%20customer%27s%20data%20go%3F\"><h3>Where does the customer's data go?<\/h3><\/dt>\n<dd><p>Chat messages and a relevant slice of your product catalog are sent to Google's Gemini API to generate a reply. See the \"Third-party service\" section above.<\/p><\/dd>\n<dt id=\"can%20i%20use%20my%20own%20openai%2Fclaude%20key%20instead%20of%20gemini%3F\"><h3>Can I use my own OpenAI\/Claude key instead of Gemini?<\/h3><\/dt>\n<dd><p>Not in the current version \u2014 Gemini-only for now.<\/p><\/dd>\n<dt id=\"does%20the%20bot%20see%20private%2Fdraft%20products%3F\"><h3>Does the bot see private\/draft products?<\/h3><\/dt>\n<dd><p>No. The catalog query only fetches published, publicly visible products via WooCommerce's own product query APIs.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20uninstall%20the%20plugin%3F\"><h3>What happens if I uninstall the plugin?<\/h3><\/dt>\n<dd><p>All plugin options and transients are removed automatically on deletion (not on simple deactivation).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Added: order status in the chat (\"where is my order?\"). Customers use the new \"Track my order\" button, or type their order number and billing email; logged-in customers see their own recent orders. Off by default; enable it under <strong>Order Status<\/strong> in the settings.<\/li>\n<li>Added: order lookups are verified on your server on every message (order number + billing email for guests), with a lockout after repeated failed attempts. Addresses, phone numbers and payment details are never shown or sent to the AI.<\/li>\n<li>Added: order status replies are built without the AI, so they keep working when the AI usage limit is reached and don't count toward the daily reply cap.<\/li>\n<li>Added: Dashboard notice when chat replies were refused because Google's usage limit or the plugin's daily cap was reached.<\/li>\n<li>Changed: the chat now uses Google's current Gemini 3.5 Flash and Flash-Lite models. Google has retired the Gemini 2.5 models for new users; sites with a 2.5 model saved switch to Gemini 3.5 Flash automatically.<\/li>\n<li>Changed: the AI is only asked for extra product-search keywords when a plain catalog search finds nothing, so most messages use fewer AI requests.<\/li>\n<li>Changed: when the AI is unavailable or over its limit, customers see a friendly \"busy\" message instead of the raw error from Google. The full error is still logged for you.<\/li>\n<li>Changed: chat replies keep their line breaks.<\/li>\n<li>Changed: the settings and this readme now explain the limits of free Gemini API keys and how to raise them.<\/li>\n<li>Fixed: replies could be cut short or come back empty on newer Gemini models that \"think\" before answering.<\/li>\n<li>Added: <code>woobotai_order_lookup_id<\/code>, <code>woobotai_order_data<\/code> and <code>woobotai_order_status_reply<\/code> filters for developers, e.g. for stores using custom order numbers.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>wp-rankings verification string: <a href=\"https:\/\/wp-rankings.com\/plugins\/upcodea-store-chat\">https:\/\/wp-rankings.com\/plugins\/upcodea-store-chat<\/a><\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Added: smarter product search. Natural-language questions are now translated into catalog search keywords (including an English translation, since most catalogs use English product titles) before searching, so phrasing that shares no words with a product's title or description \u2014 including questions asked in a different language \u2014 can still find it.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Fixed: the floating button, header, user message bubble, and send button colors could be silently overridden by theme CSS that sets <code>background-color<\/code> on generic button selectors. Colors are now set explicitly (including the <code>background-color<\/code> longhand, not just the <code>background<\/code> shorthand) with the priority needed to respect the color pickers in the plugin settings.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Changed: plugin name to \"UPCODEA Store Chat\" and text domain to <code>upcodea-store-chat<\/code>. The original working name (\"WoobotAI\") was flagged during WordPress.org review as confusingly similar to an existing WooCommerce chatbot plugin and to a registered chatbot trademark, so it was replaced before the first public release.<\/li>\n<li>Added: site-wide daily reply cap to protect against unexpected API costs.<\/li>\n<li>Added: <code>uninstall.php<\/code> to fully clean up plugin data on removal.<\/li>\n<li>Added: Privacy Policy suggested-text integration and in-widget data disclaimer.<\/li>\n<li>Added: minimum PHP version check with a graceful admin notice.<\/li>\n<li>Improved: friendlier handling of Gemini safety-blocked responses.<\/li>\n<li>Improved: error logging via the WooCommerce logger for easier troubleshooting.<\/li>\n<li>Fixed: chat now falls back to catalog search if an invalid <code>product_id<\/code> is supplied.<\/li>\n<li>Reduced: outbound AI request timeout to avoid PHP execution-time fatals on shared hosting.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial MVP: chat widget, REST endpoint, WooCommerce catalog context, Gemini integration, admin settings.<\/li>\n<\/ul>","raw_excerpt":"Free AI-powered live chat &amp; chatbot for WooCommerce \u2014 answers product and order-status questions in real time, no paid upgrade needed.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/376485","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=376485"}],"author":[{"embeddable":true,"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dervisis"}],"wp:attachment":[{"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=376485"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=376485"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=376485"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=376485"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=376485"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=376485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}