{"id":192766,"date":"2024-04-24T05:24:36","date_gmt":"2024-04-24T05:24:36","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ai-eshop-optimizer\/"},"modified":"2026-07-23T18:40:00","modified_gmt":"2026-07-23T18:40:00","slug":"ai-eshop-optimizer","status":"publish","type":"plugin","link":"https:\/\/lt.wordpress.org\/plugins\/ai-eshop-optimizer\/","author":21057082,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"9.4","stable_tag":"9.4","tested":"7.0.2","requires":"7.0","requires_php":"7.4","requires_plugins":null,"header_name":"Rooster One","header_author":"Oxford Metadata Ltd","header_description":"Boost sales with AI-powered product recommendations. Effortlessly optimize upsells and cross-sells for store success!","assets_banners_color":"041121","last_updated":"2026-07-23 18:40:00","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/rooster.systems\/one\/","header_author_uri":"https:\/\/oxfordmetadata.co.uk","rating":5,"author_block_rating":0,"active_installs":10,"downloads":3344,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.0":{"tag":"1.0","author":"oxfordmetadata","date":"2025-10-17 04:47:57"},"2.0":{"tag":"2.0","author":"oxfordmetadata","date":"2025-10-17 05:22:32"},"2.1":{"tag":"2.1","author":"oxfordmetadata","date":"2025-10-18 04:09:39"},"3.0":{"tag":"3.0","author":"oxfordmetadata","date":"2025-10-30 22:39:30"},"3.1":{"tag":"3.1","author":"oxfordmetadata","date":"2025-10-30 22:53:26"},"3.1.1":{"tag":"3.1.1","author":"oxfordmetadata","date":"2025-10-31 05:56:05"},"3.1.2":{"tag":"3.1.2","author":"oxfordmetadata","date":"2025-10-31 07:19:41"},"3.1.3":{"tag":"3.1.3","author":"oxfordmetadata","date":"2025-10-31 07:56:29"},"3.2":{"tag":"3.2","author":"oxfordmetadata","date":"2025-11-01 12:45:04"},"3.2.1":{"tag":"3.2.1","author":"oxfordmetadata","date":"2025-11-01 22:53:17"},"3.3":{"tag":"3.3","author":"oxfordmetadata","date":"2025-11-03 11:58:01"},"3.3.1":{"tag":"3.3.1","author":"oxfordmetadata","date":"2025-11-03 21:53:36"},"3.3.2":{"tag":"3.3.2","author":"oxfordmetadata","date":"2025-11-04 14:18:24"},"3.3.3":{"tag":"3.3.3","author":"oxfordmetadata","date":"2025-11-05 12:23:48"},"3.4":{"tag":"3.4","author":"oxfordmetadata","date":"2025-11-06 09:14:22"},"3.5":{"tag":"3.5","author":"oxfordmetadata","date":"2025-11-07 11:25:29"},"3.5.1":{"tag":"3.5.1","author":"oxfordmetadata","date":"2025-11-07 17:10:50"},"3.5.2":{"tag":"3.5.2","author":"oxfordmetadata","date":"2025-11-11 22:07:11"},"3.6":{"tag":"3.6","author":"oxfordmetadata","date":"2025-11-13 03:54:50"},"4.0":{"tag":"4.0","author":"oxfordmetadata","date":"2025-11-27 22:43:29"},"4.1":{"tag":"4.1","author":"oxfordmetadata","date":"2026-02-02 19:19:35"},"4.2":{"tag":"4.2","author":"oxfordmetadata","date":"2026-02-02 19:27:31"},"5.0":{"tag":"5.0","author":"oxfordmetadata","date":"2026-05-20 14:19:10"},"5.1":{"tag":"5.1","author":"oxfordmetadata","date":"2026-05-21 07:57:58"},"5.10":{"tag":"5.10","author":"oxfordmetadata","date":"2026-05-28 16:54:50"},"5.2":{"tag":"5.2","author":"oxfordmetadata","date":"2026-05-21 12:50:43"},"5.3":{"tag":"5.3","author":"oxfordmetadata","date":"2026-05-22 12:59:19"},"5.4":{"tag":"5.4","author":"oxfordmetadata","date":"2026-05-23 03:58:56"},"5.5":{"tag":"5.5","author":"oxfordmetadata","date":"2026-05-23 10:57:52"},"5.6":{"tag":"5.6","author":"oxfordmetadata","date":"2026-05-23 18:18:00"},"5.7":{"tag":"5.7","author":"oxfordmetadata","date":"2026-05-24 07:20:25"},"5.8":{"tag":"5.8","author":"oxfordmetadata","date":"2026-05-26 20:03:36"},"5.9":{"tag":"5.9","author":"oxfordmetadata","date":"2026-05-28 03:17:11"},"6.0":{"tag":"6.0","author":"oxfordmetadata","date":"2026-05-29 13:21:51"},"6.1":{"tag":"6.1","author":"oxfordmetadata","date":"2026-05-31 14:14:37"},"6.2":{"tag":"6.2","author":"oxfordmetadata","date":"2026-05-31 22:18:48"},"6.3":{"tag":"6.3","author":"oxfordmetadata","date":"2026-06-02 10:36:42"},"6.4":{"tag":"6.4","author":"oxfordmetadata","date":"2026-06-03 09:52:12"},"7.0":{"tag":"7.0","author":"oxfordmetadata","date":"2026-06-05 12:49:25"},"7.1":{"tag":"7.1","author":"oxfordmetadata","date":"2026-06-05 21:32:29"},"7.2":{"tag":"7.2","author":"oxfordmetadata","date":"2026-06-09 07:43:52"},"7.3":{"tag":"7.3","author":"oxfordmetadata","date":"2026-06-10 02:38:20"},"7.4":{"tag":"7.4","author":"oxfordmetadata","date":"2026-06-12 08:47:22"},"8.0":{"tag":"8.0","author":"oxfordmetadata","date":"2026-06-14 21:07:40"},"8.1":{"tag":"8.1","author":"oxfordmetadata","date":"2026-06-22 05:57:48"},"8.2":{"tag":"8.2","author":"oxfordmetadata","date":"2026-06-25 06:39:49"},"8.3":{"tag":"8.3","author":"oxfordmetadata","date":"2026-06-26 09:54:43"},"8.4":{"tag":"8.4","author":"oxfordmetadata","date":"2026-07-04 13:16:31"},"8.5":{"tag":"8.5","author":"oxfordmetadata","date":"2026-07-06 11:18:02"},"8.6":{"tag":"8.6","author":"oxfordmetadata","date":"2026-07-13 03:41:37"},"8.7":{"tag":"8.7","author":"oxfordmetadata","date":"2026-07-13 11:46:36"},"9.0":{"tag":"9.0","author":"oxfordmetadata","date":"2026-07-20 10:34:04"},"9.1":{"tag":"9.1","author":"oxfordmetadata","date":"2026-07-20 20:22:41"},"9.2":{"tag":"9.2","author":"oxfordmetadata","date":"2026-07-21 07:45:03"},"9.3":{"tag":"9.3","author":"oxfordmetadata","date":"2026-07-22 18:33:21"},"9.4":{"tag":"9.4","author":"oxfordmetadata","date":"2026-07-23 18:40:00"}},"upgrade_notice":{"9.2":"<p>Recommended if your site has ever been restored, migrated or cloned. Database backups omit stored routines by default, which could leave the surveys, web-push, product-needs and session-analytics jobs failing every night with &quot;PROCEDURE \u2026 does not exist&quot; \u2014 permanently, since reactivating the plugin did not rebuild them. Those jobs now detect and repair their own routines, with no added cost on storefront requests.<\/p>","9.1":"<p>Recommended for everyone. Fixes a PHP fatal that could break sign-in (login form, My account, and magic-link) on sites using the identity\/attribution layer, corrects an AI credit balance that over-reported when a top-up was held, and removes a latent fatal on the paid-order path.<\/p>","9.0":"<p>The plugin is now called Rooster One. Display name only \u2014 settings, data, shortcodes and block names are unchanged, and there is nothing to reconfigure. Also: one unified checkout newsletter opt-in instead of two, a tidier birthday field, accessibility fixes on ratings and promo links, and faster Largest Contentful Paint on category, page and blog heroes.<\/p>","8.7":"<p>Makes more of Rooster One&#039;s native blocks (Recommendations, Product Slider, Product Variations Gallery) discoverable in the block editor and on the plugin page, documents the full block library, and clarifies the &quot;Post Related Product Categories&quot; block name. No front-end changes.<\/p>","8.6":"<p>New: an in-chat SEO Auto-Fix Assistant with Google Search Console plus backlinks &amp; disavow, a sharper and more relevant storefront assistant, and lower embedding costs. Much faster nightly Data Prep, vitals and analytics queries \u2014 no more billion-row scans or midnight swap spikes \u2014 and more resilient under heavy crawling. Note: the consent cookie scanner now defaults to off \u2014 rebuild the inventory on demand via &quot;Re-scan storefront now&quot;.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3614596,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3614596,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3616540,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3614576,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3614576,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3620389,"resolution":false,"location":"assets","locale":"","contents":"{\"landingPage\":\"\\\/wp-admin\\\/plugins.php\",\"preferredVersions\":{\"php\":\"8.0\",\"wp\":\"latest\"},\"phpExtensionBundles\":[\"kitchen-sink\"],\"features\":{\"networking\":true},\"steps\":[{\"step\":\"installPlugin\",\"options\":{\"activate\":true},\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"ai-eshop-optimizer\"}},{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"}]}"}},"all_blocks":{"aieo\/post-related-needs":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/post-related-needs","version":"1.0.0","title":"AIEO Post Related Needs","editorScript":"file:.\/edit.js","category":"theme","icon":"tag","description":"Need-tag chips for the current blog post. Reads wp_aieo_dmm_term_relations for pa_need \u2192 post edges. Each chip links to the need archive.","keywords":["aieo","need","tags","blog","related"],"supports":{"html":false,"align":["wide"],"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true},"color":{"background":true,"text":true}},"attributes":{"heading":{"type":"string","default":""}},"render":"file:.\/render.php","viewStyle":"file:.\/style.css","textdomain":"ai-eshop-optimizer"},"aieo\/lowest-price-message":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/lowest-price-message","version":"1.0.1","title":"AIEO Lowest Price Message","editorScript":"file:.\/edit.js","category":"woocommerce","icon":"tag","description":"EU Omnibus: on on-sale products, shows the operator-configured message with the lowest price before the reduction. Auto-hides when the product is not on sale.","keywords":["aieo","product","price","omnibus","sale","lowest"],"ancestor":["core\/template","core\/post-template","woocommerce\/single-product"],"supports":{"html":false,"align":false,"spacing":{"margin":true,"padding":true}},"attributes":{},"render":"file:.\/render.php","style":"file:.\/style.css","textdomain":"ai-eshop-optimizer"},"aieo\/recos":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/recos","version":"1.1.0","title":"AIEO Recommendations","category":"woocommerce","icon":"products","description":"Renders one AIEO recommendation surface (same_needs \/ crosssells \/ upsells \/ related \/ recently_viewed) as the placeholder div the lazy-recommendations.js bundle hydrator picks up on first user interaction. Same emitted markup as the legacy inline `<div id=\"aieo-X-placeholder\">` blocks so the existing JS hydrator works unchanged.","keywords":["aieo","recommendations","related","upsells","cross-sells","same-needs","recently-viewed"],"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true},"color":{"background":true,"text":true}},"attributes":{"surface":{"type":"string","default":"related","enum":["related","upsells","crosssells","recently_viewed","same_needs"]}},"render":"file:.\/render.php","editorScript":"file:.\/edit.js","textdomain":"ai-eshop-optimizer"},"aieo\/post-related-brands":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/post-related-brands","version":"1.0.0","title":"AIEO Post Related Brands","editorScript":"file:.\/edit.js","category":"theme","icon":"format-gallery","description":"Brand-logo slider for the current blog post. Reads wp_aieo_dmm_term_relations for product_brand \u2192 post edges.","keywords":["aieo","brand","slider","blog"],"supports":{"html":false,"align":["wide"],"spacing":{"margin":true,"padding":true}},"attributes":{"autoRotate":{"type":"boolean","default":true},"rotateMs":{"type":"number","default":4000},"imageSize":{"type":"string","default":"medium"}},"render":"file:.\/render.php","viewStyle":"file:.\/style.css","viewScript":"file:.\/view.js","textdomain":"ai-eshop-optimizer"},"aieo\/competition":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/competition","title":"Competition","category":"theme","icon":"awards","description":"Renders a competition \u2014 hero image, title, short description, the entry form and share buttons. Auto-binds to the competition page it's placed on, or pick a specific competition.","keywords":["competition","giveaway","contest","gravity form","diagonismos"],"textdomain":"ai-eshop-optimizer","usesContext":["postId"],"attributes":{"competitionId":{"type":"number","default":0}},"supports":{"html":false,"align":["wide","full"]},"editorScript":"file:.\/edit.js","style":"file:.\/style.css","render":"file:.\/render.php"},"aieo\/product-needs":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/product-needs","version":"1.0.0","title":"AIEO Product Needs","editorScript":"file:.\/edit.js","category":"woocommerce","icon":"tag","description":"Renders the 'This product covers:' \u0395\u03c0\u03b9\u03b8\u03c5\u03bc\u03af\u03b5\u03c2 (needs) list for the current single-product page. Wraps the existing AIEO_DMM_Product_Needs renderer so non-block themes keep their PHP path; on a block-themed PDP this is the canonical entry. Reads from `wp_aieo_dmm_product_needs` and `pa_need` taxonomy.","keywords":["aieo","product","needs","\u03b5\u03c0\u03b9\u03b8\u03c5\u03bc\u03af\u03b5\u03c2"],"ancestor":["core\/template","core\/post-template","woocommerce\/single-product"],"supports":{"html":false,"align":false,"spacing":{"margin":true}},"render":"file:.\/render.php","textdomain":"ai-eshop-optimizer"},"aieo\/post-related-categories":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/post-related-categories","version":"1.0.0","title":"AIEO Post Related Product Categories","editorScript":"file:.\/edit.js","category":"theme","icon":"list-view","description":"Dropdown of related product categories for the current blog post. Reads wp_aieo_dmm_term_relations for product_cat \u2192 post edges.","keywords":["aieo","category","blog","related"],"supports":{"html":false,"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true},"color":{"background":true,"text":true}},"attributes":{"label":{"type":"string","default":""}},"render":"file:.\/render.php","viewStyle":"file:.\/style.css","textdomain":"ai-eshop-optimizer"},"aieo\/free-shipping-pdp":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/free-shipping-pdp","version":"1.0.0","title":"AIEO Free Shipping (PDP bar)","editorScript":"file:.\/edit.js","category":"woocommerce","icon":"cart","description":"Per-product free-shipping progress bar. Reads threshold + messages + appearance from AIEO_DMM_Free_Shipping (admin: DMM \u2192 Free Shipping + COD) and the current cart subtotal from WC()->cart. Self-hides when the operator's `display_product` setting is off, when the threshold is 0, when the product is on the no-free-shipping exclusion list, or when the cart is empty AND the operator chose to suppress the empty-cart message. Updates client-side on every cart change via a tiny REST poll.","keywords":["aieo","free-shipping","pdp","progress-bar","upsell"],"ancestor":["core\/template","core\/post-template","woocommerce\/single-product"],"supports":{"html":false,"align":false,"spacing":{"margin":true,"padding":true}},"render":"file:.\/render.php","viewScript":"file:.\/view.js","style":"file:.\/style.css","textdomain":"ai-eshop-optimizer"},"aieo\/post-meta":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/post-meta","version":"1.0.0","title":"AIEO Product Post Meta (SKU + Barcodes)","editorScript":"file:.\/edit.js","category":"woocommerce","icon":"list-view","description":"Renders the SKU + per-variation barcode rows for the current product. Wraps AIEO_DMM_Product_Meta \u2014 the same module the `[om_ppe_product_meta]` shortcode uses (admin-configurable via DMM settings: show_sku, show_barcode, label customisation). On variable products the barcode row expands to one barcode per variation, hidden behind a `+ more` toggle.","keywords":["aieo","product","meta","sku","barcode","ean"],"ancestor":["core\/template","core\/post-template","woocommerce\/single-product"],"supports":{"html":false,"align":false,"spacing":{"margin":true}},"attributes":{"zone":{"type":"string","default":""}},"render":"file:.\/render.php","textdomain":"ai-eshop-optimizer"},"aieo\/product-variations-gallery":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/product-variations-gallery","version":"1.0.0","title":"AIEO Product Variations Gallery","category":"woocommerce","icon":"format-gallery","description":"Variation-aware product gallery: when a shopper selects a variation, the main product image and its gallery swap in place to that variation's own images. Reads each variation's existing image set, so there is no data migration.","keywords":["aieo","product","gallery","variations","pdp"],"ancestor":["core\/template","core\/post-template","woocommerce\/single-product"],"usesContext":["postId"],"supports":{"html":false,"align":false,"spacing":{"margin":false,"padding":false}},"render":"file:.\/render.php","editorScript":"file:.\/edit.js","viewScript":"file:.\/view.js","style":"file:.\/style.css","textdomain":"ai-eshop-optimizer"},"aieo\/product-slider":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/product-slider","version":"1.0.0","title":"AIEO Product Slider","category":"woocommerce","icon":"slides","description":"A horizontal product slider with the SAME look as the product-page recommendations (thin uppercase title + line, then cards). Set the title manually and pick products by category, tag and\/or specific product IDs.","keywords":["aieo","product","slider","carousel","recommendations","woocommerce","tag","category"],"textdomain":"ai-eshop-optimizer","supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true}},"attributes":{"title":{"type":"string","default":""},"categories":{"type":"string","default":""},"tags":{"type":"string","default":""},"productIds":{"type":"string","default":""},"limit":{"type":"number","default":12},"orderby":{"type":"string","default":"date","enum":["date","popularity","rating","price","price-desc","rand","menu_order"]},"showRating":{"type":"boolean","default":false}},"render":"file:.\/render.php","editorScript":"file:.\/edit.js","style":"aieo-recommendations"},"aieo\/brand-archive-hero":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/brand-archive-hero","version":"1.0.0","title":"AIEO Brand Archive Hero","editorScript":"file:.\/edit.js","category":"woocommerce","icon":"format-image","description":"Per-brand hero for the brand archive (taxonomy-product_brand). Reads queried brand term, joins core_brand_vitals + dmm_brand_extras. Renders hero image, logo overlay, headline, product count, wishlist heart, rating stars.","keywords":["aieo","brand","archive","hero"],"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true}},"attributes":{"showCounts":{"type":"boolean","default":true},"showWishlist":{"type":"boolean","default":true},"showRating":{"type":"boolean","default":true}},"render":"file:.\/render.php","style":"file:.\/style.css","viewScript":"file:.\/view.js","textdomain":"ai-eshop-optimizer"},"aieo\/custom-slots-region":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/custom-slots-region","version":"1.0.0","title":"AIEO Custom Slots Region","editorScript":"file:.\/edit.js","category":"woocommerce","icon":"screenoptions","description":"Placeholder block that, at render time, enumerates every enabled slot from the Custom Slots admin store and emits each as a sibling div. Designed to sit inside the .ff-recommendations-cluster flex container so each slot participates in the Recommendations Ordering CSS (`order:` \/ `display:none`) alongside the built-in aieo\/recos rails. This block emits NO wrapper of its own \u2014 slot divs are direct flex children of the parent group.","keywords":["aieo","slots","recommendations","tolstoy"],"supports":{"html":false,"align":false,"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true},"color":{"background":true,"text":true}},"attributes":{},"render":"file:.\/render.php","textdomain":"ai-eshop-optimizer"},"aieo\/breadcrumb":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/breadcrumb","version":"1.0.0","title":"AIEO Breadcrumb","editorScript":"file:.\/edit.js","category":"theme","icon":"menu-alt","description":"SEO-consistent breadcrumb. Uses the SAME pinned canonical category as AIEO's canonical URL and JSON-LD BreadcrumbList, so the visible trail never disagrees with what Google reads.","keywords":["aieo","breadcrumb","seo","navigation"],"supports":{"html":false,"align":["wide"],"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true},"color":{"background":true,"text":true,"link":true}},"attributes":{"separator":{"type":"string","default":"\u203a"}},"render":"file:.\/render.php","viewStyle":"file:.\/style.css","textdomain":"ai-eshop-optimizer"},"aieo\/brand-slider":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/brand-slider","version":"1.0.0","title":"AIEO Brand Slider","category":"woocommerce","icon":"slides","description":"Lazy-hydrated brand carousel. Modes: top, new_brand, new_product, favourites (per-user affinity), manual. Server-renders the first N cards as a noscript fallback; client hydrates into a vanilla scroll-snap carousel with arrow nav.","keywords":["aieo","brands","slider","carousel"],"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true}},"attributes":{"mode":{"type":"string","default":"top","enum":["top","new_brand","new_product","favourites","manual"]},"limit":{"type":"number","default":10},"slidesPerView":{"type":"number","default":5},"title":{"type":"string","default":""},"subtitle":{"type":"string","default":""},"headingFeature":{"type":"boolean","default":false},"ctaLabel":{"type":"string","default":""},"ctaUrl":{"type":"string","default":""},"manualBrandIds":{"type":"array","default":[]},"showCounts":{"type":"boolean","default":false},"cardStyle":{"type":"string","default":"hero","enum":["hero","logo"]}},"render":"file:.\/render.php","editorScript":"file:.\/edit.js","viewScript":"file:.\/view.js","style":"file:.\/style.css","textdomain":"ai-eshop-optimizer"},"aieo\/sale-eligibility-message":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/sale-eligibility-message","version":"1.0.0","title":"AIEO Sale Eligibility Message","editorScript":"file:.\/edit.js","category":"woocommerce","icon":"megaphone","description":"Conditional badge that appears under the price WHEN the current product is on sale, telling the shopper how they qualify for the sale price (everyone, signed-in only, PRO role, etc.). Auto-hides on non-sale products. Token replacement: {regular_price}, {sale_price}, {savings_amount}, {savings_pct}, {role}.","keywords":["aieo","product","sale","discount","eligibility","role-pricing"],"ancestor":["core\/template","core\/post-template","woocommerce\/single-product"],"supports":{"html":false,"align":false,"spacing":{"margin":true,"padding":true},"color":{"background":true,"text":true}},"attributes":{"messageAnonymous":{"type":"string","default":"\ud83d\udd25 \u03a3\u03b5 \u03c0\u03c1\u03bf\u03c3\u03c6\u03bf\u03c1\u03ac \u2014 \u03b5\u03be\u03bf\u03b9\u03ba\u03bf\u03bd\u03bf\u03bc\u03b5\u03af\u03c4\u03b5 {savings_amount} ({savings_pct} \u03ad\u03ba\u03c0\u03c4\u03c9\u03c3\u03b7)."},"messageLoggedIn":{"type":"string","default":"\ud83d\udd25 \u0394\u03b9\u03ba\u03b1\u03b9\u03bf\u03cd\u03c3\u03c4\u03b5 \u03c4\u03b7 \u03bc\u03b5\u03b9\u03c9\u03bc\u03ad\u03bd\u03b7 \u03c4\u03b9\u03bc\u03ae! \u0395\u03be\u03bf\u03b9\u03ba\u03bf\u03bd\u03bf\u03bc\u03b5\u03af\u03c4\u03b5 {savings_amount}."},"messageProMember":{"type":"string","default":"\ud83d\udc8e \u03a9\u03c2 PRO \u03bc\u03ad\u03bb\u03bf\u03c2 \u03b4\u03b9\u03ba\u03b1\u03b9\u03bf\u03cd\u03c3\u03c4\u03b5 \u03b1\u03c5\u03c4\u03ae \u03c4\u03b7\u03bd \u03c4\u03b9\u03bc\u03ae \u03c3\u03b5 \u03ba\u03ac\u03b8\u03b5 \u03c0\u03b1\u03c1\u03b1\u03b3\u03b3\u03b5\u03bb\u03af\u03b1."},"showOnNonSale":{"type":"boolean","default":false}},"render":"file:.\/render.php","style":"file:.\/style.css","textdomain":"ai-eshop-optimizer"},"aieo\/taxonomy-archive-hero":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/taxonomy-archive-hero","version":"1.0.0","title":"AIEO Taxonomy Archive Hero","editorScript":"file:.\/edit.js","category":"woocommerce","icon":"category","description":"Generic per-term archive hero. Auto-detects queried taxonomy (product_brand \/ pa_need \/ product_tag \/ product_cat) and dispatches to the right data source \u2014 brand vitals + extras for product_brand, need_extras for pa_need, term thumbnail + description for product_tag, category extras for product_cat. Filterable via aieo_taxonomy_archive_hero_data for new taxonomies.","keywords":["aieo","taxonomy","archive","hero","brand","need","tag","category"],"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true},"color":{"background":true,"text":true}},"attributes":{"showCounts":{"type":"boolean","default":true},"showHeadline":{"type":"boolean","default":true}},"render":"file:.\/render.php","style":"file:.\/style.css","textdomain":"ai-eshop-optimizer"},"aieo\/custom-slot":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/custom-slot","version":"1.0.0","title":"AIEO Custom Slot","editorScript":"file:.\/edit.js","category":"woocommerce","icon":"edit-page","description":"Renders one operator-defined slot (Tolstoy widget OR free-form HTML\/code) from the Custom Slots admin store. Used inside the single-product recommendations cluster so each slot can be drag-positioned alongside the built-in reco rails. Resolve target via slotId.","keywords":["aieo","tolstoy","embed","recommendations","slot"],"supports":{"html":false,"align":["wide"],"spacing":{"margin":true,"padding":true}},"attributes":{"slotId":{"type":"string","default":""}},"render":"file:.\/render.php","textdomain":"ai-eshop-optimizer"},"aieo\/loyalty-connection":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/loyalty-connection","version":"1.0.0","title":"AIEO Loyalty Connection","editorScript":"file:.\/edit.js","category":"widgets","icon":"id-alt","description":"Bonus-card loyalty \u2014 connect\/identify, then show the most recent points.","textdomain":"ai-eshop-optimizer","supports":{"html":false,"align":true,"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true},"color":{"background":true,"text":true}},"render":"file:.\/render.php"},"aieo\/taxonomy-archive-footer":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/taxonomy-archive-footer","version":"1.0.0","title":"AIEO Taxonomy Archive Footer","editorScript":"file:.\/edit.js","category":"woocommerce","icon":"editor-paragraph","description":"Per-term editorial \/ SEO footer copy. Reads the queried taxonomy's *_extras table footer column when present (need_extras.footer_text, brand_extras.footer_text, category_extras.footer_text). Emits nothing when no footer copy exists for the term.","keywords":["aieo","taxonomy","archive","footer","seo"],"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true}},"render":"file:.\/render.php","textdomain":"ai-eshop-optimizer"},"aieo\/event-registration":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/event-registration","title":"Event Registration","editorScript":"file:.\/edit.js","category":"theme","icon":"calendar-alt","description":"A self-registration form for an event \u2014 guests sign up by email and are taken to their RSVP page. Auto-binds to the event it's placed on, or pick a specific event.","keywords":["event","registration","rsvp","signup","ekdilosi"],"textdomain":"ai-eshop-optimizer","usesContext":["postId"],"attributes":{"eventId":{"type":"number","default":0}},"supports":{"html":false,"align":["wide","full"]},"render":"file:.\/render.php"},"aieo\/brand-story":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/brand-story","version":"1.0.0","title":"AIEO Brand Story","editorScript":"file:.\/edit.js","category":"woocommerce","icon":"editor-paragraph","description":"Renders brand long-form copy (history, ambassadors, importer, footer) on the brand archive page. Reads queried brand term + wp_aieo_dmm_brand_extras. Emits nothing for sections with no copy.","keywords":["aieo","brand","story","history"],"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true},"color":{"background":true,"text":true}},"attributes":{"showHistory":{"type":"boolean","default":true},"showAmbassadors":{"type":"boolean","default":true},"showWebsite":{"type":"boolean","default":true},"showFooter":{"type":"boolean","default":false}},"render":"file:.\/render.php","style":"file:.\/style.css","textdomain":"ai-eshop-optimizer"},"aieo\/taxonomy-related-articles":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/taxonomy-related-articles","version":"1.0.0","title":"AIEO Taxonomy Related Articles","editorScript":"file:.\/edit.js","category":"woocommerce","icon":"format-aside","description":"Renders 'From the Blog' article cards related to the queried term \u2014 works for any taxonomy (product_cat, pa_need, product_tag, supplier, custom). Reads bidirectional edges from wp_aieo_dmm_term_relations (the same source brand-related uses for product_brand). On the brand archive itself, prefer aieo\/brand-related \u2014 this block is for the OTHER taxonomies.","keywords":["aieo","taxonomy","related","articles","blog"],"supports":{"html":false,"align":false,"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true},"color":{"background":true,"text":true}},"attributes":{"limit":{"type":"number","default":3},"layout":{"type":"string","enum":["vertical","horizontal"],"default":"vertical"},"heading":{"type":"string","default":""}},"render":"file:.\/render.php","viewStyle":"aieo-article-cards","textdomain":"ai-eshop-optimizer"},"aieo\/product-card-swatches":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/product-card-swatches","version":"1.0.0","title":"AIEO Product Card Swatches","editorScript":"file:.\/edit.js","category":"woocommerce","icon":"art","description":"Variation swatch column for a product card inside any block-based product loop (wp:woocommerce\/product-collection, query loop, recommendations, blog\u2192taxonomy template). Reads block-context postId and renders the same cached swatch HTML the classic-loop path emits \u2014 so CSS\/JS keep working unchanged.","keywords":["aieo","swatches","variation","product","archive"],"ancestor":["woocommerce\/product-template","woocommerce\/product-query","core\/post-template"],"usesContext":["postId","postType","queryId"],"supports":{"html":false,"align":false,"spacing":{"margin":true,"padding":true}},"attributes":{"renderContext":{"type":"string","enum":["archive","product"],"default":"archive"}},"render":"file:.\/render.php","textdomain":"ai-eshop-optimizer"},"aieo\/brand-related":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/brand-related","version":"1.0.0","title":"AIEO Brand Related","editorScript":"file:.\/edit.js","category":"woocommerce","icon":"admin-links","description":"Cross-link strip for the brand archive: related product categories (chips), related blog articles (3-card row), and 'other brands you love' for logged-in viewers. Reads wp_aieo_dmm_term_relations + customer brand affinity.","keywords":["aieo","brand","related","cross-sell"],"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true},"color":{"background":true,"text":true}},"attributes":{"showCategories":{"type":"boolean","default":true},"showArticles":{"type":"boolean","default":true},"showOtherBrands":{"type":"boolean","default":true},"articlesLimit":{"type":"number","default":3},"otherBrandsLimit":{"type":"number","default":6},"layout":{"type":"string","default":"horizontal","enum":["horizontal","vertical"]}},"render":"file:.\/render.php","viewStyle":["file:.\/style.css","aieo-article-cards"],"textdomain":"ai-eshop-optimizer"},"aieo\/latest-posts-overlay":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/latest-posts-overlay","version":"1.0.0","title":"AIEO Latest Posts Overlay","category":"theme","icon":"format-image","description":"Latest blog posts with image overlay + category badge. Mobile: horizontal slider with bullet nav. Desktop: grid.","keywords":["aieo","blog","latest posts","overlay"],"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true},"color":{"background":true,"text":true}},"attributes":{"posts":{"type":"number","default":5},"imageSize":{"type":"string","default":"medium"},"excludeCurrent":{"type":"boolean","default":true},"cardStyle":{"type":"string","default":"overlay","enum":["overlay","glass"]},"secHeading":{"type":"string","default":""},"secHeadingFeature":{"type":"boolean","default":false},"secAlign":{"type":"string","default":"left"}},"render":"file:.\/render.php","editorScript":"file:.\/edit.js","viewStyle":"file:.\/style.css","viewScript":"file:.\/view.js","textdomain":"ai-eshop-optimizer"},"aieo\/brand-rails":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/brand-rails","version":"1.1.0","title":"AIEO Brand Rails","category":"woocommerce","icon":"category","description":"Stacked curated brand rails (Featured \/ New \/ Your Favourites \/ Top). Each rail has its own count and slides-per-view, configurable in the inspector.","keywords":["aieo","brands","rails","discovery"],"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true}},"attributes":{"showFeatured":{"type":"boolean","default":true},"showNew":{"type":"boolean","default":true},"showFavourites":{"type":"boolean","default":true},"showTop":{"type":"boolean","default":false},"newMode":{"type":"string","default":"new_product","enum":["new_product","new_brand"]},"topLimit":{"type":"number","default":0},"featuredLimit":{"type":"number","default":0},"newLimit":{"type":"number","default":0},"favouritesLimit":{"type":"number","default":0},"topSlidesPerView":{"type":"number","default":0},"featuredSlidesPerView":{"type":"number","default":0},"newSlidesPerView":{"type":"number","default":0},"favouritesSlidesPerView":{"type":"number","default":0},"limitPerRail":{"type":"number","default":10},"slidesPerView":{"type":"number","default":5}},"render":"file:.\/render.php","editorScript":"file:.\/edit.js","style":"file:.\/style.css","textdomain":"ai-eshop-optimizer"},"aieo\/professional-signup":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/professional-signup","version":"1.0.0","title":"AIEO Professional Signup","editorScript":"file:.\/edit.js","category":"widgets","icon":"businessperson","description":"Professional \/ student registration via Gravity Forms (renders [membership_gf]).","textdomain":"ai-eshop-optimizer","supports":{"html":false,"align":true,"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true},"color":{"background":true,"text":true}},"render":"file:.\/render.php"},"aieo\/brand-azindex":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/brand-azindex","version":"1.0.1","title":"AIEO Brand A-Z Index","category":"woocommerce","icon":"list-view","description":"Server-rendered A-Z brand directory. Every letter A\u2013Z (plus '#' for non-Latin brands) is always present; empty letters render disabled. Sticky letter bar + per-letter brand grid with product counts. Reads exclusively from wp_aieo_core_brand_vitals.","keywords":["aieo","brands","a-z","directory","catalogue"],"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true}},"attributes":{"showCounts":{"type":"boolean","default":true},"showLogos":{"type":"boolean","default":true},"stickyBar":{"type":"boolean","default":true},"headingLevel":{"type":"string","default":"h2","enum":["h2","h3","h4"]},"showHashBucket":{"type":"boolean","default":true}},"render":"file:.\/render.php","viewScript":"file:.\/view.js","editorScript":"file:.\/edit.js","style":"file:.\/style.css","textdomain":"ai-eshop-optimizer"},"aieo\/store-locator":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/store-locator","title":"AIEO Store Locator","category":"widgets","icon":"location-alt","description":"Grid or list of all your store locations \u2014 address, phone, opening hours and Google Maps \/ review links.","editorScript":"file:.\/edit.js","textdomain":"ai-eshop-optimizer"},"aieo\/opening-hours":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/opening-hours","title":"AIEO Opening Hours","category":"widgets","icon":"clock","description":"A store location's opening hours. Auto-resolves on a store page, or set a location slug.","editorScript":"file:.\/edit.js","textdomain":"ai-eshop-optimizer"},"aieo\/store-map":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/store-map","title":"AIEO Store Map","category":"widgets","icon":"location","description":"A single store's location map (keyless Google Maps embed) plus a directions link. Auto-resolves on a store page, or set a location slug.","editorScript":"file:.\/edit.js","textdomain":"ai-eshop-optimizer"},"aieo\/business-info":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/business-info","title":"AIEO Business Info","category":"widgets","icon":"store","description":"A store location's address, phone, opening hours and Google links \u2014 from your Locations & Reviews data.","editorScript":"file:.\/edit.js","textdomain":"ai-eshop-optimizer"},"aieo\/google-reviews":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/google-reviews","title":"AIEO Google Reviews","category":"widgets","icon":"star-filled","description":"Live Google reviews pulled from the local cache. Single location, mixed feed, or cards grid.","editorScript":"file:.\/edit.js","textdomain":"ai-eshop-optimizer"},"aieo\/store-hero":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/store-hero","title":"AIEO Store Hero","category":"widgets","icon":"store","description":"Shop-page header hero in the category-hero style (centred image, title, horizontal line). Listing title, heading and description come from the bound location. Auto-resolves on a store page, or set a location slug.","editorScript":"file:.\/edit.js","textdomain":"ai-eshop-optimizer"},"aieo\/store-info":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/store-info","title":"AIEO Store Info (address, phone, hours)","category":"widgets","icon":"store","description":"Structured store contact info \u2014 address, clickable phone, and per-day hours. Reads from post meta + the linked Google location row.","editorScript":"file:.\/edit.js","textdomain":"ai-eshop-optimizer"},"aieo\/category-lead":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/category-lead","title":"AIEO Category Lead","category":"theme","icon":"text","description":"The current category's description, falling back to its name when it has none. For blog category archive headers.","editorScript":"file:.\/edit.js","textdomain":"ai-eshop-optimizer"},"aieo\/blog-hero":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/blog-hero","title":"AIEO Blog Hero (Latest Post)","category":"theme","icon":"admin-post","description":"Featured latest-post hero with the category-hero look: a top title, the newest post's title as the headline, its excerpt as the description and its featured image \u2014 all clickable. On a blog category\/tag archive it features that term's latest post.","editorScript":"file:.\/edit.js","textdomain":"ai-eshop-optimizer"},"aieo\/category-hero":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/category-hero","title":"AIEO Category Hero","category":"widgets","icon":"cover-image","description":"The queried category's hero \u2014 image, title and description \u2014 auto-filled from the term, for product or blog category archive headers.","editorScript":"file:.\/edit.js","textdomain":"ai-eshop-optimizer"},"aieo\/blog-subcategories":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/blog-subcategories","title":"AIEO Blog Subcategories (Dropdown)","category":"theme","icon":"list-view","description":"A dropdown of the current blog category's subcategories, styled like the blog-post categories dropdown. Renders nothing when the category has none.","editorScript":"file:.\/edit.js","textdomain":"ai-eshop-optimizer"},"aieo\/page-hero":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/page-hero","title":"AIEO Page Hero","category":"theme","icon":"cover-image","description":"Manual hero \u2014 top title, left headline, right description and desktop\/mobile images. Identical look to the category hero, usable on any page.","editorScript":"file:.\/edit.js","textdomain":"ai-eshop-optimizer"},"aieo\/category-footer-hero":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/category-footer-hero","title":"AIEO Category Footer Hero","category":"widgets","icon":"align-pull-left","description":"The category's SEO footer text beside the category image (image left, rich text right) with the hero divider line. Auto-fills from the queried product category.","editorScript":"file:.\/edit.js","textdomain":"ai-eshop-optimizer"},"aieo\/category-chips":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aieo\/category-chips","title":"AIEO Category Chips","category":"widgets","icon":"tag","description":"A row of clickable category chips for the current archive \u2014 the term's child categories.","editorScript":"file:.\/edit.js","textdomain":"ai-eshop-optimizer"}},"tagged_versions":["1.0","2.0","2.1","3.0","3.1","3.1.1","3.1.2","3.1.3","3.2","3.2.1","3.3","3.3.1","3.3.2","3.3.3","3.4","3.5","3.5.1","3.5.2","3.6","4.0","4.1","4.2","5.0","5.1","5.10","5.2","5.3","5.4","5.5","5.6","5.7","5.8","5.9","6.0","6.1","6.2","6.3","6.4","7.0","7.1","7.2","7.3","7.4","8.0","8.1","8.2","8.3","8.4","8.5","8.6","8.7","9.0","9.1","9.2","9.3","9.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3076322,"resolution":"1","location":"assets","locale":"","width":2682,"height":5862},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3389715,"resolution":"10","location":"assets","locale":"","width":2374,"height":1248},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3389715,"resolution":"11","location":"assets","locale":"","width":2349,"height":1246},"screenshot-12.png":{"filename":"screenshot-12.png","revision":3389715,"resolution":"12","location":"assets","locale":"","width":2348,"height":947},"screenshot-13.png":{"filename":"screenshot-13.png","revision":3388833,"resolution":"13","location":"assets","locale":"","width":662,"height":854},"screenshot-14.png":{"filename":"screenshot-14.png","revision":3388833,"resolution":"14","location":"assets","locale":"","width":653,"height":828},"screenshot-15.png":{"filename":"screenshot-15.png","revision":3388833,"resolution":"15","location":"assets","locale":"","width":666,"height":924},"screenshot-16.png":{"filename":"screenshot-16.png","revision":3388833,"resolution":"16","location":"assets","locale":"","width":657,"height":623},"screenshot-17.png":{"filename":"screenshot-17.png","revision":3388833,"resolution":"17","location":"assets","locale":"","width":661,"height":533},"screenshot-18.png":{"filename":"screenshot-18.png","revision":3388833,"resolution":"18","location":"assets","locale":"","width":663,"height":839},"screenshot-19.png":{"filename":"screenshot-19.png","revision":3388833,"resolution":"19","location":"assets","locale":"","width":658,"height":919},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3076322,"resolution":"2","location":"assets","locale":"","width":2455,"height":1341},"screenshot-20.png":{"filename":"screenshot-20.png","revision":3388833,"resolution":"20","location":"assets","locale":"","width":655,"height":634},"screenshot-21.png":{"filename":"screenshot-21.png","revision":3388833,"resolution":"21","location":"assets","locale":"","width":654,"height":638},"screenshot-22.png":{"filename":"screenshot-22.png","revision":3388833,"resolution":"22","location":"assets","locale":"","width":652,"height":631},"screenshot-23.png":{"filename":"screenshot-23.png","revision":3390442,"resolution":"23","location":"assets","locale":"","width":1990,"height":1244},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3076322,"resolution":"3","location":"assets","locale":"","width":1792,"height":568},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3076322,"resolution":"4","location":"assets","locale":"","width":1791,"height":878},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3076322,"resolution":"5","location":"assets","locale":"","width":2441,"height":593},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3076322,"resolution":"6","location":"assets","locale":"","width":1791,"height":357},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3076322,"resolution":"7","location":"assets","locale":"","width":2435,"height":434},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3380380,"resolution":"8","location":"assets","locale":"","width":1500,"height":732},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3380380,"resolution":"9","location":"assets","locale":"","width":765,"height":1036}},"screenshots":[]},"plugin_section":[],"plugin_tags":[2353,569,247,186,286],"plugin_category":[45],"plugin_contributors":[250108],"plugin_business_model":[],"class_list":["post-192766","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-automation","plugin_tags-performance","plugin_tags-seo","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-oxfordmetadata","plugin_committers-oxfordmetadata"],"banners":{"banner":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/banner-772x250.png?rev=3614576","banner_2x":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/banner-1544x500.png?rev=3614576","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/icon.svg?rev=3616540","icon":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/icon.svg?rev=3616540","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-1.png?rev=3076322","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-2.png?rev=3076322","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-3.png?rev=3076322","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-4.png?rev=3076322","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-5.png?rev=3076322","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-6.png?rev=3076322","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-7.png?rev=3076322","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-8.png?rev=3380380","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-9.png?rev=3380380","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-10.png?rev=3389715","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-11.png?rev=3389715","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-12.png?rev=3389715","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-13.png?rev=3388833","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-14.png?rev=3388833","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-15.png?rev=3388833","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-16.png?rev=3388833","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-17.png?rev=3388833","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-18.png?rev=3388833","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-19.png?rev=3388833","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-20.png?rev=3388833","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-21.png?rev=3388833","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-22.png?rev=3388833","caption":""},{"src":"https:\/\/ps.w.org\/ai-eshop-optimizer\/assets\/screenshot-23.png?rev=3390442","caption":""}],"raw_content":"<!--section=description-->\nRooster One \u2014 the unified AI commerce &amp; content suite for WordPress &amp; WooCommerce\n\n<p>Rooster One turns your site into an adaptive, self-optimising storefront \u2014 or content platform. One plugin does the work of a whole stack of subscriptions \u2014 an AI assistant, product recommendations, a complete in-house SEO engine, first-party measurement and consent, pricing and merchandising, fulfilment and operations, customer intelligence, and plain-language analytics \u2014 powered by the latest models from <strong>Anthropic Claude<\/strong>, with <strong>Voyage AI<\/strong> embeddings for semantic search.<\/p>\n\n<p>Its guiding principle is <strong>unification of experiences and functionality<\/strong>: products are content and content is products, measured on one spine; every storefront surface shares the same design tokens, containers and controls; every report reads from one canonical source of truth; and the heavy lifting is pre-computed into materialised tables and served by a thin front-end runtime \u2014 so each feature adds capability, not milliseconds.<\/p>\n\n<p><strong>Works with or without WooCommerce.<\/strong> Tell Rooster One what your site is \u2014 a shop, a catalogue (products shown as content, without checkout), or a pure content\/publisher site \u2014 or let it auto-detect, and every metric, score and report adapts. Perfect for:\n- WooCommerce stores that want recommendations, merchandising, SEO, fulfilment and attribution in one place\n- Publishers, portals and content sites that want first-class SEO, conversion goals and campaign analytics \u2014 not a bolted-on afterthought\n- Corporate and information sites that want an intelligent, on-brand AI assistant and support<\/p>\n\n<p>You can adopt it one capability at a time. Almost everything ships <strong>off by default<\/strong> and runs <strong>alongside<\/strong> your existing tools (your current SEO plugin, your pixel manager, your CMP) until you choose to switch each piece on \u2014 so installing changes nothing until you flip a toggle.<\/p>\n\n<h3>Features<\/h3>\n\n<h3>Conversational AI &amp; semantic search<\/h3>\n\n<ul>\n<li>A floating, fully themeable chat widget that answers shoppers in natural language, grounded in your own catalogue and content by retrieval-augmented search on <strong>Anthropic Claude<\/strong> \u2014 it recommends only real, in-stock items with exact links, and never invents products.<\/li>\n<li><strong>Semantic product &amp; content search<\/strong> powered by <strong>Voyage AI<\/strong> embeddings \u2014 shoppers find products by meaning, not keywords, across products, posts, pages and taxonomy terms (embeddings refresh only when content actually changes).<\/li>\n<li><strong>Site-type-aware<\/strong> \u2014 the assistant detects whether it is on a shop, a blog, an information portal or a mixed site and adapts its role and wording: a shopping assistant, a content guide or a pure support assistant.<\/li>\n<li><strong>You stay in control<\/strong> \u2014 a curated business-info knowledge base (policies, shipping, locations, FAQs) is always in context; identity guardrails (\"what this site IS \/ is NOT\") stop it mis-describing you; results are re-ranked and quota-filtered by your own rules; and chat can be scoped to a single category (respecting the terms you hide from browsing).<\/li>\n<li><strong>Themeable without code<\/strong> \u2014 position, colours, rounded\/square style and separate desktop\/mobile font sizes, with a per-answer happiness rating that feeds AI Chat Analytics. The model list is registry-driven and self-healing, and all AI runs through your Rooster AI credits with no per-provider API keys to manage.<\/li>\n<\/ul>\n\n<h3>AI product recommendations<\/h3>\n\n<ul>\n<li>Graph-database-powered up-sell \/ cross-sell pairings from your real sales patterns (the optional service at eshop-optimizer.com), importable with one click \u2014 or import any recommendations from a CSV in our format.<\/li>\n<li><strong>Products for the same need<\/strong> \u2014 surfaces alternatives that satisfy the same customer need (via your need taxonomy), ranked by pre-computed sales performance, de-duplicated against your up-sells and cross-sells.<\/li>\n<li><strong>Recommendation rails, ordered your way<\/strong> \u2014 drag-and-drop ordering of every rail (Up-sells, Cross-sells, Related, Recently Viewed, Same-need) with per-rail show\/hide, on both block (FSE) and classic themes.<\/li>\n<li><strong>Custom slots<\/strong> between the rails \u2014 drop in rich HTML\/WooCommerce shortcodes or a Tolstoy video-shopping widget, each with its own heading.<\/li>\n<li>Built-in performance tracking with Google UTM tags and a recommendation-lift report, so you can see the incremental orders and revenue the engine adds over each traffic channel.<\/li>\n<\/ul>\n\n<h3>In-house SEO engine \u2014 for shops <em>and<\/em> content sites (a faster, Greek-aware AIOSEO\/Yoast replacement)<\/h3>\n\n<ul>\n<li>A complete on-page engine \u2014 title, meta description, canonical, robots, Open Graph, Twitter and JSON-LD \u2014 built once into a head cache and served by the thin runtime in a single cached read (near-zero added TTFB, no per-request assembly, no telemetry). It self-gates behind your existing SEO plugin until you switch it on, with a read-only <strong>AIOSEO importer<\/strong> and a head-parity verify before you cut over.<\/li>\n<li><strong>Site profiles<\/strong> \u2014 shop, catalogue or content\/publisher (or auto-detected from real sales evidence); opportunity scoring, cornerstone selection and the demand score all adapt, so SEO works correctly on a magazine or a portal, not just a shop.<\/li>\n<li><strong>Rich commerce schema<\/strong>, all vitals-driven (never live queries): variable products emit <code>ProductGroup<\/code> + <code>hasVariant<\/code>\/<code>variesBy<\/code>; real per-variant <strong>colour<\/strong> mapped from your own swatch attributes; <code>gtin<\/code>, brand, sale-price strikethrough, and operator-configured <code>OfferShippingDetails<\/code> + <code>MerchantReturnPolicy<\/code> on every Offer. Category, brand and tag archives emit <code>CollectionPage<\/code> + <code>ItemList<\/code> + <code>BreadcrumbList<\/code>.<\/li>\n<li><strong>AI titles &amp; descriptions with live SERP context<\/strong> \u2014 a nightly queue picks your highest-ROI pages, pulls the real Google results (competitor titles, descriptions, People-Also-Ask) for the target keyword, and has Claude write copy to beat that exact SERP; drafts wait for approval, or switch on <strong>Autopilot<\/strong>. Plus one-click <strong>Claude AI Assist<\/strong> for any single title\/description\/keyphrase, in the content's own language and grounded in real demand.<\/li>\n<li><strong>DataForSEO rank tracking<\/strong> \u2014 connect a DataForSEO account and Rooster One pulls a weekly snapshot of every Google keyword you rank for and surfaces <strong>striking-distance<\/strong> opportunities (positions 8\u201320 by volume, one push from page one), under a monthly spend cap you set.<\/li>\n<li><strong>Behaviour-informed opportunity grid &amp; auto-pillars<\/strong> \u2014 every product and content object is placed on a traffic \u00d7 conversion grid (hidden gem, intent mismatch, defend, prune) with an action per quadrant, and cornerstone\/pillar pages are chosen from real performance, not a manual flag.<\/li>\n<li><strong>Local SEO<\/strong> \u2014 a <code>LocalBusiness<\/code> node per physical store (hours, geo, price range, image, Maps links) with Store Locator \/ Opening Hours \/ Business Info blocks and an optional store-page post type.<\/li>\n<li><strong>Image SEO<\/strong> (auto-fills only empty alt text), a <strong>redirects engine<\/strong> with an automatic slug monitor, unique-404 list and loop \/ target-exists import safeguards, a <strong>static, outage-proof sitemap<\/strong> (served as files even if the plugin is off), and a <strong>managed robots.txt<\/strong> written as a static web-root file (never overwriting one it didn't create).<\/li>\n<li>A live <strong>0\u2013100 SEO score<\/strong> and health dashboard, <strong>EU Omnibus<\/strong> lowest-price history, and multilingual head + hreflang (WPML \/ Polylang \/ TranslatePress).<\/li>\n<\/ul>\n\n<h3>Measurement, consent &amp; attribution<\/h3>\n\n<ul>\n<li><strong>First-party, server-side measurement<\/strong> you own end to end: Meta Pixel + Conversions API, GA4 + Measurement Protocol, Google Ads (browser + server-side Enhanced Conversions), and TikTok Pixel + Events API \u2014 deduplicated on a shared event id and dispatched in-request after the order is saved (no cron to drain) for zero checkout latency. A confirmed 2xx is required before an order counts as sent, and a daily safety-net re-fires any paid order whose send was dropped \u2014 so no purchase is silently lost. Each platform is independently selectable, so you can keep the tools you already run.<\/li>\n<li><strong>Advertiser-grade match quality<\/strong> \u2014 Facebook Advanced Matching, complete GA4 \/ Google Ads user data (Unicode-correct for Greek), recovered fbc\/ttclid\/gclid, and hashed PII throughout (never stored or logged raw). A built-in <strong>Google tag (gtag.js) \/ GTM loader<\/strong> fires the full GA4 ecommerce funnel with no Site Kit, and a <strong>server-side dedup bridge<\/strong> hands agency GTM setups Rooster One's own event ids so the browser hit collapses against Rooster One's server send.<\/li>\n<li><strong>Consent \/ GDPR CMP<\/strong> \u2014 a lightweight, first-party cookie-consent banner (no external CMP, no IAB TCF bloat): rich message, Accept \/ Decline \/ Customize with a per-category preferences panel, per-button theming with an equal-prominence guard, two layouts, and a re-openable \"Cookie settings\" control positionable per device. It drives <strong>Google Consent Mode v2<\/strong> with region-aware, cache-safe defaults, carries consent <strong>in-band<\/strong> on every server event (so a declined category down-scopes the conversion at the ad platform, not only the browser), keeps an IP\/UA-hashed proof-of-consent audit log, and includes a <strong>cookie scanner<\/strong> that classifies the services your storefront sets. Rooster One's render-critical consent and measurement scripts are kept out of WP Rocket's delay\/defer so a delayed banner never becomes a compliance gap.<\/li>\n<li><strong>ROI Wizard &amp; UTM Explorer<\/strong> \u2014 one cockpit for \"what actually drove the sale\": pick a type (recommendation engine, offer, channel, campaign, creative), a value and a period, and see orders, revenue, cost, net, ROAS and ROI %, with period-over-period comparison. A cascading UTM drill-down (Source \u2192 Medium \u2192 Campaign \u2192 Term \u2192 Content) with fast searchable pickers, and a friendly Channel dimension, keep paid and organic cleanly separated.<\/li>\n<li><strong>Ad-spend ledger + connectors<\/strong> \u2014 enter spend, bulk-import a CSV, or connect Google Ads \/ Meta \/ TikTok through a guided wizard to pull campaign spend nightly, so ROI becomes automatic. One canonical source of truth for each order's revenue and marketing channel ties it all together.<\/li>\n<li><strong>Landing pages, campaigns &amp; exit pages<\/strong> \u2014 every session's landing URL is parsed once into a clean path plus UTM parameters (per-click junk like fbclid dropped), rolled up per day by campaign and landing page into a durable table, with an exit-page report split by whether the visitor converted first, and one <strong>session-value ladder<\/strong> (purchase &gt; cart &gt; goal &gt; engaged &gt; pageview) that makes shop and content sites comparable.<\/li>\n<li><strong>Conversion goals for content &amp; catalogue sites<\/strong> \u2014 choose which Gravity Forms (plus the Newsletter plugin, LearnDash, or any custom <code>Rooster One_goal<\/code> action) count as conversions, and see goals by traffic source \u2014 so portals and publishers get a real conversion story, not just a shop's.<\/li>\n<li><strong>Attribution in your emails<\/strong> \u2014 staff new-order emails carry an \"Order origin &amp; attribution\" block (marketplace or channel + all five UTMs, now including cheque \/ bank-transfer \/ COD orders), and Gravity Forms staff notifications get the same \u2014 channel, five UTMs, gclid, landing page and referrer \u2014 with no hidden form fields or per-site code.<\/li>\n<li><strong>Session \u00d7 attribution analytics<\/strong> \u2014 engagement (scroll\/time\/activity) joined to conversion through one session id; blog-post attribution; abandoned-cart and cart-removal analysis; rating- and need-vs-conversion correlation \u2014 pre-aggregated for millisecond reports.<\/li>\n<\/ul>\n\n<h3>Merchandising, pricing &amp; product display<\/h3>\n\n<ul>\n<li><strong>Pricing engine<\/strong> \u2014 per-role price overrides (CSV, with a PRO badge and \"log in to see prices\"), time-windowed brand\/product discounts, loyalty-class percentages and a built-in <strong>points &amp; rewards<\/strong> balance, all stacked so each customer always sees the strongest applicable price, precomputed for near-zero front-end cost.<\/li>\n<li><strong>Offers<\/strong> \u2014 brand free-gift thresholds, free-shipping rules with per-product exclusions, product\/category\/brand\/need targeting with proper exclusion vetoes, and a configurable <strong>exit-intent<\/strong> modal.<\/li>\n<li><strong>Product swatches<\/strong> \u2014 image \/ button \/ colour swatches with per-variation descriptions, an optional multi-select batch add-to-cart, and an \"Rooster One colour context\" flag that turns any swatch attribute into a real product colour for schema and feeds.<\/li>\n<li><strong>Product display, your way<\/strong> \u2014 a drag-and-drop layout builder for the whole product info column (block + classic themes), renamable <strong>Custom Tabs<\/strong> interleaved with WooCommerce's own tabs, Product Needs as list or pills, trust badges, payment logos, and a master <strong>Button Styles<\/strong> control (colours, padding, sizing, glass) every storefront button inherits.<\/li>\n<li><strong>More on the product &amp; shop pages<\/strong> \u2014 SALE \/ NEW \/ Hot image labels, per-product add-to-cart button text with a quantity badge, a SKU + barcode strip, per-variation image galleries, a complementary-products picker, a configurable price block with EU Omnibus lowest-price message, and full control of the archive card (element order, visibility, equal-height buy button, Quick View).<\/li>\n<\/ul>\n\n<h3>Cart, checkout &amp; wishlist<\/h3>\n\n<ul>\n<li>A floating <strong>side \/ mini-cart<\/strong> with \"you might like\" recommendations and a <strong>free-shipping progress bar<\/strong>, plus a <strong>sticky add-to-cart<\/strong> bar on product pages.<\/li>\n<li><strong>Saved &amp; abandoned carts<\/strong> \u2014 shoppers save, share and resume carts (cookieless share-restore that survives CDN\/edge caching, restoring items, variations, quantities and coupons), backed by a permanent abandoned-cart log with outcomes, KPIs and Excel export.<\/li>\n<li><strong>Wishlist<\/strong> with analytics, and a <strong>\"notify me when back in stock\"<\/strong> waitlist with automatic stock-watcher emails.<\/li>\n<li><strong>Checkout tuning<\/strong> \u2014 an opt-in distraction-free checkout with built-in A\/B assignment stamped on the order, minimum-order enforcement (classic + block\/Store API), and Greek professional-invoice (\u03c4\u03b9\u03bc\u03bf\u03bb\u03cc\u03b3\u03b9\u03bf) fields with AADE lookup on both checkouts.<\/li>\n<li>Full <strong>WooCommerce block cart &amp; checkout parity<\/strong> via the WordPress Interactivity API \u2014 every surface works identically on block-based and classic shortcode cart\/checkout.<\/li>\n<\/ul>\n\n<h3>Fulfilment &amp; operations<\/h3>\n\n<ul>\n<li><strong>Marketplace order importer<\/strong> \u2014 orders from <strong>Skroutz, Shopflix, eMAG, eFood, Wolt, Etsy and Amazon<\/strong> (Selling Partner API) flow into WooCommerce as native orders \u2014 by polling or signed webhook per marketplace \u2014 so stock, attribution, customer profiles and fulfilment stay unified; per-marketplace switches, rotatable webhook tokens, configurable SKU lookup and a retrying inbound log.<\/li>\n<li><strong>Catalogue Importer<\/strong> \u2014 the mirror of the feeds: enter your eFood \/ Etsy \/ Wolt \/ Amazon keys and Rooster One recreates the products in your store, auto-building categories, attributes and food option-groups, sideloading images, and matching on SKU so a re-run updates in place \u2014 with Draft-and-new-only, Create+Update, Update-only and an <strong>Enrich<\/strong> mode that fills gaps (e.g. barcodes) without overwriting.<\/li>\n<li><strong>Streaming feed generator<\/strong> (XML \/ CSV) for 35k-product catalogues, with Google Shopping \/ Google Local \/ Skroutz \/ BestPrice \/ Shopflix \/ Meta \/ Amazon templates plus eFood \/ Wolt \/ Etsy exports, and a reusable product\/variation picker.<\/li>\n<li><strong>Courier fulfilment drivers<\/strong> for <strong>ACS, BoxNow, Courier Center, ELTA, Geniki, Speedex<\/strong> and a <strong>Custom<\/strong> driver \u2014 vouchers, labels, COD and tracking from the order, bulk printing and per-courier daily closings \u2014 plus <strong>COD and payment-method gating<\/strong> by destination country or chosen courier, a <strong>Local Pickup hybrid<\/strong> (legacy + Blocks) with cash-on-pickup, and delivery economics that compute a real break-even free-shipping threshold from your carrier costs (with a retrospective shipping-cost scanner and a per-carrier \u00d7 zone P&amp;L report).<\/li>\n<li><strong>Operational intelligence<\/strong> \u2014 Physical-Demand Stock Recovery (auto-restock products the stores still sell), Missing Hot Sellers (in-store best-sellers not yet live online), a self-tuning sales \/ out-of-stock predictor, and a multi-branch physical-store stock \/ supplier \/ barcode-scanning \/ preorder system \u2014 all reading from one materialised data layer, with optional ERP integration.<\/li>\n<\/ul>\n\n<h3>Built for the Greek &amp; Cypriot market<\/h3>\n\n<p>First-class support for the couriers, marketplaces and payment habits Greek shoppers actually use \u2014 not generic US\/UK defaults.<\/p>\n\n<ul>\n<li><strong>Greek courier fulfilment drivers.<\/strong> Issue vouchers, print labels, set COD and track shipments straight from the order for <strong>ACS<\/strong>, <strong>BoxNow<\/strong>, <strong>Courier Center<\/strong>, <strong>ELTA Courier<\/strong>, <strong>Geniki Taxydromiki<\/strong> and <strong>Speedex<\/strong> \u2014 plus a <strong>Custom<\/strong> driver for any other carrier. Bulk voucher printing, per-courier daily closings (Geniki close API, Courier Center manifest, or a local manifest) and per-courier documents are built in.<\/li>\n<li><strong>Greek marketplace order import.<\/strong> Orders from <strong>Skroutz<\/strong>, <strong>Shopflix<\/strong>, <strong>eMAG<\/strong>, <strong>eFood<\/strong>, <strong>Wolt<\/strong>, <strong>Etsy<\/strong> and <strong>Amazon<\/strong> arrive in WooCommerce as native orders, so stock, attribution, customer profiles and fulfilment stay unified \u2014 with per-vendor rotatable webhook tokens and configurable SKU lookup.<\/li>\n<li><strong>Greek marketplace product feeds.<\/strong> Ready-made, streaming XML \/ CSV feeds for <strong>Skroutz<\/strong>, <strong>BestPrice<\/strong>, <strong>Shopflix<\/strong> and <strong>eMAG<\/strong>, alongside <strong>Google Shopping<\/strong>, <strong>Google Local<\/strong>, <strong>Meta (Facebook) catalog<\/strong>, <strong>Amazon<\/strong>  &hellip;<\/li>\n<\/ul>\n\n<!--section=installation-->\n<p>Extract the contents of this plugin zip file into your wp-content\/plugins\/ directory locally.\nUpload the extracted folder to your website.\nNavigate to wp-admin\/plugins.php on your dashboard.\nFind 'Rooster One' and activate the plugin.\nAlternatively, install directly through WordPress:<\/p>\n\n<p>Go to the 'Plugins' menu in WordPress.\nClick 'Add New' and search for 'Rooster One.'\nInstall and activate directly from your dashboard.<\/p>\n\n<!--section=changelog-->\n<h4>9.4 - 2026-07-23<\/h4>\n\n<p><strong>Correctness hardening for the faster price lookup introduced in 9.3.<\/strong><\/p>\n\n<ul>\n<li><strong>Fixed: the faster price lookup could show the wrong price on a multi-currency store.<\/strong> Currency plugins that convert prices after WooCommerce has gathered them \u2014 including WooCommerce Multilingual \u2014 were not detected, so a shop could display an unconverted price. The check now recognises them and falls back to the slower, always-correct calculation whenever any pricing extension is involved.<\/li>\n<li><strong>Fixed: the same lookup could show a stale or truncated price.<\/strong> WooCommerce keeps a summary of each variable product's price range, and that summary can fall behind if prices are imported without it being refreshed, or be misread when a price is stored with a comma as the decimal separator. The price shown is now cross-checked against the product's own variations, and anything that disagrees falls back to the full calculation.<\/li>\n<li><p><strong>Fixed: prices stored with comma decimals are now read correctly.<\/strong> On European stores a price saved as \"24,99\" could be read as 24.00 by parts of the system that read the database directly, understating the price. Values are now interpreted using the store's own number format.<\/p><\/li>\n<li><p><strong>Fixed: deleting a colour or size no longer leaves stale swatches behind.<\/strong> Removing an attribute term did not refresh the products that used it, so their swatches could keep showing the removed option until each product was next saved. Deletions now refresh the affected products, as edits already did.<\/p><\/li>\n<li><strong>Faster attribute edits during imports.<\/strong> Editing attribute terms \u2014 which product imports do constantly \u2014 used to run one database query per affected variation. The affected products are now found in a single query and refreshed once per import run rather than once per edit.<\/li>\n<\/ul>\n\n<h4>9.3 - 2026-07-22<\/h4>\n\n<p><strong>Faster variable-product pricing, and correct prices for professional customers after a price import.<\/strong><\/p>\n\n<ul>\n<li><strong>Fixed: professional customers could see outdated prices for up to 30 days after a role-price import.<\/strong> WooCommerce caches the price range of a variable product, and the cache key recorded who was viewing but not which version of the role-price data was in force. Uploading a new role-price CSV therefore left professionals on the previous cached prices until each product happened to be re-saved. The role-price data version is now part of the key, so an import takes effect immediately. Public prices are unaffected and their caches are left intact.<\/li>\n<li><strong>Faster storefront pages for logged-in customers.<\/strong> The same cache key was being varied by every role a customer holds, including roles that have no effect on price at all \u2014 so ordinary customers, loyalty members and newsletter subscribers each caused the shop to recalculate a variable product's price range from scratch, arriving at exactly the same answer as for a logged-out visitor. The key now varies only by the roles that actually change the price, so those customers share the public result.<\/li>\n<li><strong>Faster recommendation and side-cart cards.<\/strong> Building a card for a variable product meant loading every one of its variations to work out the price range \u2014 on a product with 150 variations that is substantial work, repeated per card. Where it is safe to do so, the range now comes from the index WooCommerce already maintains for exactly this purpose. Products with role-based pricing, and stores that display tax-inclusive prices, keep the previous behaviour.<\/li>\n<li><strong>Fixed: prices shown in product labels and structured data ignored tax display settings.<\/strong> Discount labels and the price range published in structured data were built from raw prices rather than the prices shoppers actually see, which on a tax-inclusive store meant both were understated. They now match the displayed price.<\/li>\n<li><strong>Reduced repeated settings lookups on price-heavy pages.<\/strong> The plugin's settings tree was being rebuilt from scratch on every internal lookup, which on a large variable product could happen several hundred times in a single page render. It is now built once per request.<\/li>\n<\/ul>\n\n<h4>9.2 - 2026-07-21<\/h4>\n\n<p><strong>Analytics and nightly jobs now repair their own database routines.<\/strong><\/p>\n\n<ul>\n<li><strong>Fixed: nightly jobs could fail forever after a site restore or migration.<\/strong> Database backups exclude stored routines unless explicitly asked for, so restoring a site could silently drop the procedures that power surveys, web-push customer intelligence, product needs and session analytics \u2014 while the plugin still believed they were installed. The affected jobs then failed every night with \"PROCEDURE \u2026 does not exist\", and reinstalling or reactivating the plugin did not help, because the check was based on a stored version number rather than on whether the routines actually existed.<\/li>\n<li><strong>Now self-healing.<\/strong> Each job detects a missing routine at the moment it needs it, reinstalls it and retries once. This costs nothing on normal page loads \u2014 there is no extra check on storefront requests \u2014 and it repairs itself inside the nightly job or an admin action instead of needing manual intervention.<\/li>\n<li>Covers the survey ingest\/intelligence procedures, the web-push customer-intelligence recompute and segment assignment, product-needs population, and the session-analytics aggregation, ranking, summary and cleanup routines.<\/li>\n<\/ul>\n\n<h4>9.1 - 2026-07-20<\/h4>\n\n<p><strong>Stability release \u2014 three fixes worth updating for, one of them urgent.<\/strong><\/p>\n\n<ul>\n<li><strong>Fixed: a fatal error that could break logging in.<\/strong> On sites using the identity\/attribution layer, the <code>wp_login<\/code> handler called an internal helper it wasn't allowed to reach, which raised a PHP fatal during sign-in \u2014 affecting the standard login form, \"My account\", and passwordless\/magic-link sign-in. If you were seeing 500s on login, this is the fix.<\/li>\n<li><strong>Fixed: AI credit balance over-reported when you held a top-up.<\/strong> The remaining balance added your top-up on top of the monthly cap, but the cap already includes it \u2014 so the figure could read as much as double. This under-fired the low-balance alert and let the assistant hit its limit while the meter still showed credit. The credit meter now reads \"incl. $X top-up\" rather than \"+ $X\" to match how the cap is actually composed.<\/li>\n<li><strong>Removed a latent fatal on the paid-order path.<\/strong> The Meta CAPI purchase-event builder contained an unreachable branch that would have raised the same class of fatal as the login bug if ever taken. Removed rather than left as a landmine.<\/li>\n<\/ul>\n\n<h4>9.0 - 2026-07-20<\/h4>\n\n<p><strong>The plugin is now Rooster One.<\/strong><\/p>\n\n<ul>\n<li><strong>New name.<\/strong> \"AI eShop Optimizer\" is now <strong>Rooster One<\/strong> (the front-end companion is \"Rooster One \u2014 Runtime\"). Only the display name changes: your settings, data, shortcodes and block names are all untouched, and updating is a normal plugin update with nothing to reconfigure.<\/li>\n<li><strong>One checkout newsletter opt-in instead of two.<\/strong> A single box now registers new subscribers, with per-list control for shop managers, and customers manage newsletter and offers independently from their account.<\/li>\n<li><strong>Tidier checkout birthday field<\/strong> \u2014 day, month and year sit on one row with a full-width explanatory note and a configurable highlight colour.<\/li>\n<li><strong>Accessibility fixes<\/strong> \u2014 corrected ARIA usage on rating stars and gave promo and product-card links proper accessible names.<\/li>\n<li><strong>Faster perceived loading on category, page and blog pages<\/strong> \u2014 the above-the-fold hero image is now prioritised, improving Largest Contentful Paint. Below-the-fold heroes stay lazy.<\/li>\n<\/ul>\n\n<h4>8.7 - 2026-07-13<\/h4>\n\n<p><strong>Block-library discoverability, plus a clearer block name.<\/strong><\/p>\n\n<ul>\n<li><strong>More native blocks now surface in the block editor and on the plugin page.<\/strong> Recommendations, Product Slider and Product Variations Gallery gained a block-editor registration (they were front-end-render-only before), so they now appear in the inserter with a labelled placeholder and are listed among the blocks this plugin provides. Their front-end output is unchanged.<\/li>\n<li><strong>The full block library is documented<\/strong> in the plugin description \u2014 brand, product, local-business (Google Reviews, Store Locator \/ Map, Opening Hours, Business Info\u2026), content and archive blocks, grouped by purpose.<\/li>\n<li><strong>\"Post Related Categories\" is now \"Post Related Product Categories\"<\/strong> to make clear it lists related WooCommerce product categories, not blog categories.<\/li>\n<\/ul>\n\n<h4>8.6 - 2026-07-13<\/h4>\n\n<p><strong>Your admin chat now fixes SEO for you \u2014 plus Google Search Console, backlink &amp; disavow tools, a sharper and more relevant storefront assistant, lower AI\/embedding costs, and a faster engine that shrugs off aggressive crawlers.<\/strong><\/p>\n\n<ul>\n<li><strong>Sales predictor rebuilt to run in seconds, not minutes.<\/strong> The backtest accuracy step and the per-batch variation build joined the full order-line history on a computed key (<code>COALESCE(variation_id, product_id)<\/code>) that no index could serve, forcing MariaDB into full\u00d7full block-nested-loop scans of ~2\u20135 billion row-pairs per run (300\u2013500s each). Order-line analytics now carry an indexed <code>effective_pid<\/code> column, the backtest is pre-aggregated once instead of a correlated per-row subquery, and every freshly-rebuilt staging table is <code>ANALYZE<\/code>d before it is joined \u2014 so the optimiser always picks an indexed nested-loop. Output is byte-for-byte identical (verified across every history row on live data); the nightly job just stops churning the database into swap.<\/li>\n<li><strong>Same fix applied across the physical-recovery and monolithic predictor paths.<\/strong> The five stock-recovery-outcome joins and the legacy monolithic predictor now use the indexed <code>effective_pid<\/code> too.<\/li>\n<li><strong>Customer cumulative order-stats no longer stall.<\/strong> The per-customer lifetime spend\/items rollup was a <code>customeremail<\/code> self-join that flipped to a quadratic multi-minute scan whenever the underlying order table had just been rebuilt (stale statistics). It is now a single pre-aggregate pass \u2014 structurally impossible to flip \u2014 with fresh statistics forced before it runs.<\/li>\n<li><p><strong>Product Data Prep (vitals) rebuilt for speed and stability.<\/strong> The nightly Data Prep run that computes every product's vitals \u2014 the metrics behind recommendations, badges, swatches, archives and analytics \u2014 could flip into multi-hundred-second full-table scans right after a staging table was rebuilt, because stale table statistics made MariaDB mis-plan the joins (the classic \"n_rows reads as ~1\" trap). Every vitals stage now refreshes its statistics and pins the correct index with typed join keys before it joins, so it stays on a fast indexed path; a built-in circuit breaker caps any single query's temp-table size and run time, and a plan-flip detector flags a regressing stage instead of letting it churn the database into swap. Identical output, a fraction of the time \u2014 and no more midnight swap spikes on large catalogues.<\/p><\/li>\n<li><p><strong>Sitemap &amp; robots.txt scheme fix.<\/strong> The XML sitemap and managed robots.txt are built offline (cron \/ WP-CLI), where WordPress cannot detect that the live request is HTTPS. On a site served over https but whose stored WordPress Address is http:\/\/ (the classic Cloudflare \"Flexible\" SSL \/ http-origin proxy setup), every sitemap <code>&lt;loc&gt;<\/code>, image URL and the robots.txt <code>Sitemap:<\/code> line could be written as http:\/\/ \u2014 so search engines were handed http canonicals for an https site. Every same-site URL emitted by the sitemap and robots.txt is now normalised to https (overridable via the new <code>Rooster One_seo_sitemap_scheme<\/code> filter for a genuinely http-only origin).<\/p><\/li>\n<li><p><strong>SEO Auto-Fix Assistant, in your admin chat.<\/strong> Ask the Rooster One Insights chat to \"fix my top pages\" and it now works in two tiers, free before paid. <strong>Free (no AI credits):<\/strong> it sets the canonical URL and fills the focus keyphrase from the page's own top-ranking Google keyword \u2014 structural fixes that need no copywriting, applied instantly and re-scored, with one-click undo; it can also clear an accidental noindex on request. <strong>AI credits:<\/strong> the content-writing fixes \u2014 a SERP-aware SEO title + meta description, descriptive alt text for images missing it, and richer body content (drafted for review; approving saves a WordPress revision so you can roll back) \u2014 are written by the AI, drafted for your review by default. The assistant always tries the free fixes first and tells you the credit cost before writing across more than a few pages. A nightly free Autopilot can keep the structural fixes flowing (off by default, opt-in).<\/p><\/li>\n<li><p><strong>Google Search Console \u2014 your true traffic (new).<\/strong> Connect Search Console (SEO \u2192 Search Queries) and see the real queries and pages that bring you Google organic clicks, impressions, CTR and average position \u2014 straight from Google \u2014 beside the DataForSEO ranked-keyword view. High impressions with low CTR flag a title\/description the AI can rewrite.<\/p><\/li>\n<li><p><strong>Backlinks &amp; toxic-link disavow (new).<\/strong> SEO \u2192 Backlinks pulls your referring domains and their spam score from DataForSEO, flags the toxic ones, and generates a ready-to-upload Google disavow file \u2014 kept in sync as new bad links appear. (Google provides no API to submit a disavow, so you upload the file once at the Search Console Disavow Tool; we link you straight there.)<\/p><\/li>\n<li><p><strong>Content ideas from your customers (new).<\/strong> The questions shoppers ask your storefront AI that it answers poorly \u2014 no matching products, or a low rating \u2014 are distilled into a demand-ranked list of content gaps, so you know exactly what to write next. Your customer assistant only surfaces the signal; it never changes your site.<\/p><\/li>\n<li><p><strong>Storefront AI assistant \u2014 more relevant answers, fewer wrong turns.<\/strong> The product cards shown alongside a chat answer are now always tied to what the shopper actually asked, with a relevant-product fallback so the assistant never pads a reply with off-topic links. It understands your own Table Rate Shipping rules when answering delivery questions, and a configurable recency boost lets newer arrivals win when a shopper asks \"what's new\" or browses a fast-moving category (set your \"new product\" window under Merchandising \u2192 Badges). Answers also run to full length by default for more complete replies.<\/p><\/li>\n<li><p><strong>Lower AI costs \u2014 the semantic index only embeds what changed.<\/strong> Building your recommendation &amp; search index now embeds only the products, posts and pages that are new or have changed since the last run, instead of re-embedding the whole catalogue every time \u2014 a large saving on embedding spend for big or frequently-updated stores. (Switching the embedding model still rebuilds everything, as it must.) Product text is read from the pre-computed product vitals first and only reaches into the full content for the description, so each run is faster too \u2014 and the automatic nightly re-embed schedule now runs reliably.<\/p><\/li>\n<li><p><strong>Faster and more resilient under heavy crawling.<\/strong> A few storefront helpers used to make a small uncached background request on every page view \u2014 the swatch add-to-cart nonce refresh, recommendation-impression logging, and the free-shipping progress bar's cart check. Under an aggressive SEO crawler those could multiply into a needless server-load spike. They now fire only on genuine shopper interaction (or only when there is actually a cart to sync), and automated JS-rendering crawlers are skipped outright \u2014 no change to what shoppers see or do, just no wasted load from bots.<\/p><\/li>\n<li><p><strong>Cookie scanner: off by default, on demand instead.<\/strong> The consent banner's live per-visitor cookie-discovery sweep is now off by default. Your cookie &amp; third-party-service inventory is built from the built-in database plus the on-demand \"Re-scan storefront now\" button (Consent \u2192 Cookie inventory), which loads your key pages in the background whenever you add a new service \u2014 so nothing scans on every visitor. Continuous live discovery can be switched back on any time.<\/p><\/li>\n<\/ul>\n\n<h4>8.5 - 2026-07-05<\/h4>\n\n<p><strong>SEO grows beyond the shop: site profiles for content &amp; catalogue sites, Google-data-driven AI titles, conversion goals, campaign &amp; exit-page analytics, and complete attribution in your order and form emails.<\/strong><\/p>\n\n<ul>\n<li><strong>Site profiles (new).<\/strong> Tell Rooster One what your site IS \u2014 shop, catalogue (products presented as content, without checkout), or content\/publisher \u2014 or let it auto-detect. Every SEO metric adapts: opportunity scoring, pillar pages and demand now work properly on content and catalogue sites instead of assuming a shop.<\/li>\n<li><strong>Content vitals (new).<\/strong> The per-product health metrics gain a content twin: every post, page and custom type gets daily reach, engagement, freshness and demand scores \u2014 including reader time-of-day and day-of-month consumption patterns, the same lens the shop side has for buyers.<\/li>\n<li><strong>DataForSEO integration (new).<\/strong> Connect a DataForSEO account per site (SEO \u2192 General) and Rooster One pulls a weekly snapshot of every Google keyword you rank for, computes striking-distance opportunities (positions 8\u201320 by search volume) and shows them on the Opportunities card \u2014 under a monthly spend cap you control.<\/li>\n<li><strong>AI titles &amp; descriptions with live SERP context (new).<\/strong> A nightly queue drafts new SEO titles and descriptions for your highest-ROI pages using the actual Google results for the target keyword \u2014 written to win the click against the competitors really shown there. Drafts wait for approval on SEO \u2192 Health, or switch on Autopilot.<\/li>\n<li><strong>Conversion goals (new).<\/strong> Choose which Gravity Forms (plus the Newsletter plugin) count as conversions per site. Rooster One's AI reads each form and derives its goal context, which feeds the SEO descriptions of the pages hosting that form \u2014 and goal conversions flow into content demand and the new campaign analytics.<\/li>\n<li><strong>Campaign attribution in form notification emails (new).<\/strong> Gravity Forms staff notifications can include the full campaign story \u2014 channel, all five utm parameters, landing page and original referrer \u2014 with no hidden form fields or per-site code snippets. Visitor autoresponders are never touched, utm form fields auto-prefill, and the page URL sent to HubSpot is cleaned of tracking parameters.<\/li>\n<li><strong>Order attribution emails, completed.<\/strong> The \"Order origin &amp; attribution\" block in staff new-order emails now always lists all five utm parameters \u2014 and it now also appears on orders paid by cheque, bank transfer or COD, which previously missed it on speed-optimised checkouts.<\/li>\n<li><strong>Landing pages &amp; campaigns, canonicalised (new).<\/strong> Session analytics now parse every visitor's landing page into a clean path plus utm parameters (per-click junk such as fbclid is dropped), with a durable per-day campaign \u00d7 landing-page rollup: sessions, cart adds and goal conversions per campaign.<\/li>\n<li><strong>Exit pages (new).<\/strong> See where sessions end, split by whether the visitor converted first \u2014 separating natural end-of-journey pages from the pages that bleed visitors.<\/li>\n<li><strong>Ask the insights chat.<\/strong> New chat skills: ranked keywords, the striking-distance list, the content-vitals leaderboard, landing-page campaigns and exit pages.<\/li>\n<li><strong>Redirect import safeguards.<\/strong> Imports now verify that every redirect target exists on THIS site and refuse any rule that would create a redirect loop at any depth.<\/li>\n<li><strong>Cookie consent: position the floating button per device.<\/strong> The floating \"Cookie settings\" button can now be placed Left, Centre or Right with exact pixel offsets from the edge and the bottom \u2014 separately for desktop and mobile \u2014 so it aligns cleanly with other floating widgets (chat bubbles, scroll-to-top). When the Side Cart bottom navigator is active, its coordinated styling automatically takes precedence on mobile.<\/li>\n<li><strong>Search Console fixes.<\/strong> Paginated pages emit correct self-canonicals and sensible robots defaults, addressing \"Alternative page with proper canonical tag\" and \"Duplicate without user-selected canonical\" warnings on content sites.<\/li>\n<\/ul>\n\n<h4>8.4 - 2026-07-04<\/h4>\n\n<p><strong>A media-library cleanup tool, a per-user landing page that can resume where you left off, an admin usage dashboard, a managed robots.txt, and more resilient background jobs.<\/strong><\/p>\n\n<ul>\n<li><strong>Media Cleanup (new).<\/strong> A Tools &amp; Settings tool that reclaims disk space by finding and removing image files your site no longer needs \u2014 thumbnail sizes your current theme doesn't register, true orphans with no media-library record, and images left behind by products you deleted. It scans in resumable batches (built for libraries with hundreds of thousands of files), moves everything it flags to a recoverable quarantine first, and only deletes for good when you choose to empty the quarantine \u2014 with removing the matching media-library records kept as a separate, off-by-default opt-in. A file is only ever touched when nothing on the site references it anywhere \u2014 product galleries, variation swatches, brand logos, page\/post content, widgets, menus and theme options are all checked, WebP and AVIF included \u2014 so an image still in use is never removed.<\/li>\n<li><strong>Choose where you land \u2014 or pick up where you left off.<\/strong> A new My Settings card lets each user set which e-shop Manager card the page opens on, instead of always landing on the same default. Pick any card, or choose \"continue where I left off\" and Rooster One returns you to the last card you were working in.<\/li>\n<li><strong>Admin usage dashboard (new, administrators only).<\/strong> A Tools &amp; Settings panel, visible only to site administrators, that reports how the Rooster One admin is actually used \u2014 page views, active users, sessions and most-opened cards \u2014 in total and per user, over a time window you select. Lightweight, self-pruning (kept for 180 days), and never shown to non-admins.<\/li>\n<li><strong>Managed robots.txt (new).<\/strong> The built-in SEO engine can now manage your robots.txt alongside the XML sitemap: it serves a correct, sitemap-referencing robots.txt (honouring \"Discourage search engines\"), lets you add your own custom rules from SEO \u2192 Redirects, and writes a static file at the web root so your server can serve it directly. It only ever acts when Rooster One SEO is switched on and no other SEO plugin (Yoast, Rank Math, AIOSEO) is handling robots \u2014 and it never overwrites a robots.txt it didn't create.<\/li>\n<li><strong>More reliable background jobs.<\/strong> The protection that stops a mis-behaving recurring task from piling up thousands of duplicate scheduled actions now covers the full set of AutomateWoo jobs and WPForms' spam-purge and form-locator tasks \u2014 not just log cleanup \u2014 so low-traffic sites keep a clean, fast Action Scheduler queue.<\/li>\n<li><strong>Fixes &amp; polish.<\/strong> The image picker on the SEO \u2192 Schema and Social cards now opens reliably (it previously failed to attach on pages where the media library loaded late). Greek translations refreshed, including the Amazon Selling-Partner catalogue and order-import strings.<\/li>\n<\/ul>\n\n<h4>8.3 - 2026-06-26<\/h4>\n\n<p><strong>One-click product import from your marketplaces, an AI-chat analytics dashboard, and a single unified admin navigation.<\/strong><\/p>\n\n<ul>\n<li><strong>Catalogue Importer (new) \u2014 import your products from eFood, Etsy, Wolt and Amazon.<\/strong> The mirror image of the marketplace catalogue exports: enter your marketplace API keys, choose a source, and Rooster One recreates the products in your store with one click \u2014 auto-building the category tree, product attributes and food option-groups each product references, sideloading its images, and matching on SKU so a re-run updates products in place instead of duplicating them. Imports as Draft + new-only by default (each a per-run toggle, alongside Create + Update and Update-only). A new <strong>Enrich<\/strong> mode fills gaps on existing products without overwriting anything you already have \u2014 so you can, for example, create products from Wolt (for their ingredient \/ topping option-groups) and then enrich from eFood or Amazon to fill in barcodes. Amazon reads your own Seller listings through the Selling Partner API (no extra AWS keys needed); eFood, Etsy and Wolt use their catalogue APIs.<\/li>\n<li><strong>AI Chat Analytics (new, Pro).<\/strong> A Customer-Profiling dashboard that turns your AI chat history into insight: a searchable conversation log plus aggregate metrics \u2014 which page each conversation was opened from (read from the existing Session Tracker, not a second tracker), question volume and topics, the satisfaction ratings customers leave, and chat-assisted conversions (orders that followed a chat, precomputed and cached the same way Competition conversions are \u2014 never calculated live on page load). Conversation-history retention is configurable, 90 days by default.<\/li>\n<li><strong>Unified admin navigation.<\/strong> The three Rooster One admin pages \u2014 Analytics &amp; Shop Recommendations, e-shop Manager and AI Chat \u2014 now share a single menu bar that highlights the section you're in, replacing the old top tab-strip and the separate per-page tables of contents. New \"Set Up\" and \"AI Chat\" menu groups deep-link straight to each page's individual cards, so everything is one click away from anywhere.<\/li>\n<li><strong>Quick Navigator finds features by what they do.<\/strong> The Ctrl\/Cmd-K Quick Navigator now matches synonyms and capability terms as well as names \u2014 so \"amazon\", \"barcodes\" or \"import\" jump to the Catalogue Importer and \"happiness\" or \"sentiment\" to AI Chat Analytics \u2014 and cross-page results now show the correct section badge.<\/li>\n<li><strong>Fixes &amp; polish.<\/strong> The SEO \u2192 Redirects \"Rebuild SEO index\" card now remembers the object types you last rebuilt (Posts \/ Pages \/ Products \/ Attributes as well as the taxonomies) and pre-ticks them on your next visit, instead of always resetting to the terms-only default.<\/li>\n<\/ul>\n\n<h4>Earlier versions<\/h4>\n\n<p>8.2 and earlier are listed in changelog.txt, which ships with the plugin.<\/p>","raw_excerpt":"One plugin does the work of a whole AI stack: chat, recommendations, SEO, measurement, merchandising &amp; fulfilment. Anthropic Claude + Voyage AI.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/192766","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=192766"}],"author":[{"embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/oxfordmetadata"}],"wp:attachment":[{"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=192766"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=192766"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=192766"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=192766"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=192766"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=192766"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}