{"id":337769,"date":"2026-07-14T06:42:48","date_gmt":"2026-07-14T06:42:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/tukify-ai-shopping-assistant-for-woocommerce\/"},"modified":"2026-07-14T11:03:26","modified_gmt":"2026-07-14T11:03:26","slug":"tukify","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/tukify\/","author":22029485,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.4","stable_tag":"1.4.4","tested":"7.0.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Tukify \u2014 AI Shopping Assistant for WooCommerce","header_author":"Sh Rohan","header_description":"AI shopping assistant for WooCommerce: semantic product search and grounded conversational recommendations, all data on your own server.","assets_banners_color":"101932","last_updated":"2026-07-14 11:03:26","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/sh03rohan\/tukify","header_author_uri":"https:\/\/github.com\/sh03rohan","rating":0,"author_block_rating":0,"active_installs":0,"downloads":33,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.3":{"tag":"1.4.3","author":"shrohan03","date":"2026-07-14 06:42:17"},"1.4.4":{"tag":"1.4.4","author":"shrohan03","date":"2026-07-14 11:03:26"}},"upgrade_notice":{"1.1.0":"<p>Adds conversational filters, comparison, policy\/FAQ answers, upsell and exit-intent, plus visual search and a cart fix. Reindex is not required.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3607007,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3607007,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3607007,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3607007,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.4.3","1.4.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3607007,"resolution":"1","location":"assets","locale":"","width":788,"height":1116},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3607007,"resolution":"2","location":"assets","locale":"","width":772,"height":1106},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3607007,"resolution":"3","location":"assets","locale":"","width":1600,"height":731},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3607007,"resolution":"4","location":"assets","locale":"","width":788,"height":1112},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3607007,"resolution":"5","location":"assets","locale":"","width":778,"height":1110},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3607007,"resolution":"6","location":"assets","locale":"","width":1600,"height":824},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3607007,"resolution":"7","location":"assets","locale":"","width":1600,"height":1098}},"screenshots":{"1":"Chat assistant helping a shopper find a gift, with quantity control and add to cart.","2":"Complete checkout inside the chat \u2014 cart, totals, and shipping details.","3":"Complementary product suggestions based on what's in the cart.","4":"Order status lookup \u2014 verified with order number and billing email.","5":"Order status result showing status, date, total, and item count.","6":"Admin dashboard \u2014 AI provider, models, and settings.","7":"Analytics \u2014 top searches, product index, and unmet demand insights."}},"plugin_section":[],"plugin_tags":[2353,2364,3669,140844,286],"plugin_category":[45,53],"plugin_contributors":[271453],"plugin_business_model":[],"class_list":["post-337769","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-chatbot","plugin_tags-recommendations","plugin_tags-semantic-search","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-ratings-and-reviews","plugin_contributors-shrohan03","plugin_committers-shrohan03"],"banners":{"banner":"https:\/\/ps.w.org\/tukify\/assets\/banner-772x250.png?rev=3607007","banner_2x":"https:\/\/ps.w.org\/tukify\/assets\/banner-1544x500.png?rev=3607007","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/tukify\/assets\/icon-128x128.png?rev=3607007","icon_2x":"https:\/\/ps.w.org\/tukify\/assets\/icon-256x256.png?rev=3607007","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/tukify\/assets\/screenshot-1.png?rev=3607007","caption":"Chat assistant helping a shopper find a gift, with quantity control and add to cart."},{"src":"https:\/\/ps.w.org\/tukify\/assets\/screenshot-2.png?rev=3607007","caption":"Complete checkout inside the chat \u2014 cart, totals, and shipping details."},{"src":"https:\/\/ps.w.org\/tukify\/assets\/screenshot-3.png?rev=3607007","caption":"Complementary product suggestions based on what's in the cart."},{"src":"https:\/\/ps.w.org\/tukify\/assets\/screenshot-4.png?rev=3607007","caption":"Order status lookup \u2014 verified with order number and billing email."},{"src":"https:\/\/ps.w.org\/tukify\/assets\/screenshot-5.png?rev=3607007","caption":"Order status result showing status, date, total, and item count."},{"src":"https:\/\/ps.w.org\/tukify\/assets\/screenshot-6.png?rev=3607007","caption":"Admin dashboard \u2014 AI provider, models, and settings."},{"src":"https:\/\/ps.w.org\/tukify\/assets\/screenshot-7.png?rev=3607007","caption":"Analytics \u2014 top searches, product index, and unmet demand insights."}],"raw_content":"<!--section=description-->\n<p>Tukify adds an AI shopping assistant to your WooCommerce store. A shopper types in plain language (\"a gift for my dad, he likes wine and hiking\") and Tukify understands the intent, finds matching products with semantic search, and replies conversationally with product cards \u2014 image, price, stock, and add-to-cart \u2014 right inside a chat interface, without the shopper leaving the page.<\/p>\n\n<p>Tukify is <strong>bring-your-own-key<\/strong>: you connect your own AI provider \u2014 Google Gemini, OpenAI (ChatGPT), Anthropic (Claude), or xAI (Grok) \u2014 and Tukify never pays for inference. All AI requests are made server-side in PHP \u2014 your API keys are never exposed to the browser. Your product embeddings are stored in your own site database, so your catalog data stays on your server.<\/p>\n\n<h4>Key features<\/h4>\n\n<ul>\n<li><strong>Semantic product search<\/strong> \u2014 matches by meaning, not just keywords (\"warm clothes for winter\" surfaces jackets and sweaters).<\/li>\n<li><strong>Conversational RAG chat<\/strong> \u2014 grounded answers that only ever recommend real, in-stock products; it never invents items.<\/li>\n<li><strong>Clarifying questions<\/strong> \u2014 asks one short follow-up (with tappable quick replies) when a request is too vague, instead of dumping mediocre results.<\/li>\n<li><strong>Natural-language filters<\/strong> \u2014 understands price, colour, size, brand, stock, category and sorting (\"cheapest wireless headphones under $200\") and applies them as real WooCommerce queries.<\/li>\n<li><strong>Comparison mode<\/strong> \u2014 side-by-side comparison of 2\u20133 products with a one-line trade-off summary.<\/li>\n<li><strong>Policy \/ FAQ answers<\/strong> \u2014 answers shipping, returns and warranty questions from your own pages and a custom Q&amp;A knowledge base.<\/li>\n<li><strong>Cart-aware upsell<\/strong> \u2014 suggests genuinely complementary items based on the cart.<\/li>\n<li><strong>Exit-intent re-engagement<\/strong> \u2014 a helpful, dismissible prompt when a shopper is about to leave (once per visit, with a cooldown).<\/li>\n<li><strong>Visual search<\/strong> \u2014 a shopper can upload an image and Tukify finds similar products in your catalog.<\/li>\n<li><strong>Background indexing<\/strong> \u2014 embeds your catalog in the background via Action Scheduler; only re-embeds changed products.<\/li>\n<li><strong>Presentation surfaces<\/strong> \u2014 a global floating chat widget plus three Elementor widgets (Chat, Search, Recommendations), each rendered in a Shadow DOM so your theme's CSS can't break them.<\/li>\n<li><strong>Analytics dashboard<\/strong> \u2014 top queries, zero-result queries, click-through and chat-to-sale.<\/li>\n<\/ul>\n\n<h4>Privacy and data<\/h4>\n\n<p>All AI calls are made server-side; your API key is never sent to the browser. Product embeddings are stored in your own site's database. Tukify only contacts an external service (Google Gemini) when you have configured an API key and a shopper or the store uses a feature that needs it. See the <strong>External services<\/strong> section below for exactly what is sent and when.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WooCommerce (active).<\/li>\n<li>An API key for at least one supported AI provider: Google Gemini, OpenAI, Anthropic (Claude), or xAI (Grok). Gemini offers a free tier that is enough for development and small stores.<\/li>\n<li>If you pick Claude or Grok for chat, you also need a Gemini or OpenAI key for embeddings (those two providers have no embeddings endpoint).<\/li>\n<li>PHP 7.4+.<\/li>\n<li>Elementor is optional (only needed for the Elementor widgets).<\/li>\n<\/ul>\n\n<h4>Which provider does what<\/h4>\n\n<ul>\n<li><strong>Google Gemini<\/strong> \u2014 chat, embeddings, vision (image search). Default.<\/li>\n<li><strong>OpenAI (ChatGPT)<\/strong> \u2014 chat, embeddings, vision.<\/li>\n<li><strong>Anthropic (Claude)<\/strong> \u2014 chat, vision. No embeddings \u2014 use Gemini or OpenAI as the embedding provider.<\/li>\n<li><strong>xAI (Grok)<\/strong> \u2014 chat, vision. No embeddings \u2014 use Gemini or OpenAI as the embedding provider.<\/li>\n<\/ul>\n\n<p>You choose a <strong>chat provider<\/strong> and an <strong>embedding provider<\/strong> independently in Settings. Retrieval (RAG) always uses the embedding provider. If you change the embedding provider or model, Tukify prompts you to reindex, because embeddings from different models are not compatible and are never mixed in the same index.<\/p>\n\n<h3>External services<\/h3>\n\n<p>Tukify connects to the AI provider(s) you configure to power semantic search, conversational answers, natural-language understanding, and image-based (visual) search. A provider is only contacted when you have entered its API key and selected it, and only for the feature that needs it. All requests are made from your server (PHP); your API keys are never exposed to the browser, and Tukify does not send data to any other third party.<\/p>\n\n<p><strong>What data is sent, and when:<\/strong><\/p>\n\n<ul>\n<li><strong>Catalog indexing<\/strong> \u2014 when you index or re-index your products, the text of each product (title, short description, categories and key attributes) is sent to your <strong>embedding provider<\/strong> to generate numeric embeddings. This runs in the background and only for products that have changed.<\/li>\n<li><strong>Knowledge base indexing<\/strong> \u2014 if you enable the policy\/FAQ knowledge base, the content of the pages you select and any custom Q&amp;A you enter is sent to your <strong>embedding provider<\/strong>.<\/li>\n<li><strong>Search and chat<\/strong> \u2014 when a shopper searches or chats, their message, a short recent conversation history, and the retrieved product context are sent to your <strong>embedding provider<\/strong> (to embed the query) and your <strong>chat provider<\/strong> (to generate a grounded reply).<\/li>\n<li><strong>Visual search<\/strong> \u2014 if a shopper uploads an image, that image is sent to a vision-capable provider to identify the product type before matching your catalog.<\/li>\n<\/ul>\n\n<p>Provider terms and privacy policies (review the ones you use):<\/p>\n\n<ul>\n<li>Google Gemini \u2014 https:\/\/ai.google.dev\/terms \u00b7 https:\/\/policies.google.com\/privacy<\/li>\n<li>OpenAI \u2014 https:\/\/openai.com\/policies\/terms-of-use \u00b7 https:\/\/openai.com\/policies\/privacy-policy<\/li>\n<li>Anthropic (Claude) \u2014 https:\/\/www.anthropic.com\/legal\/consumer-terms \u00b7 https:\/\/www.anthropic.com\/legal\/privacy<\/li>\n<li>xAI (Grok) \u2014 https:\/\/x.ai\/legal\/terms-of-service \u00b7 https:\/\/x.ai\/legal\/privacy-policy<\/li>\n<\/ul>\n\n<p>Note: some providers may use free-tier inputs to improve their models. If you handle real customer data, use a paid plan\/key (typically excluded from training) and review that provider's terms.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/tukify<\/code> or install it from the Plugins screen.<\/li>\n<li>Activate the plugin. WooCommerce must be installed and active.<\/li>\n<li>Get a Google Gemini API key from Google AI Studio (aistudio.google.com).<\/li>\n<li>Go to <strong>Tukify \u2192 Settings<\/strong>, paste your key, and click <strong>Test connection<\/strong>.<\/li>\n<li>On the <strong>Tukify<\/strong> dashboard, click <strong>Reindex all products<\/strong> to embed your catalog (runs in the background).<\/li>\n<li>Enable the floating widget in Settings, and\/or drop the Tukify Elementor widgets onto a page.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20tukify%20need%20a%20paid%20ai%20subscription%3F\"><h3>Does Tukify need a paid AI subscription?<\/h3><\/dt>\n<dd><p>No. You bring your own Google Gemini API key. Google's free tier covers development and most small stores. Tukify never pays for inference on your behalf.<\/p><\/dd>\n<dt id=\"is%20my%20api%20key%20safe%3F\"><h3>Is my API key safe?<\/h3><\/dt>\n<dd><p>Yes. The key is stored in your site's options, shown masked in the admin, and used only server-side. It is never sent to the browser or embedded in any front-end code.<\/p><\/dd>\n<dt id=\"where%20is%20my%20catalog%20data%20stored%3F\"><h3>Where is my catalog data stored?<\/h3><\/dt>\n<dd><p>Product embeddings are stored in a custom table in your own WordPress database. Tukify only sends product text to Google to generate those embeddings (see External services).<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20elementor%3F\"><h3>Does it work without Elementor?<\/h3><\/dt>\n<dd><p>Yes. The global floating chat widget works on any theme. Elementor is only required for the three optional Elementor widgets.<\/p><\/dd>\n<dt id=\"will%20it%20invent%20products%20that%20aren%27t%20in%20my%20store%3F\"><h3>Will it invent products that aren't in my store?<\/h3><\/dt>\n<dd><p>No. Every answer is grounded in real retrieval \u2014 the assistant can only recommend products that exist in your catalog, and policy answers come only from your own content.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20delete%20the%20plugin%3F\"><h3>What happens to my data if I delete the plugin?<\/h3><\/dt>\n<dd><p>By default, deleting Tukify removes all of its data: its settings, its custom tables (product embeddings, knowledge base, analytics, back-in-stock subscribers, usage counters) and any cached data. If you'd rather keep everything for a later reinstall, enable \"Keep Tukify's data when the plugin is deleted\" under Settings \u2192 Advanced before deleting. Deactivating the plugin never removes any data.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.4<\/h4>\n\n<ul>\n<li>New Tukify logo (transparent SVG) shown in the chat launcher, avatar, and admin header \u2014 it renders cleanly inside the round chat bubble, with no square corners.<\/li>\n<li>Added an Appearance setting to customize the chat bubble background colour, with a live preview and a low-contrast hint.<\/li>\n<\/ul>\n\n<h4>1.4.3<\/h4>\n\n<ul>\n<li>Fixed prices showing as raw HTML entities (e.g. \"&#036;76.00\" instead of \"$76.00\") in the chat checkout and order-status cards. Currency output is now decoded to plain text everywhere prices appear in the chat.<\/li>\n<\/ul>\n\n<h4>1.4.2<\/h4>\n\n<ul>\n<li>Corrected plugin header metadata for the WordPress.org review: author name and distinct plugin\/author URIs.<\/li>\n<li>Removed plugin-wide suppression of other plugins' admin notices; notices are now scoped to Tukify's own screens.<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>Performance: added an (event_type, created_at) index for analytics range queries and a daily purge so the events table stays bounded.<\/li>\n<li>Performance: the semantic-search scan now reads embeddings in batches to cap peak memory on larger catalogs.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Added API usage tracking with a per-day tokens\/requests chart and estimated cost in Logs \/ Analytics.<\/li>\n<li>Added response caching (query embeddings + knowledge-base answers) with a TTL, enable\/disable, and a clear button; nothing user-personal is ever cached.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Added back-in-stock notifications: shoppers can ask to be emailed when an out-of-stock product returns, with a consent step, an admin list, an email template, and one-click unsubscribe.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added a quantity stepper on chat product cards.<\/li>\n<li>Added site-wide RAG over posts, pages, and products, with source citations under answers.<\/li>\n<li>Added secure order-status lookup, a size &amp; fit advisor, \"shop the look\" multi-item visual search, demand insights, proactive re-engagement, and an opt-in in-chat checkout.<\/li>\n<li>Redesigned the admin dashboard.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added clarifying questions, natural-language filters, comparison mode, policy\/FAQ knowledge base, cart-aware upsell, and exit-intent re-engagement.<\/li>\n<li>Added image-based (visual) search.<\/li>\n<li>Fixed cart accumulation when adding to cart from the chat widget.<\/li>\n<li>WooCommerce HPOS compatibility declared.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: semantic search, RAG chat, background indexing, cart integration, analytics dashboard, floating widget and Elementor widgets.<\/li>\n<\/ul>","raw_excerpt":"AI shopping assistant for WooCommerce: semantic product search and grounded, conversational recommendations, all on your own server.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/337769","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=337769"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/shrohan03"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=337769"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=337769"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=337769"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=337769"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=337769"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=337769"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}