{"id":384106,"date":"2026-10-15T21:01:21","date_gmt":"2026-10-15T21:01:21","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/nexora-shopping-assistant-for-woocommerce\/"},"modified":"2026-10-15T21:01:07","modified_gmt":"2026-10-15T21:01:07","slug":"nexoracreation-ai-shopping-assistant","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/nexoracreation-ai-shopping-assistant\/","author":23583468,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.4","stable_tag":"1.2.4","tested":"7.1.3","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"Nexora Creation AI Shopping Assistant for WooCommerce","header_author":"Nexora Creation","header_description":"Bring-your-own-key AI shopping assistant for WooCommerce that recommends products from your catalogue and adds simple products to the cart.","assets_banners_color":"","last_updated":"2026-10-15 21:01:07","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/nexoracreation.com\/nexora-shopping-assistant-for-woocommerce-plugin\/","header_author_uri":"https:\/\/nexoracreation.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":65,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.4":{"tag":"1.2.4","author":"nexoracreation","date":"2026-10-15 21:01:07","revision":3749302}},"upgrade_notice":{"1.2.4":"<p>Updated the public plugin name, directory slug and text domain for the ongoing WordPress.org review. No settings or data migration is required; legacy ConvoCart compatibility identifiers remain unchanged.<\/p>","1.2.3":"<p>URL and metadata maintenance update. No settings or data migration is required. Provider endpoints and legacy ConvoCart compatibility remain unchanged.<\/p>","1.2.2":"<p>Earlier rename from ConvoCart AI to Nexora Shopping Assistant for WooCommerce. Deactivate ConvoCart AI before activating that version, and keep &quot;Preserve data on uninstall&quot; enabled before deleting the old plugin. Settings and data carry over.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3749302,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3749302,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.4"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Chat popup with product recommendations and add-to-cart.","2":"Providers screen with encrypted API keys, model selection and fallback order.","3":"Settings &amp; Styling screen."}},"plugin_section":[],"plugin_tags":[2353,2364,139790,247874,286],"plugin_category":[45],"plugin_contributors":[286994],"plugin_business_model":[],"class_list":["post-384106","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-chatbot","plugin_tags-product-recommendations","plugin_tags-shopping-assistant","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-nexoracreation","plugin_committers-nexoracreation"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/nexoracreation-ai-shopping-assistant\/assets\/icon-128x128.png?rev=3749302","icon_2x":"https:\/\/ps.w.org\/nexoracreation-ai-shopping-assistant\/assets\/icon-256x256.png?rev=3749302","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Nexora Creation AI Shopping Assistant adds a chat popup to your WooCommerce store. Shoppers describe what they want in their own words, and the assistant answers with a short reply and product cards from your catalogue.<\/p>\n\n<p>You connect the assistant to an AI provider using <strong>your own API key<\/strong> for Groq, Google Gemini or OpenAI. The plugin itself is free; provider usage is billed by the provider to your account.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Product cards are checked against the public, purchasable products that were sent to the AI model. Product IDs the model invents are rejected, and prices and stock are re-read from WooCommerce before display.<\/li>\n<li>Simple products can be added to the cart from the chat. WooCommerce's own add-to-cart validation runs. Variable and other product types link to their product page.<\/li>\n<li>Choose a primary provider and optional fallback providers. Available models are discovered from your provider account; retired models are blocked.<\/li>\n<li>Optional store context: build a bounded snapshot of public policy pages, products, categories and menus to give the assistant store-specific answers.<\/li>\n<li>Customise the assistant name, welcome and failure messages, colours, fonts, logo, avatar and the system prompt.<\/li>\n<li>Open the assistant with the floating launcher, the <code>[nexora_shopping_assistant]<\/code> shortcode, a <code>#nexora-shopping-assistant<\/code> link, or the JavaScript API.<\/li>\n<li>Privacy controls: transcript storage is off by default, configurable retention, WordPress personal-data export and erasure for account-linked records, and an optional customer privacy notice.<\/li>\n<li>API keys are encrypted at rest and never sent to the browser.<\/li>\n<\/ul>\n\n<h4>Important limitations<\/h4>\n\n<ul>\n<li>AI-generated text can be inaccurate. Review your system prompt, store policies and sample answers before enabling the assistant for customers.<\/li>\n<li>Bundles, grouped products and similar extension product types are not recommended or added to the cart from chat.<\/li>\n<li>Network activation on multisite is not supported; activate the plugin on each site.<\/li>\n<li>English user interface. A translation template (<code>languages\/nexoracreation-ai-shopping-assistant.pot<\/code>) is included.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the AI provider services that the site administrator explicitly configures. No data is sent to any provider until an administrator saves that provider's API key, and customer conversations are only sent to providers selected as primary or fallback. The plugin does not send data to Nexora Creation.<\/p>\n\n<h4>Groq<\/h4>\n\n<p>Used to generate shopping-assistant replies when Groq is configured.<\/p>\n\n<ul>\n<li>Chat replies: when a shopper sends a message, and when an administrator runs <strong>Test connection<\/strong>, the plugin sends a request to <code>https:\/\/api.groq.com\/openai\/v1\/chat\/completions<\/code> containing the system prompt (assistant name, store name, optional analyzed store context), up to 8 candidate products (name, price, currency, stock status, attributes, categories, and description excerpts), the shopper's recent conversation messages and the current message, and the saved API key.<\/li>\n<li>Model discovery: after a key is saved, when the Providers screen loads, and hourly via WP-Cron, the plugin requests <code>https:\/\/api.groq.com\/openai\/v1\/models<\/code> with the API key. No conversation data is sent.<\/li>\n<li>Groq terms: https:\/\/console.groq.com\/docs\/legal\/services-agreement and https:\/\/groq.com\/terms-of-use<\/li>\n<li>Groq privacy policy: https:\/\/groq.com\/privacy-policy<\/li>\n<\/ul>\n\n<h4>Google Gemini API<\/h4>\n\n<p>Used to generate shopping-assistant replies when Gemini is configured.<\/p>\n\n<ul>\n<li>Chat replies: when a shopper sends a message, and when an administrator runs <strong>Test connection<\/strong>, the plugin sends a request to <code>https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/{model}:generateContent<\/code> with the same categories of data listed for Groq, and the saved API key.<\/li>\n<li>Model discovery: after a key is saved, when the Providers screen loads, and hourly via WP-Cron, the plugin requests <code>https:\/\/generativelanguage.googleapis.com\/v1beta\/models<\/code> with the API key. No conversation data is sent.<\/li>\n<li>Gemini API terms: https:\/\/ai.google.dev\/gemini-api\/terms<\/li>\n<li>Google privacy policy: https:\/\/policies.google.com\/privacy<\/li>\n<\/ul>\n\n<h4>OpenAI<\/h4>\n\n<p>Used to generate shopping-assistant replies when OpenAI is configured.<\/p>\n\n<ul>\n<li>Chat replies: when a shopper sends a message, and when an administrator runs <strong>Test connection<\/strong>, the plugin sends a request to <code>https:\/\/api.openai.com\/v1\/chat\/completions<\/code> with the same categories of data listed for Groq, and the saved API key.<\/li>\n<li>Model discovery: after a key is saved, when the Providers screen loads, and hourly via WP-Cron, the plugin requests <code>https:\/\/api.openai.com\/v1\/models<\/code> with the API key. No conversation data is sent.<\/li>\n<li>OpenAI services agreement: https:\/\/openai.com\/policies\/services-agreement\/<\/li>\n<li>OpenAI privacy policy: https:\/\/openai.com\/policies\/privacy-policy\/<\/li>\n<\/ul>\n\n<p>The plugin does not send shopper names, email addresses, IP addresses, account details or cart contents to these services. Shoppers may still type personal information into their messages, which is sent as part of the conversation. Use the customer privacy notice setting to tell shoppers that messages are processed by AI providers.<\/p>\n\n<h3>Privacy<\/h3>\n\n<ul>\n<li><strong>Short-term memory:<\/strong> the last 10 messages and up to 8 product IDs per conversation, stored as WordPress transients (or your object cache), expiring after 24 hours of inactivity.<\/li>\n<li><strong>Transcripts:<\/strong> off by default. When enabled, messages are stored in the plugin's database tables and deleted after the configured retention period (default 30 days).<\/li>\n<li><strong>Feedback:<\/strong> rating, optional comment and the latest question and answer, kept for the conversation retention period. Optional email notification to the store.<\/li>\n<li><strong>Analytics:<\/strong> allowlisted interaction events with a pseudonymous session hash, kept for the configured period (default 90 days). Linking to customer accounts is off by default.<\/li>\n<li><strong>Rate limiting:<\/strong> short-lived counters derived from a keyed hash of the IP address, session and user ID.<\/li>\n<li><strong>Personal data tools:<\/strong> WordPress export and erasure cover records linked to customer accounts. Guest records cannot be found by email address.<\/li>\n<li><strong>Uninstall:<\/strong> data, settings and keys are kept by default. Turn off <strong>Preserve data on uninstall<\/strong> before deleting the plugin to remove the plugin's tables and options.<\/li>\n<\/ul>\n\n<p>The plugin adds suggested text to <strong>Settings \u2192 Privacy \u2192 Policy Guide<\/strong>. Review it before publishing your privacy policy.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Make sure WooCommerce is installed and active, and that the server runs PHP 8.1 or newer with the mbstring extension and Sodium or OpenSSL.<\/li>\n<li>Recommended: add a unique, random secret of at least 32 characters to <code>wp-config.php<\/code> before saving API keys. Without it, WordPress salts are used for encryption:\n   define( 'CONVOCART_ENCRYPTION_KEY', 'your-unique-random-secret' );\n(The constant keeps its original name for compatibility with existing installations.)<\/li>\n<li>Install the plugin from <strong>Plugins \u2192 Add New<\/strong> (or upload the ZIP) and activate it.<\/li>\n<li>Open <strong>Nexora Assistant \u2192 Providers<\/strong>. Save an API key, wait for the model list to load, choose and save a model, then click <strong>Test connection<\/strong>.<\/li>\n<li>Choose a primary provider. Fallback providers are off until you select them.<\/li>\n<li>Open <strong>Knowledge Base<\/strong> and confirm that product synchronization completes.<\/li>\n<li>Optionally, run <strong>Analyze<\/strong> to build store context.<\/li>\n<li>In <strong>Settings &amp; Styling<\/strong>, adjust the assistant, then turn on <strong>Enable assistant<\/strong>. The assistant is off on new installations until you do this.<\/li>\n<\/ol>\n\n<h4>Upgrading from ConvoCart AI<\/h4>\n\n<p>This plugin was previously distributed as \"ConvoCart AI\" (folder <code>convocart<\/code>). It reuses the same database tables, settings and encrypted keys, so no data migration is needed.<\/p>\n\n<ol>\n<li>Back up your site and database.<\/li>\n<li>Deactivate <strong>ConvoCart AI<\/strong>.<\/li>\n<li>Install and activate <strong>Nexora Creation AI Shopping Assistant for WooCommerce<\/strong>. Your settings, keys and data are picked up automatically.<\/li>\n<li>Before deleting the old ConvoCart AI plugin, make sure <strong>Preserve data on uninstall<\/strong> is enabled in Settings &amp; Styling. The old plugin's uninstaller removes the shared data when that option is off.<\/li>\n<\/ol>\n\n<p>The <code>[convocart]<\/code> shortcode, <code>#convocart<\/code> links, the <code>window.ConvoCart<\/code> JavaScript API, the <code>CONVOCART_ENCRYPTION_KEY<\/code> and <code>CONVOCART_TRUSTED_PROXIES<\/code> constants, and the <code>\/wp-json\/convocart\/v1\/<\/code> REST routes continue to work.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20the%20shortcode%20an%20inline%20chat%3F\"><h3>Is the shortcode an inline chat?<\/h3><\/dt>\n<dd><p>No. <code>[nexora_shopping_assistant]<\/code> renders a button that opens the shared chat popup. Several buttons on one page open the same conversation. Use <code>[nexora_shopping_assistant id=\"footer\"]<\/code> to label individual buttons.<\/p><\/dd>\n<dt id=\"does%20a%20saved%20api%20key%20mean%20the%20assistant%20works%3F\"><h3>Does a saved API key mean the assistant works?<\/h3><\/dt>\n<dd><p>No. A saved key only means it is stored encrypted. Save a model and run <strong>Test connection<\/strong>, which sends a short test request to the provider.<\/p><\/dd>\n<dt id=\"are%20ai%20provider%20costs%20included%3F\"><h3>Are AI provider costs included?<\/h3><\/dt>\n<dd><p>No. You pay your chosen provider directly. Each customer message can result in several provider requests when retries or fallback providers are used. Set spending limits in your provider account.<\/p><\/dd>\n<dt id=\"what%20is%20stored%20when%20transcript%20logging%20is%20off%3F\"><h3>What is stored when transcript logging is off?<\/h3><\/dt>\n<dd><p>A short-term conversation memory (the last 10 messages and up to 8 product IDs) is kept for up to 24 hours of inactivity so follow-up questions work. Feedback that a customer chooses to send includes the latest question, answer and optional comment.<\/p><\/dd>\n<dt id=\"customers%20behind%20cloudflare%20or%20a%20proxy%20see%20%22please%20wait%22%20errors.\"><h3>Customers behind Cloudflare or a proxy see \"please wait\" errors.<\/h3><\/dt>\n<dd><p>Requests are rate-limited per IP address. If your host does not restore visitor IP addresses, configure trusted real-IP restoration or define <code>CONVOCART_TRUSTED_PROXIES<\/code> in <code>wp-config.php<\/code> with your proxy's current IP ranges.<\/p><\/dd>\n<dt id=\"should%20page%20caching%20include%20the%20assistant%27s%20endpoints%3F\"><h3>Should page caching include the assistant's endpoints?<\/h3><\/dt>\n<dd><p>No. Exclude <code>\/wp-json\/convocart\/v1\/*<\/code> and the <code>admin-ajax.php?action=convocart_nonce<\/code> endpoint from page\/CDN caching.<\/p><\/dd>\n<dt id=\"why%20was%20my%20analyzed%20store%20context%20cleared%3F\"><h3>Why was my analyzed store context cleared?<\/h3><\/dt>\n<dd><p>Relevant content changes (pages, products, menus, site title and similar) clear the snapshot so outdated or newly private content is not sent to AI providers. Run Analyze again to rebuild it.<\/p><\/dd>\n<dt id=\"how%20do%20i%20report%20a%20security%20issue%3F\"><h3>How do I report a security issue?<\/h3><\/dt>\n<dd><p>Please report security issues privately through the contact page at https:\/\/nexoracreation.com\/contact-us\/. Do not include API keys or customer data in reports.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Updated the public plugin name and requested WordPress.org directory slug following reviewer guidance.<\/li>\n<li>Aligned the text domain, translation catalog filename and metadata with <code>nexoracreation-ai-shopping-assistant<\/code>.<\/li>\n<li>Preserved existing shortcodes, hash triggers, JavaScript aliases, ConvoCart data compatibility and REST routes.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Updated the plugin URI to the dedicated product page.<\/li>\n<li>Corrected the security-report contact URL.<\/li>\n<li>Updated translation-template URL metadata. Provider API endpoints and legacy ConvoCart compatibility routes are unchanged.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Renamed from ConvoCart AI to Nexora Shopping Assistant for WooCommerce (original slug and text domain <code>nexora-shopping-assistant<\/code>). Existing ConvoCart AI data, settings, keys, shortcode, hash links, JavaScript API and REST routes remain compatible.<\/li>\n<li>Added the <code>[nexora_shopping_assistant]<\/code> shortcode, the <code>#nexora-shopping-assistant<\/code> hash link and the <code>window.NexoraShoppingAssistant<\/code> JavaScript API alias.<\/li>\n<li>Security hardening: every custom-table query now passes table names through <code>$wpdb-&gt;prepare()<\/code> identifier placeholders; fixed-shape catalogue search query; stricter API-key validation before keys are used in HTTP headers.<\/li>\n<li>Fixed double-escaped assistant names in shortcode buttons and a double-escaped status code in admin notices.<\/li>\n<li>Diagnostic logging now only runs when <code>WP_DEBUG_LOG<\/code> is enabled.<\/li>\n<li>Admin screen and script strings are now translatable; added translator comments.<\/li>\n<li>Removed the custom <code>Update URI<\/code> header and the manual text-domain loader in favour of WordPress.org updates and translations.<\/li>\n<li>Restores plugin capabilities if an earlier ConvoCart AI uninstall removed them, and warns before the old plugin is deleted with data purging enabled.<\/li>\n<li>Added an External services section to this readme.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Respect WooCommerce add-to-cart validation; limit in-chat purchases to simple products.<\/li>\n<li>Persist cart replay results and prevent concurrent or uncertain request takeover for 24 hours.<\/li>\n<li>Correct shortcode button styling and hash-only asset loading.<\/li>\n<li>Start new stores with the assistant disabled and no fallback providers.<\/li>\n<li>Preserve saved model IDs during migrations.<\/li>\n<li>Invalidate analyzed context on relevant changes, verify its sources, and add manual clearing.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Automatic credential-scoped model discovery after key saves, in the Providers screen and via background jobs.<\/li>\n<li>Known retired models blocked in selection, settings and completion calls; upcoming shutdown dates displayed.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Model-aware payloads, JSON response validation, reliable discovery and explicit fallback opt-out.<\/li>\n<li>Separate temporary memory and optional transcripts; feedback export, erasure and retention; corrected uninstall.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"A bring-your-own-key AI shopping assistant that recommends products from your WooCommerce catalogue and adds simple products to the cart.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/384106","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=384106"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/nexoracreation"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=384106"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=384106"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=384106"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=384106"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=384106"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=384106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}