{"id":376021,"date":"2026-09-29T09:14:18","date_gmt":"2026-09-29T09:14:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/agentinstore\/"},"modified":"2026-09-29T09:13:55","modified_gmt":"2026-09-29T09:13:55","slug":"agentinstore","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/agentinstore\/","author":23574126,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.0","stable_tag":"1.4.0","tested":"7.1.2","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"AgentInStore","header_author":"MI Atlantic","header_description":"Connect WooCommerce to AgentInStore \u2014 AI sales agent with product sync and storefront chat widget.","assets_banners_color":"101c2d","last_updated":"2026-09-29 09:13:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/miatlantic.ae\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":39,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.0":{"tag":"1.4.0","author":"miatlantic","date":"2026-09-29 09:13:55","revision":3718618}},"upgrade_notice":{"1.4.0":"<p>Addresses WordPress.org plugin review feedback (sanitization, prefixes, admin notices).<\/p>","1.3.5":"<p>Text Domain matches slug agentinstore. Use this build if a reviewer asks for an updated ZIP.<\/p>","1.3.4":"<p>Fixes WordPress.org header validation (Plugin URI vs Author URI). Use this build for submission.<\/p>","1.3.3":"<p>Updates author\/support links to miatlantic.ae. Recommended before WordPress.org submission.<\/p>","1.3.2":"<p>Privacy Policy integration and safer secret display. Recommended before WordPress.org submission.<\/p>","1.3.1":"<p>Fixes admin menu icon sizing and settings-page clutter. Recommended before WordPress.org submission.<\/p>","1.3.0":"<p>Recommended update before publishing or installing from WordPress.org. Includes license, privacy disclosure, and security hardening.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3718617,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3718617,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3718617,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3718617,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.4.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3718617,"resolution":"1","location":"assets","locale":"","width":1240,"height":640},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3718617,"resolution":"2","location":"assets","locale":"","width":1187,"height":700},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3718617,"resolution":"3","location":"assets","locale":"","width":1197,"height":317}},"screenshots":{"1":"Connected dashboard with status cards and Widget appearance settings.","2":"Connection settings \u2014 API base URL, public key, reconnect \/ disconnect.","3":"Catalog sync \u2014 push specific WooCommerce SKUs."}},"plugin_section":[],"plugin_tags":[2353,2364,42241,332,286],"plugin_category":[45],"plugin_contributors":[283373],"plugin_business_model":[],"class_list":["post-376021","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-chatbot","plugin_tags-product-sync","plugin_tags-sales","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-miatlantic","plugin_committers-miatlantic"],"banners":{"banner":"https:\/\/ps.w.org\/agentinstore\/assets\/banner-772x250.png?rev=3718617","banner_2x":"https:\/\/ps.w.org\/agentinstore\/assets\/banner-1544x500.png?rev=3718617","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/agentinstore\/assets\/icon-128x128.png?rev=3718617","icon_2x":"https:\/\/ps.w.org\/agentinstore\/assets\/icon-256x256.png?rev=3718617","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/agentinstore\/assets\/screenshot-1.png?rev=3718617","caption":"Connected dashboard with status cards and Widget appearance settings."},{"src":"https:\/\/ps.w.org\/agentinstore\/assets\/screenshot-2.png?rev=3718617","caption":"Connection settings \u2014 API base URL, public key, reconnect \/ disconnect."},{"src":"https:\/\/ps.w.org\/agentinstore\/assets\/screenshot-3.png?rev=3718617","caption":"Catalog sync \u2014 push specific WooCommerce SKUs."}],"raw_content":"<!--section=description-->\n<p>AgentInStore connects your WooCommerce store to an AgentInStore AI sales workspace (hosted or self-hosted API).<\/p>\n\n<p>After you connect once from the plugin settings (or from your AgentInStore dashboard), the plugin:<\/p>\n\n<ul>\n<li>Syncs your product catalog to AgentInStore (first connect runs a background full sync).<\/li>\n<li>Keeps products up to date when you create, update, trash, or delete them in WooCommerce.<\/li>\n<li>Optionally shows a storefront chat widget driven by your AgentInStore workspace.<\/li>\n<\/ul>\n\n<p><strong>This plugin requires AgentInStore API credentials<\/strong> (API base URL + public widget key). Ask your AgentInStore provider \/ workspace admin for those values, or contact the plugin author via <a href=\"https:\/\/miatlantic.ae\/\">miatlantic.ae<\/a>. WooCommerce is recommended for catalog sync; the chat widget can load without WooCommerce once credentials are set.<\/p>\n\n<p>Developer \/ author site: <a href=\"https:\/\/miatlantic.ae\/\">https:\/\/miatlantic.ae\/<\/a><\/p>\n\n<h4>External service<\/h4>\n\n<p>This plugin is a bridge to an AgentInStore API you configure (SaaS or self-hosted). When you connect:<\/p>\n\n<ul>\n<li>Store URL, store name, admin email, WordPress\/WooCommerce\/plugin versions, and your public widget key are sent to <strong>your configured API base URL<\/strong> for the handshake.<\/li>\n<li>Product data (name, descriptions, prices, stock, images, categories, attributes, variations, and approved reviews) is sent when syncing.<\/li>\n<li>A daily heartbeat may ping the same API while connected.<\/li>\n<li>On the storefront, <code>widget.js<\/code> is loaded from your configured API base URL so visitors can chat with your agent.<\/li>\n<\/ul>\n\n<p>No data is sent until an administrator explicitly connects the store and provides the API base URL and public key. Disconnect (or uninstall) clears local credentials and notifies the service when possible.<\/p>\n\n<ul>\n<li>Author \/ support: <a href=\"https:\/\/miatlantic.ae\/\">https:\/\/miatlantic.ae\/<\/a><\/li>\n<li>Privacy: documented in this readme (FAQ \u201cWhat data is sent\u2026\u201d) and under Settings \u2192 Privacy when the plugin is active.<\/li>\n<\/ul>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>One-click connect from the AgentInStore dashboard (with admin confirmation).<\/li>\n<li>Background initial catalog sync (safe for large catalogs).<\/li>\n<li>Live per-product sync on create \/ update \/ delete.<\/li>\n<li>Manual SKU sync for selective refresh.<\/li>\n<li>Widget color and on\/off controls without re-syncing the catalog.<\/li>\n<li>Clean disconnect and uninstall that remove stored secrets.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install from Plugins \u2192 Add New \u2192 search for \u201cAgentInStore\u201d, or upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the Plugins screen.<\/li>\n<li>Ensure <a href=\"https:\/\/wordpress.org\/plugins\/woocommerce\/\">WooCommerce<\/a> is installed if you need product sync.<\/li>\n<li>Open <strong>AgentInStore<\/strong> in the WordPress admin menu.<\/li>\n<li>Paste your <strong>API base URL<\/strong> and <strong>public widget key<\/strong>, then click <strong>Connect<\/strong>.\nAlternatively, use <strong>Connect WordPress<\/strong> from your AgentInStore dashboard and confirm on the settings screen.<\/li>\n<li>After connect, wait for the background catalog sync. Adjust widget color \/ visibility under Widget appearance \u2192 Save settings.<\/li>\n<\/ol>\n\n<p>For credentials or support, contact the author via <a href=\"https:\/\/miatlantic.ae\/\">https:\/\/miatlantic.ae\/<\/a>.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20agentinstore%20account%20%2F%20api%3F\"><h3>Do I need an AgentInStore account \/ API?<\/h3><\/dt>\n<dd><p>Yes. The plugin only works after you connect with an API base URL and public widget key from your AgentInStore workspace. Contact your provider or the plugin author at <a href=\"https:\/\/miatlantic.ae\/\">miatlantic.ae<\/a> if you need access.<\/p><\/dd>\n<dt id=\"is%20woocommerce%20required%3F\"><h3>Is WooCommerce required?<\/h3><\/dt>\n<dd><p>WooCommerce is required for product catalog sync. The chat widget can still be enabled after you connect with a valid API base URL and public key.<\/p><\/dd>\n<dt id=\"what%20data%20is%20sent%20to%20agentinstore%3F\"><h3>What data is sent to AgentInStore?<\/h3><\/dt>\n<dd><p>Nothing is sent until an administrator connects with an API base URL and public key.<\/p>\n\n<p>On connect: store URL, store name, admin email, and WordPress \/ WooCommerce \/ plugin version metadata.<\/p>\n\n<p>On product sync: catalog fields such as name, descriptions, prices, stock, images, categories, attributes, variations, and approved product reviews.<\/p>\n\n<p>While connected: an occasional heartbeat may ping the same API. If the widget is enabled, the storefront loads <code>widget.js<\/code> from that API base URL.<\/p>\n\n<p>Disconnect or uninstall clears local credentials and stops outbound calls (and notifies the service when possible).<\/p>\n\n<p>Merchants should inform their own customers via their site Privacy Policy (WordPress Settings \u2192 Privacy includes suggested text from this plugin).<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20load%20scripts%20from%20an%20external%20server%3F\"><h3>Does the plugin load scripts from an external server?<\/h3><\/dt>\n<dd><p>Yes. When connected and the widget is enabled, the storefront loads <code>widget.js<\/code> from <strong>your configured<\/strong> AgentInStore API base URL. That is required for the hosted chat agent.<\/p><\/dd>\n<dt id=\"how%20do%20i%20disconnect%3F\"><h3>How do I disconnect?<\/h3><\/dt>\n<dd><p>On the AgentInStore settings page, confirm disconnect. Credentials are cleared and the storefront widget stops. Uninstalling the plugin also disconnects and deletes stored options.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20expose%20rest%20endpoints%3F\"><h3>Does the plugin expose REST endpoints?<\/h3><\/dt>\n<dd><p>Yes. <code>GET \/wp-json\/agentinstore\/v1\/status<\/code> lets an AgentInStore dashboard verify the plugin is installed (returns version and connection flag only). <code>POST \/wp-json\/agentinstore\/v1\/disconnect<\/code> clears the local connection when called with the shared webhook secret from your workspace.<\/p><\/dd>\n<dt id=\"can%20i%20use%20a%20self-hosted%20agentinstore%20api%3F\"><h3>Can I use a self-hosted AgentInStore API?<\/h3><\/dt>\n<dd><p>Yes. Set the API base URL to your deployment (must be reachable from the WordPress server). Production sites should use HTTPS with a valid certificate.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Address Plugin Directory review: stronger input sanitization, agenti_ prefixes, remove load_plugin_textdomain, no activation redirect (Guideline 11).<\/li>\n<\/ul>\n\n<h4>1.3.5<\/h4>\n\n<ul>\n<li>Align Text Domain with WordPress.org slug: agentinstore (fixes automated scan warning).<\/li>\n<\/ul>\n\n<h4>1.3.4<\/h4>\n\n<ul>\n<li>Remove Plugin URI so it is not identical to Author URI (WordPress.org submission requirement).<\/li>\n<li>Keep Author URI as https:\/\/miatlantic.ae\/<\/li>\n<\/ul>\n\n<h4>1.3.3<\/h4>\n\n<ul>\n<li>Point Plugin URI \/ Author URI and support links to https:\/\/miatlantic.ae\/<\/li>\n<li>Clarify serviceware: data goes only to the merchant-configured API base URL.<\/li>\n<li>Remove non-live agentinstore.com links from readme.<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>Mask webhook secret in admin UI (last 4 chars only).<\/li>\n<li>Human-readable initial sync date.<\/li>\n<li>WordPress Privacy Policy suggested text via wp_add_privacy_policy_content.<\/li>\n<li>Directory screenshots prepared for SVN assets.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Fix oversized admin menu icon (dedicated 64\u00d764 menu-icon + CSS).<\/li>\n<li>Hide third-party admin notices on the AgentInStore settings page so Widget appearance stays visible.<\/li>\n<li>REST disconnect now authenticates via permission_callback (webhook secret).<\/li>\n<li>Limit \u201cnot connected\u201d notice to Dashboard and Plugins screens.<\/li>\n<li>No remote handshake on plugin activation until an admin connects.<\/li>\n<li>Secrets stored with autoload disabled; GPL headers on all PHP classes.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>WordPress.org readiness: standard readme, GPL license headers, privacy\/service disclosure.<\/li>\n<li>Safer outbound HTTP (<code>reject_unsafe_urls<\/code> for production hosts).<\/li>\n<li>Prefill from dashboard links stored until confirmed (no silent option writes on GET).<\/li>\n<li>Dismissible \u201cnot connected\u201d admin notice; <code>uninstall.php<\/code> cleanup.<\/li>\n<li>Assets directory hardening; textdomain loading.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>AgentInStore branding, logo assets, connect\/confirm flow, SKU sync, settings push.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: handshake, catalog sync, widget enqueue, heartbeat.<\/li>\n<\/ul>","raw_excerpt":"Connect WooCommerce to AgentInStore \u2014 sync products and show an AI sales chat widget on your storefront.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/376021","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=376021"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/miatlantic"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=376021"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=376021"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=376021"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=376021"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=376021"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=376021"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}