{"id":317636,"date":"2026-06-03T14:34:15","date_gmt":"2026-06-03T14:34:15","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/snoodlr-ai-assistant-for-woocommerce\/"},"modified":"2026-06-08T01:35:15","modified_gmt":"2026-06-08T01:35:15","slug":"snoodlr-ai-assistant-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/ky.wordpress.org\/plugins\/snoodlr-ai-assistant-for-woocommerce\/","author":23414253,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.5","stable_tag":"2.5","tested":"7.0","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"Snoodlr AI Assistant for WooCommerce","header_author":"SIRAPIX","header_description":"Power up your WordPress site or WooCommerce store with an AI assistant that can answer customer questions, guide shoppers, capture leads, and support orders using your approved site and store data.","assets_banners_color":"e9f7ef","last_updated":"2026-06-08 01:35:15","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/snoodlr.com","header_author_uri":"https:\/\/sirapix.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":190,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.5":{"tag":"0.1.5","author":"sirapix","date":"2026-06-03 14:40:50"},"0.2.2":{"tag":"0.2.2","author":"sirapix","date":"2026-06-07 19:56:11"},"2.5":{"tag":"2.5","author":"sirapix","date":"2026-06-08 01:35:15"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3559561,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3559561,"resolution":"772x250","location":"assets","locale":"","width":1544,"height":500}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.5","0.2.2","2.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3559569,"resolution":"1","location":"assets","locale":"","width":3024,"height":1776},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3559569,"resolution":"2","location":"assets","locale":"","width":3024,"height":1826},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3559569,"resolution":"3","location":"assets","locale":"","width":3022,"height":1778},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3559569,"resolution":"4","location":"assets","locale":"","width":3024,"height":1890}},"screenshots":{"1":"Connect Snoodlr through the guided WordPress setup flow.","2":"Choose which public site and store sources Snoodlr can use.","3":"Build and review the local WordPress index before enabling the assistant.","4":"Review conversations from different channels through a unified inbox that is product-aware."}},"plugin_section":[],"plugin_tags":[148285,2364,944,1104,286],"plugin_category":[45],"plugin_contributors":[254219],"plugin_business_model":[],"class_list":["post-317636","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-assistant","plugin_tags-chatbot","plugin_tags-search","plugin_tags-support","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-sirapix","plugin_committers-sirapix"],"banners":{"banner":"https:\/\/ps.w.org\/snoodlr-ai-assistant-for-woocommerce\/assets\/banner-772x250.png?rev=3559561","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/snoodlr-ai-assistant-for-woocommerce\/assets\/icon-256x256.png?rev=3559561","icon_2x":"https:\/\/ps.w.org\/snoodlr-ai-assistant-for-woocommerce\/assets\/icon-256x256.png?rev=3559561","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/snoodlr-ai-assistant-for-woocommerce\/assets\/screenshot-1.png?rev=3559569","caption":"Connect Snoodlr through the guided WordPress setup flow."},{"src":"https:\/\/ps.w.org\/snoodlr-ai-assistant-for-woocommerce\/assets\/screenshot-2.png?rev=3559569","caption":"Choose which public site and store sources Snoodlr can use."},{"src":"https:\/\/ps.w.org\/snoodlr-ai-assistant-for-woocommerce\/assets\/screenshot-3.png?rev=3559569","caption":"Build and review the local WordPress index before enabling the assistant."},{"src":"https:\/\/ps.w.org\/snoodlr-ai-assistant-for-woocommerce\/assets\/screenshot-4.png?rev=3559569","caption":"Review conversations from different channels through a unified inbox that is product-aware."}],"raw_content":"<!--section=description-->\n<p>Snoodlr AI Assistant for WooCommerce connects a WordPress site to Snoodlr's external AI assistant service after explicit administrator authorization.<\/p>\n\n<p>Version 2.5 provides the local plugin bootstrap, activation\/deactivation handlers, settings defaults, permission-gated admin screens, nonce-protected admin view state, local admin assets, local database tables, local source detection and confirmation, signed query routes, optional WooCommerce commerce routes, and optional frontend widget enablement.<\/p>\n\n<p>Before an administrator connects Snoodlr, the plugin does not contact Snoodlr from WordPress, auto-inject a widget, require WooCommerce, copy full site content to Snoodlr, call AI\/LLM APIs from WordPress, add analytics or tracking, or process online payments.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>Snoodlr is an external AI assistant service. This plugin connects to Snoodlr only after an administrator explicitly clicks Connect to Snoodlr during setup.<\/p>\n\n<p>Data shared with or exchanged with Snoodlr is limited to these categories:<\/p>\n\n<ul>\n<li>Connection onboarding. The hosted Snoodlr onboarding route at <code>https:\/\/app.snoodlr.com\/en\/app\/integrations\/wordpress\/connect<\/code> receives the site URL, WordPress admin URL, callback URL, plugin version, WordPress version, PHP version, locale, timezone, site name, generated site public ID, WooCommerce active flag, connection state value, and source identifier. Because the administrator's browser opens Snoodlr's hosted onboarding page, Snoodlr may also receive standard browser request metadata such as IP address, user agent, and referrer.<\/li>\n<li>Connection callback and credentials. Snoodlr returns a connection status, connection ID, connection secret when provided, and widget public key when provided. These values are stored locally in WordPress. The connection secret is used for HMAC request signing and is not exposed to frontend JavaScript.<\/li>\n<li>Connection verification and disconnect. WordPress admin status screens may call <code>https:\/\/api.snoodlr.com\/v1\/public\/wordpress\/connection-verify<\/code>. Disconnecting may call <code>https:\/\/api.snoodlr.com\/v1\/public\/wordpress\/connection-disconnect<\/code>. These calls send the Snoodlr connection ID, timestamp, nonce, HMAC signature, and, for disconnect, a disconnect reason and source identifier.<\/li>\n<li>Signed health and capability responses. After connection, Snoodlr may send signed requests to the local WordPress REST routes. WordPress may return plugin version, schema version, table verification status, indexed\/dirty\/failed object counts, last indexed time, enabled source-role counts, entity and mention counts, widget enabled\/supported status, WooCommerce availability, commerce capability names, currency, and whether query routes are ready.<\/li>\n<li>Signed content query responses. Snoodlr may send search queries, entity subjects, object IDs, WordPress object IDs, object kind\/subtype filters, role filters, language, sort, limits, and an <code>include_body<\/code> flag. WordPress may return the echoed sanitized query parameters, relevant result IDs, WordPress object IDs, object kind\/subtype, title, sanitized snippet or summary, URL, source role, published\/modified dates, matched fields, evidence notes, relevance score, entity IDs, canonical entity names, entity type, confidence, source count, ambiguity candidates, primary context, latest updates, reference context, and, only when <code>include_body<\/code> is requested, a sanitized body excerpt limited by the plugin.<\/li>\n<li>Signed WooCommerce product responses. If WooCommerce is active, Snoodlr may send product search text, filters, product ID, variation ID, quantity, requested attributes, order\/sort values, and stock\/category\/tag filters. WordPress may return public product evidence including product ID, variation ID, product title, summary, URL, image URL, price, regular price, sale price, display price, currency, stock status, availability, published\/modified dates, product attributes, categories, tags, matched fields, relevance score, and diagnostic counts for the product search.<\/li>\n<li>Pending order and order status flows. If a visitor asks Snoodlr to create a pending order, Snoodlr sends the requested items, product IDs, variation IDs, quantities, attributes, customer name, customer email or phone, billing address fields, shipping address fields, and customer note to WordPress. WordPress creates a pending WooCommerce order and returns only the order ID, order number, status, total, currency, and created time. For order status, Snoodlr sends an order ID or order number plus an email or phone verification value; WordPress returns the same minimal order fields after verification.<\/li>\n<li>Optional frontend widget. The frontend widget is disabled by default. If an administrator enables it after connecting Snoodlr, the plugin loads a local bootstrap script that loads Snoodlr's hosted widget from <code>https:\/\/app.snoodlr.com\/widget\/loader.js<\/code> on public site pages. The local bootstrap exposes only widget URL, API base URL, widget public key, plugin version, locale, and widget position to frontend JavaScript. Widget API calls use <code>https:\/\/api.snoodlr.com<\/code>. Visitor conversations in the widget, and any information visitors type into the widget such as names, contact details, product requests, order requests, or order verification details, are processed by Snoodlr. Loading the hosted widget can also share standard browser request metadata with Snoodlr, such as IP address, user agent, and referrer\/current page URL depending on browser policy.<\/li>\n<\/ul>\n\n<p>The plugin creates local indexing tables inside WordPress and lets administrators confirm which detected content sources may be indexed locally. Source choices start disabled and are enabled only after an administrator saves selected sources. Full site content, full product catalogs, posts, pages, custom post types, existing orders, customers, and coupons are not bulk-copied to Snoodlr by default.<\/p>\n\n<p>When WooCommerce is installed, signed commerce routes can search locally indexed enabled product sources, check live product availability, create pending WooCommerce orders, and return minimal verified order status. Availability, price, stock, order creation, and order status use live WooCommerce APIs. The plugin does not process payment and does not return full customer profiles, full addresses for existing orders, private order notes, or payment metadata. Administrators can disconnect or revoke local access credentials without deleting local index tables or confirmed sources.<\/p>\n\n<p>Administrators can disable the widget at any time. The plugin does not add hidden frontend credits, tracking pixels, analytics scripts, remote fonts, or unrelated third-party scripts.<\/p>\n\n<p>Snoodlr Terms of Use: https:\/\/app.snoodlr.com\/en\/terms-of-use\nSnoodlr Privacy Policy: https:\/\/app.snoodlr.com\/en\/privacy-policy<\/p>\n\n<h3>Privacy and Data Processing<\/h3>\n\n<p>The plugin stores source confirmations, local index rows, entity mentions, connection status, signed API metadata, and widget settings inside WordPress.<\/p>\n\n<p>Local indexing is limited to administrator-enabled, confirmed public sources. Drafts, private content, password-protected content, failed rows, not-indexable rows, orders, customers, and coupons are excluded from local content indexing.<\/p>\n\n<p>Signed query routes return structured evidence only. They do not return full body text by default. Object requests with <code>include_body<\/code> return a limited sanitized excerpt, not unlimited raw content.<\/p>\n\n<p>If the optional widget is enabled, visitor conversations occur through Snoodlr's hosted widget and are processed by Snoodlr. The plugin exposes only non-secret widget configuration to the frontend: widget URL, API base URL, widget public key, plugin version, locale, and position.<\/p>\n\n<h3>WooCommerce Support<\/h3>\n\n<p>WooCommerce is optional. The plugin activates and its settings pages work without WooCommerce.<\/p>\n\n<p>When WooCommerce is active and available, signed commerce routes can search locally indexed enabled product sources, check live availability and price, create pending orders, and return verified minimal order status. Product search may use local discovery snapshots, but availability, price, stock, pending-order creation, and order status are checked through live WooCommerce APIs.<\/p>\n\n<p>The plugin does not process payments, mark orders paid, export the catalog, expose broad order search, return full customer profiles, or expose payment metadata\/private order notes.<\/p>\n\n<h3>Disconnect and Uninstall<\/h3>\n\n<p>Disconnecting Snoodlr removes local connection credentials and prevents signed Snoodlr requests from authenticating. It does not remove local index tables, confirmed sources, or plugin settings.<\/p>\n\n<p>Uninstall removes plugin options including connection credentials, settings, schema status, API error status, and widget settings. Local Snoodlr database tables are preserved by default to avoid unexpected merchant\/site data loss.<\/p>\n\n<h3>Limitations<\/h3>\n\n<p>Production Snoodlr service URLs must remain accurate for the release build.<\/p>\n\n<p>The plugin returns structured evidence to Snoodlr. Final answer synthesis happens in Snoodlr's external service, not inside WordPress.<\/p>\n\n<p>Online payments are not supported. Orders created by the commerce API are pending WooCommerce orders only.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/snoodlr-ai-assistant-for-woocommerce\/<\/code>.<\/li>\n<li>Activate Snoodlr AI Assistant for WooCommerce from the Plugins screen.<\/li>\n<li>Open the Snoodlr admin menu to review the setup disclosure.<\/li>\n<li>Confirm which detected public sources may be indexed locally.<\/li>\n<li>Connect Snoodlr only when you are ready to allow signed, scoped server-to-server requests.<\/li>\n<li>Enable the optional frontend widget only if you want Snoodlr's hosted widget to load on public pages.<\/li>\n<\/ol>\n\n<p>Activation does not contact Snoodlr and does not inject frontend assets.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20activation%20contact%20snoodlr%3F\"><h3>Does activation contact Snoodlr?<\/h3><\/dt>\n<dd><p>No. Activation is local only. It creates or repairs local plugin options and database tables, but it does not contact Snoodlr.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20copy%20my%20full%20website%20to%20snoodlr%3F\"><h3>Does this plugin copy my full website to Snoodlr?<\/h3><\/dt>\n<dd><p>No. The planned V1 architecture uses local WordPress indexing tables and signed scoped runtime requests. Full site content is not copied to Snoodlr by default.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20work%20without%20woocommerce%3F\"><h3>Does this plugin work without WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. WooCommerce is optional. Commerce capabilities report unavailable and commerce routes return safe unavailable errors when WooCommerce is inactive.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20process%20payments%20or%20complete%20orders%3F\"><h3>Does this plugin process payments or complete orders?<\/h3><\/dt>\n<dd><p>No. Commerce routes can create pending WooCommerce orders only. They do not mark payment complete or process online payments.<\/p><\/dd>\n<dt id=\"does%20uninstall%20remove%20local%20snoodlr%20database%20tables%3F\"><h3>Does uninstall remove local Snoodlr database tables?<\/h3><\/dt>\n<dd><p>No. The plugin preserves local Snoodlr database tables on uninstall to avoid unexpected data loss. Plugin options and connection credentials are removed.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20inject%20a%20frontend%20chat%20widget%3F\"><h3>Does this plugin inject a frontend chat widget?<\/h3><\/dt>\n<dd><p>Not by default. The widget is not injected on activation or connection. It loads only after an administrator explicitly enables it while Snoodlr is connected, and it can be disabled at any time.<\/p><\/dd>\n<dt id=\"how%20do%20i%20disconnect%20snoodlr%3F\"><h3>How do I disconnect Snoodlr?<\/h3><\/dt>\n<dd><p>Open the Snoodlr setup or settings page and use Disconnect Snoodlr. This revokes local connection credentials and stops signed requests from authenticating.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20expose%20secrets%20in%20frontend%20javascript%3F\"><h3>Does the plugin expose secrets in frontend JavaScript?<\/h3><\/dt>\n<dd><p>No. The frontend widget config contains only non-secret public fields. HMAC secrets, connection secrets, private tokens, admin nonces, source data, order data, and customer data are not localized to frontend JavaScript.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.5<\/h4>\n\n<ul>\n<li>Improved onboarding index progress so indexed and queued counts refresh through AJAX while indexing is running.<\/li>\n<li>Added incremental onboarding indexing ticks so progress moves item by item instead of jumping after a full background batch completes.<\/li>\n<li>Fixed Reindex to requeue failed index items and rebuild eligible local index content when there are no failed items to retry.<\/li>\n<li>Simplified the onboarding index step actions to Continue to widget, Reindex, and Back.<\/li>\n<li>Fixed indexing button labels, spinner alignment, and completion state so the button does not stay stuck in an animation.<\/li>\n<li>Linked the setup logo and Plugins screen Application action to the Snoodlr app.<\/li>\n<li>Updated plugin information links to use https:\/\/snoodlr.com for Snoodlr website details.<\/li>\n<\/ul>\n\n<h4>0.2.2<\/h4>\n\n<ul>\n<li>Added WooCommerce cart awareness for the Snoodlr widget so shoppers can ask what is currently in their cart.<\/li>\n<li>Added visitor-session cart REST routes for reading cart contents and adding, updating, or removing WooCommerce cart items through same-origin, nonce-protected requests.<\/li>\n<li>Added WordPress cart bridge configuration to the frontend widget loader so Snoodlr can complete add-to-cart actions in the shopper's active WooCommerce session.<\/li>\n<li>Improved cart-question handling so current-cart questions are not answered with broad product catalog listings.<\/li>\n<li>Updated plugin release tag and version metadata.<\/li>\n<\/ul>\n\n<h4>0.1.5<\/h4>\n\n<ul>\n<li>Hardened admin view query parameters behind nonce and capability checks.<\/li>\n<li>Centralized admin POST permission, nonce, and input handling.<\/li>\n<li>Refactored local query SQL to use fixed prepared statement templates.<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>Aligned release metadata for WordPress.org packaging.<\/li>\n<li>Hardened source consent so detected sources are not enabled until an administrator saves the choice.<\/li>\n<li>Expanded external service disclosure for connection verification and disconnect calls.<\/li>\n<li>Cleaned uninstall option removal and escaping in source cards.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Updated release metadata for SIRAPIX attribution and plugin version alignment.<\/li>\n<\/ul>","raw_excerpt":"Connect WordPress to Snoodlr&#039;s external AI assistant service with local indexing, signed access, WooCommerce support, and an opt-in widget.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/317636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=317636"}],"author":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sirapix"}],"wp:attachment":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=317636"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=317636"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=317636"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=317636"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=317636"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=317636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}