{"id":323034,"date":"2026-06-18T20:40:16","date_gmt":"2026-06-18T20:40:16","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/zaffro-ai-sales-agent-for-woocommerce\/"},"modified":"2026-06-18T20:44:40","modified_gmt":"2026-06-18T20:44:40","slug":"zaffro-ai-sales-agent-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/zaffro-ai-sales-agent-for-woocommerce\/","author":15437964,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.7.25","stable_tag":"1.7.25","tested":"7.0","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Zaffro \u2013 AI Sales Agent for WooCommerce","header_author":"KOLLABOR","header_description":"AI-powered sales agent for WooCommerce. Negotiates prices, generates coupons, and closes deals with a one-click checkout.","assets_banners_color":"ffffff","last_updated":"2026-06-18 20:44:40","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/zaffro.ai","header_author_uri":"https:\/\/kollabor.hu","rating":0,"author_block_rating":0,"active_installs":0,"downloads":25,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.7.25":{"tag":"1.7.25","author":"koszecz","date":"2026-06-18 20:44:40"}},"upgrade_notice":{"1.7.25":"<p>Security &amp; compliance update: the subscription portal now requires a signed token (not a plain email), account scripts use wp_enqueue, the chat 403-on-cached-pages issue is fixed, and the Gemini\/Claude external services are documented. Recommended update.<\/p>","1.7.24":"<p>WordPress.org compliance update: all scripts now load via wp_enqueue, the &quot;Powered by&quot; branding link is opt-in, and WooCommerce dependency is declared. Safe to update.<\/p>","1.7.23":"<p>Adds a shop category\/industry selector so the AI adapts its style automatically. Also fixes a regression introduced in 1.7.20 where the AI stopped reading WooCommerce products. Safe to update; existing prompt settings are preserved.<\/p>","1.7.20":"<p>Introduces server-side layered prompt protection. The system prompt is now assembled on Zaffro&#039;s servers; the admin System Prompt field becomes a supplementary &quot;merchant notes&quot; layer rather than the full prompt. Existing settings are migrated automatically.<\/p>","1.7.14":"<p>Fixes a cosmetic bug where the &quot;update available&quot; badge reappears after a successful update. Safe to update.<\/p>","1.7.13":"<p>Fixes Hungarian language display for status indicators. Safe to update.<\/p>","1.7.11":"<p>Adds WooCommerce Subscriptions support: the assistant now negotiates recurring-priced products correctly and generates subscription-aware coupons. Safe to update; standard products are unaffected.<\/p>","1.4":"<p>Recommended update. Pre-release bugfix sprint: full i18n cleanup, currency\/date localisation, security fixes, and onboarding improvements.<\/p>","1.3":"<p>Includes analytics dashboard, conversation log with AI summaries, onboarding wizard, and GDPR tooling.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3577814,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3577814,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3577814,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3577814,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.7.25"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3577814,"resolution":"1","location":"assets","locale":"","width":1778,"height":831},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3577814,"resolution":"2","location":"assets","locale":"","width":1898,"height":874},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3577814,"resolution":"3","location":"assets","locale":"","width":415,"height":751},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3577814,"resolution":"4","location":"assets","locale":"","width":1882,"height":832},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3577814,"resolution":"5","location":"assets","locale":"","width":1729,"height":864}},"screenshots":{"1":"Chat widget on a WooCommerce product page \u2014 the assistant negotiates a discount","2":"Admin settings \u2014 system prompt editor and negotiation limits","3":"Coupon flow \u2014 the assistant generates a one-click checkout offer during chat","4":"Analytics dashboard \u2014 sessions, conversions, average discount, AI buyer rate, model usage","5":"Onboarding wizard \u2014 5-step setup with industry template selection"}},"plugin_section":[],"plugin_tags":[2353,2364,331,332,286],"plugin_category":[45],"plugin_contributors":[267789],"plugin_business_model":[],"class_list":["post-323034","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-chatbot","plugin_tags-discount","plugin_tags-sales","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-koszecz","plugin_committers-koszecz"],"banners":{"banner":"https:\/\/ps.w.org\/zaffro-ai-sales-agent-for-woocommerce\/assets\/banner-772x250.png?rev=3577814","banner_2x":"https:\/\/ps.w.org\/zaffro-ai-sales-agent-for-woocommerce\/assets\/banner-1544x500.png?rev=3577814","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/zaffro-ai-sales-agent-for-woocommerce\/assets\/icon-128x128.png?rev=3577814","icon_2x":"https:\/\/ps.w.org\/zaffro-ai-sales-agent-for-woocommerce\/assets\/icon-256x256.png?rev=3577814","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/zaffro-ai-sales-agent-for-woocommerce\/assets\/screenshot-1.png?rev=3577814","caption":"Chat widget on a WooCommerce product page \u2014 the assistant negotiates a discount"},{"src":"https:\/\/ps.w.org\/zaffro-ai-sales-agent-for-woocommerce\/assets\/screenshot-2.png?rev=3577814","caption":"Admin settings \u2014 system prompt editor and negotiation limits"},{"src":"https:\/\/ps.w.org\/zaffro-ai-sales-agent-for-woocommerce\/assets\/screenshot-3.png?rev=3577814","caption":"Coupon flow \u2014 the assistant generates a one-click checkout offer during chat"},{"src":"https:\/\/ps.w.org\/zaffro-ai-sales-agent-for-woocommerce\/assets\/screenshot-4.png?rev=3577814","caption":"Analytics dashboard \u2014 sessions, conversions, average discount, AI buyer rate, model usage"},{"src":"https:\/\/ps.w.org\/zaffro-ai-sales-agent-for-woocommerce\/assets\/screenshot-5.png?rev=3577814","caption":"Onboarding wizard \u2014 5-step setup with industry template selection"}],"raw_content":"<!--section=description-->\n<p><strong>Zaffro<\/strong> adds an AI sales assistant to your WooCommerce store. Your customers get a helpful chat experience; you get more conversions.<\/p>\n\n<p>The assistant presents products, answers questions, and \u2014 naturally \u2014 negotiates. When a deal is reached, the customer is taken to checkout in one click with the discount already applied.<\/p>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>A visitor opens the chat widget on your storefront<\/li>\n<li>The AI assistant answers questions and gently steers toward a purchase<\/li>\n<li>If the customer hesitates, the assistant can offer a personalised discount<\/li>\n<li>A checkout button appears \u2014 one click, discount pre-applied, straight to payment<\/li>\n<\/ol>\n\n<h4>Key features<\/h4>\n\n<ul>\n<li><strong>AI negotiation<\/strong> \u2014 the assistant bargains within limits you define<\/li>\n<li><strong>Coupon generation<\/strong> \u2014 creates WooCommerce coupons on the fly during chat<\/li>\n<li><strong>One-click checkout<\/strong> \u2014 sends customers to the cart\/checkout with the discount already applied<\/li>\n<li><strong>Product catalogue context<\/strong> \u2014 automatically loaded from your WooCommerce product data<\/li>\n<li><strong>AI buyer detection<\/strong> \u2014 7 heuristics to identify serious buyers and trigger the right moment<\/li>\n<li><strong>System prompt editor<\/strong> \u2014 train the assistant in plain language; 5 industry templates included<\/li>\n<li><strong>Cloud proxy<\/strong> \u2014 your API keys stay on our server; no setup required on the Free plan<\/li>\n<li><strong>BYOK support<\/strong> \u2014 bring your own Gemini or Claude API key (Pro\/Agency)<\/li>\n<li><strong>Chat history<\/strong> \u2014 stored in localStorage, visible to the shopper across the session<\/li>\n<li><strong>Order note + email summary<\/strong> \u2014 every negotiation logged to the WooCommerce order<\/li>\n<\/ul>\n\n<h4>Free plan<\/h4>\n\n<p>The Free plan runs on Zaffro's shared Gemini Flash key. No registration required \u2014 the plugin works immediately after activation, with a limit of 50 negotiations per month.<\/p>\n\n<h4>Paid plans<\/h4>\n\n<p>Upgrade for higher limits, faster models, and advanced features:<\/p>\n\n<ul>\n<li><strong>Starter<\/strong> \u2014 $39\/month \u2014 500 negotiations\/month<\/li>\n<li><strong>Pro<\/strong> \u2014 $59\/month \u2014 Gemini 2.5 Pro model, analytics dashboard<\/li>\n<li><strong>Agency<\/strong> \u2014 $199\/month \u2014 up to 5 stores, priority support<\/li>\n<li><strong>Enterprise<\/strong> \u2014 custom pricing \u2014 white-label (custom widget logo), dedicated support<\/li>\n<\/ul>\n\n<p>Annual billing saves ~17%.<\/p>\n\n<h4>External service<\/h4>\n\n<p>This plugin communicates with <strong>api.zaffro.ai<\/strong> (operated by KOLLABOR) to process chat messages and validate licences. The following data is sent on each chat request: your shop URL, a session identifier, the chat message, the conversation history, and the system prompt you configured. No personal customer data (names, emails, addresses) is transmitted.<\/p>\n\n<ul>\n<li>Service URL: https:\/\/api.zaffro.ai<\/li>\n<li>Privacy policy: https:\/\/zaffro.ai\/privacy<\/li>\n<li>Terms of service: https:\/\/zaffro.ai\/terms<\/li>\n<\/ul>\n\n<p>If you enable the Messenger or WhatsApp channel, the plugin also connects to <strong>Facebook Graph API<\/strong> (operated by Meta) to send messages via your configured page token. The following data is sent: the AI-generated reply text and the recipient's page-scoped user ID. No personal data beyond what Meta provides is transmitted back to the plugin.<\/p>\n\n<ul>\n<li>Service URL: https:\/\/graph.facebook.com\/v19.0\/<\/li>\n<li>Meta Privacy Policy: https:\/\/www.facebook.com\/privacy\/policy\/<\/li>\n<\/ul>\n\n<p>On the Free plan the plugin also connects to api.zaffro.ai to validate usage limits (50 negotiations\/month).<\/p>\n\n<p><strong>BYOK (Bring Your Own Key) mode \u2014 direct AI provider calls.<\/strong> On a paid plan you may enter your own API key. In that case the plugin calls the AI provider <strong>directly from your server<\/strong> (bypassing api.zaffro.ai), so you must be aware of these third-party services:<\/p>\n\n<p>If you supply a <strong>Google Gemini<\/strong> API key, the plugin connects to the Google Gemini API (operated by Google) to generate chat replies. The following data is sent on each request: the chat message, the conversation history, and the system prompt you configured. No personal customer data (names, emails, addresses) is transmitted.<\/p>\n\n<ul>\n<li>Service URL: https:\/\/generativelanguage.googleapis.com<\/li>\n<li>Google Gemini API Terms of Service: https:\/\/ai.google.dev\/gemini-api\/terms<\/li>\n<li>Google Privacy Policy: https:\/\/policies.google.com\/privacy<\/li>\n<\/ul>\n\n<p>If you supply an <strong>Anthropic Claude<\/strong> API key, the plugin connects to the Anthropic API (operated by Anthropic) to generate chat replies. The following data is sent on each request: the chat message, the conversation history, and the system prompt you configured. No personal customer data (names, emails, addresses) is transmitted.<\/p>\n\n<ul>\n<li>Service URL: https:\/\/api.anthropic.com<\/li>\n<li>Anthropic Commercial Terms of Service: https:\/\/www.anthropic.com\/legal\/commercial-terms<\/li>\n<li>Anthropic Privacy Policy: https:\/\/www.anthropic.com\/legal\/privacy<\/li>\n<\/ul>\n\n<h3>Shortcodes<\/h3>\n\n<h4>[zaffro_manage_subscription]<\/h4>\n\n<p>Place this shortcode on any page to give customers access to the billing portal. From there they can update their payment method, download invoices, or cancel their subscription.<\/p>\n\n<p>The page is created automatically during the onboarding wizard. If you need to recreate it manually, add a new page with the slug <code>manage-subscription<\/code> and insert <code>[zaffro_manage_subscription]<\/code> as the only content.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>zaffro<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install directly from the WordPress plugin directory<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress<\/li>\n<li>Go to <strong>ZaffroAI<\/strong> in the WordPress admin sidebar to open the settings panel<\/li>\n<li>The chat widget is live immediately on the Free plan \u2014 no API key required<\/li>\n<li>(Optional) Enter a licence key to unlock Starter, Pro, or Agency features<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20api%20key%20to%20get%20started%3F\"><h3>Do I need an API key to get started?<\/h3><\/dt>\n<dd><p>No. The Free plan runs on Zaffro's shared Gemini Flash key. The plugin works immediately after activation, with a limit of 50 AI negotiations per month.<\/p><\/dd>\n<dt id=\"which%20ai%20models%20does%20zaffro%20use%3F\"><h3>Which AI models does Zaffro use?<\/h3><\/dt>\n<dd><p>The Free plan uses Google Gemini Flash Lite. The Starter plan adds Gemini Flash. The Pro plan adds Gemini 2.5 Pro. The Agency plan supports all models plus Claude (Anthropic). You can also bring your own API key (BYOK) on any paid plan.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20customer%20data%20to%20external%20servers%3F\"><h3>Does the plugin send customer data to external servers?<\/h3><\/dt>\n<dd><p>The plugin sends chat messages and conversation history to api.zaffro.ai to generate AI responses. Customer PII (name, email, address) is masked before transmission. See the External service section above for full details.<\/p><\/dd>\n<dt id=\"can%20i%20customise%20what%20the%20assistant%20says%3F\"><h3>Can I customise what the assistant says?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>ZaffroAI \u2192 System Prompt<\/strong> to write instructions in plain language. You can define the assistant's tone, what discounts it may offer, which products to highlight, and more. Five industry templates are included (jewellery, furniture, food, gardening, B2B).<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20woocommerce%3F\"><h3>Does it work without WooCommerce?<\/h3><\/dt>\n<dd><p>No. Zaffro requires WooCommerce to read the product catalogue, generate coupons, and build checkout URLs.<\/p><\/dd>\n<dt id=\"how%20do%20i%20limit%20the%20maximum%20discount%20the%20ai%20can%20offer%3F\"><h3>How do I limit the maximum discount the AI can offer?<\/h3><\/dt>\n<dd><p>In the settings panel under <strong>Negotiation limits<\/strong>, set the maximum discount percentage. The AI will never offer more than this value.<\/p><\/dd>\n<dt id=\"is%20the%20chat%20gdpr%20compliant%3F\"><h3>Is the chat GDPR compliant?<\/h3><\/dt>\n<dd><p>The plugin includes PII masking before data is sent to api.zaffro.ai, a data export\/deletion endpoint (via the WordPress Privacy API), and a Data Processing Agreement template available at zaffro.ai\/dpa.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20down%20my%20store%3F\"><h3>Will it slow down my store?<\/h3><\/dt>\n<dd><p>The chat widget loads asynchronously and does not block page rendering. The AI request is made only when the visitor opens the chat and sends a message.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.7.25<\/h4>\n\n<ul>\n<li>Security: The subscription management portal endpoint now requires a signed, time-limited token instead of a plain email address, so a billing portal can only be opened by the verified owner of that email (received in their purchase confirmation).<\/li>\n<li>Fix: The account login\/dashboard scripts now load via the WordPress enqueue system (wp_enqueue_script \/ wp_localize_script) as required by WordPress.org guidelines.<\/li>\n<li>Fix: The chat widget no longer sends authentication cookies\/nonce on the public chat request, preventing a \"security layer is blocking the chat (HTTP 403)\" error on cached pages.<\/li>\n<li>Docs: Documented the Google Gemini and Anthropic Claude APIs as external services used in BYOK mode (with terms and privacy links).<\/li>\n<\/ul>\n\n<h4>1.7.24<\/h4>\n\n<ul>\n<li>Fix: All admin scripts and styles now load via the WordPress enqueue system (wp_enqueue_script \/ wp_add_inline_script) as required by WordPress.org guidelines.<\/li>\n<li>Fix: The \"Powered by Zaffro\" branding link in the chat widget footer is now opt-in \u2014 disabled by default, with a new toggle in Settings \u2192 Appearance.<\/li>\n<li>Fix: Added Requires Plugins: woocommerce header to declare the WooCommerce dependency.<\/li>\n<li>Fix: Facebook Graph API (Messenger\/WhatsApp channel) documented as an external service in the readme.<\/li>\n<\/ul>\n\n<h4>1.7.23<\/h4>\n\n<ul>\n<li>New: Shop category selector \u2014 choose your industry (SaaS\/plugin sales, jewellery, furniture, food &amp; drink, gardening, B2B, or general retail) and the AI assistant automatically adapts its tone, sales style, and product presentation to match.<\/li>\n<li>Fix: The AI assistant now correctly reads WooCommerce products and applies the selected industry persona; a proxy architecture change in 1.7.20 had broken this behaviour on existing installs.<\/li>\n<li>Improvement: One-time automatic migration clears any legacy system-prompt text inserted by older plugin versions, preventing duplicate instructions.<\/li>\n<\/ul>\n\n<h4>1.7.22<\/h4>\n\n<ul>\n<li>New: Admin sandbox \u2014 send a test message directly from the settings page to preview exactly how the AI will behave with your current configuration, before any customer sees it.<\/li>\n<li>New: Prompt configuration versioning \u2014 every save creates a timestamped snapshot so you can review what changed and roll back if needed.<\/li>\n<\/ul>\n\n<h4>1.7.21<\/h4>\n\n<ul>\n<li>New: Structured AI behaviour settings \u2014 configure tone (formal\/friendly), customer addressing form, negotiation strategy (conservative\/balanced\/aggressive), discount trigger, minimum cart value for negotiation, bundle suggestions, forbidden topics, and escalation mode \u2014 all from the admin panel without touching the system prompt.<\/li>\n<li>New: Advanced prompt field (L3) \u2014 a 1,500-character free-text area for merchant-specific instructions, sanitised server-side against prompt-injection patterns before use.<\/li>\n<\/ul>\n\n<h4>1.7.20<\/h4>\n\n<ul>\n<li>Security: Layered prompt protection (Phase 1) \u2014 the AI system prompt is now assembled server-side in a locked sandwich architecture (immutable header + admin-configured fields + immutable footer), so core instructions cannot be overwritten by a prompt-injection attempt embedded in a customer message or the merchant's own text.<\/li>\n<\/ul>\n\n<h4>1.7.19<\/h4>\n\n<ul>\n<li>Fix: Multi-product checkout with zero-discount orders \u2014 empty coupon tokens are now accepted, so mixed-price bundles reach the checkout page correctly.<\/li>\n<li>Fix: Free\/gift products (price = 0) now add to cart correctly under Zaffro checkout; WooCommerce previously rejected them as \"not purchasable\".<\/li>\n<li>Fix: Automatic language detection now reads the site language (WPLANG option) instead of the current user's locale, so the widget translates correctly on the storefront regardless of the admin's language setting.<\/li>\n<li>Fix: Server-side coupon text and \"free\" labels now translate to Hungarian on Hungarian-language sites.<\/li>\n<\/ul>\n\n<h4>1.7.18<\/h4>\n\n<ul>\n<li>New: Multi-product checkout \u2014 the assistant can negotiate and check out multiple products in a single conversation, applying one shared discount across the entire cart.<\/li>\n<li>Improvement: Chat widget launcher text is now fully internationalised \u2014 labels display in the active site language without requiring a translation file.<\/li>\n<\/ul>\n\n<h4>1.7.17<\/h4>\n\n<ul>\n<li>Security: Messenger and WhatsApp webhooks are now verified with a cryptographic signature (Meta App Secret), so only genuine messages from Meta are processed. Action required if you use Messenger\/WhatsApp: enter your Meta App Secret under Settings \u2192 Channels \u2014 until then those webhooks stay locked.<\/li>\n<li>Security: The chat endpoint now has built-in rate limiting to prevent abuse and runaway API usage. Normal conversations are unaffected.<\/li>\n<\/ul>\n\n<h4>1.7.16<\/h4>\n\n<ul>\n<li>New: Customer account page \u2014 log in with a one-time \"magic link\" sent by email (no password needed), view your subscription on a personal dashboard, and activate your licence on your store domain directly from the account area.<\/li>\n<\/ul>\n\n<h4>1.7.15<\/h4>\n\n<ul>\n<li>Maintenance: Translation-readiness and code-quality improvements (added translator comments and internationalisation fixes) in preparation for the WordPress.org plugin directory.<\/li>\n<\/ul>\n\n<h4>1.7.14<\/h4>\n\n<ul>\n<li>Fix: Update loop \u2014 after a successful plugin update the \"new version available\" badge could reappear immediately due to a stale cached server response. The plugin now detects that the installed version is already current, clears the stale cache, and removes the badge correctly.<\/li>\n<\/ul>\n\n<h4>1.7.13<\/h4>\n\n<ul>\n<li>Improvement: Widget logo (white-label) is now restricted to the Enterprise plan \u2014 visible in settings but locked for Free \/ Starter \/ Pro \/ Agency accounts, with an Enterprise upgrade note.<\/li>\n<li>Fix: \"Online\" and \"Typing\u2026\" status indicators now correctly display in Hungarian (and any other translated language) instead of always showing in English.<\/li>\n<\/ul>\n\n<h4>1.7.12<\/h4>\n\n<ul>\n<li>New: Connection diagnostics \u2014 a one-click test on the settings page checks whether the chat can reach the WordPress REST API, so a hosting firewall\/WAF blocking \/wp-json\/ is identified instantly instead of being mistaken for a plugin fault.<\/li>\n<li>Improvement: Clearer chat error messages \u2014 when a firewall or hosting security layer blocks the request, the widget now reports the HTTP status and points to \/wp-json\/ instead of showing a generic \"Network error\".<\/li>\n<\/ul>\n\n<h4>1.7.11<\/h4>\n\n<ul>\n<li>New: WooCommerce Subscriptions support \u2014 the assistant detects subscription products in your catalogue and presents recurring pricing correctly during negotiation.<\/li>\n<li>New: Subscription-aware coupons \u2014 discounts on subscription products are generated with the correct recurring\/once-off behaviour, configurable per product.<\/li>\n<li>New: Subscription-aware add-to-cart and AI prompt context, so the assistant never offers an invalid one-off checkout for a recurring product.<\/li>\n<li>Improvement: Graceful fallback when WooCommerce Subscriptions is not installed \u2014 subscription logic is skipped cleanly and standard products work as before.<\/li>\n<\/ul>\n\n<h4>1.7.10<\/h4>\n\n<ul>\n<li>Fix: \"Purchase a licence\" and upgrade call-to-actions now point to the dedicated pricing page (zaffro.ai\/pricing, or \/arazas on Hungarian sites) where you can subscribe directly \u2014 previously they led to the homepage trial funnel, leaving no clear path to pay.<\/li>\n<\/ul>\n\n<h4>1.7.9<\/h4>\n\n<ul>\n<li>New: Trial expiry experience \u2014 escalating admin reminders (7 \u2192 3 \u2192 1 days) as a 14-day trial nears its end, with a one-click subscribe call-to-action and the lifetime 20% coupon code.<\/li>\n<li>New: Expired trial now shows a clear \"subscribe to switch the chat back on\" notice instead of silently going inactive.<\/li>\n<li>Improvement: Conversion link and coupon are served by the license API, so they can change without a plugin update.<\/li>\n<\/ul>\n\n<h4>1.7<\/h4>\n\n<ul>\n<li>New: Analytics event tracking \u2014 wp_zaffro_events table logs chat_started, coupon_offered, checkout_offered, order_completed events (session hash only, no PII)<\/li>\n<li>New: Revenue &amp; ROI dashboard section \u2014 orders closed, revenue generated, discounts given, avg discount %, close rate, revenue\/discount ratio<\/li>\n<li>New: WooCommerce order hook \u2014 links completed orders to Zaffro sessions via coupon meta (_zaffro_session_hash)<\/li>\n<\/ul>\n\n<h4>1.6<\/h4>\n\n<ul>\n<li>New: Free tier support \u2014 plugin works without a paid license key (shared API key, 50 negotiations\/month limit)<\/li>\n<li>New: Monthly negotiation limit enforced server-side for Free plan users (per distinct session)<\/li>\n<li>Fix: Chat widget enable\/disable option no longer resets to empty string on every Settings save<\/li>\n<li>Fix: Chat header logo now renders correctly instead of displaying raw HTML markup<\/li>\n<li>Fix: Chat widget visibility condition corrected \u2014 empty string value treated as enabled<\/li>\n<\/ul>\n\n<h4>1.5<\/h4>\n\n<ul>\n<li>New: Stripe subscription management \u2014 customers can update payment method, download invoices, or cancel via [zaffro_manage_subscription] shortcode<\/li>\n<li>New: Stripe Customer Portal redirect endpoint<\/li>\n<li>New: Onboarding wizard auto-creates the subscription management page on step 5<\/li>\n<li>Fix: Portal error messages now redirect back to the shortcode page instead of homepage<\/li>\n<li>Fix: WordPress Coding Standards (PHPCS WordPress-Extra) \u2014 zero errors across all plugin files<\/li>\n<\/ul>\n\n<h4>1.4<\/h4>\n\n<ul>\n<li>Fix: All remaining Hungarian strings replaced with English throughout the plugin (catalog, coupon generator, system prompt, JS widget)<\/li>\n<li>Fix: Currency symbol dynamically loaded from WooCommerce instead of hardcoded as Ft<\/li>\n<li>Fix: Date format now uses WordPress locale-aware date_i18n() instead of hardcoded Hungarian format<\/li>\n<li>Fix: Coupon i18n \u2014 msgids changed to English so WordPress translation lookup works correctly on non-Hungarian sites<\/li>\n<li>Fix: Admin debug info removed from customer-facing WooCommerce notices<\/li>\n<li>Fix: Email webhook authenticated with timing-safe hash_equals()<\/li>\n<li>Fix: Onboarding wizard Skip buttons use POST form submission instead of plain links<\/li>\n<li>Fix: Agent name flash on chat widget load (name now set only when non-empty)<\/li>\n<li>Fix: License status label key mismatch corrected; Last checked timestamp added<\/li>\n<li>Fix: readme.txt \u2014 corrected admin menu path (ZaffroAI, not WooCommerce \u2192 Zaffro) and analytics metrics<\/li>\n<li>New: Stripe trial period days configurable in admin settings (was hardcoded at 14 days)<\/li>\n<\/ul>\n\n<h4>1.3<\/h4>\n\n<ul>\n<li>New: Analytics dashboard \u2014 sessions, conversions, AI buyer rate, model usage, daily trend chart<\/li>\n<li>New: Conversation log \u2014 full message history with AI summary generation per session<\/li>\n<li>New: 5-step onboarding wizard \u2014 shop details, industry template, discount slider, live test chat<\/li>\n<li>New: GDPR tooling \u2014 WP Privacy API export\/erasure, PII masking before DB write<\/li>\n<li>New: Session DB cleanup cron \u2014 configurable retention (7\u2013365 days)<\/li>\n<li>New: Custom update checker for direct-download builds (not applicable on WP.org)<\/li>\n<li>Security: Dev API keys moved to gitignored config file (filter-based)<\/li>\n<li>Fix: Text domain normalised to <code>zaffro<\/code> throughout<\/li>\n<li>Fix: All user-facing strings wrapped in i18n functions; Hungarian .po\/.mo updated<\/li>\n<\/ul>\n\n<h4>1.2<\/h4>\n\n<ul>\n<li>New: Cloud proxy architecture \u2014 API keys stay on Zaffro servers<\/li>\n<li>New: Gemini 2.5 Flash as default model<\/li>\n<li>New: Gemini 2.5 Pro as upgraded model<\/li>\n<li>New: Checkout button without coupon (<code>[CHECKOUT:PRODUCT_ID]<\/code> tag)<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>New: WooCommerce coupon generation via <code>[COUPON:ID:PERCENT]<\/code> tag in AI response<\/li>\n<li>New: Manual product list \/ non-WC catalogue (<code>{{catalog}}<\/code> admin text field)<\/li>\n<li>New: AI buyer detection \u2014 7 heuristics, configurable threshold<\/li>\n<li>New: System prompt onboarding wizard with 10 industry templates<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release \u2014 chat widget, WooCommerce product context, one-click checkout<\/li>\n<\/ul>","raw_excerpt":"AI-powered sales agent that negotiates, generates coupons, and closes deals \u2014 right inside your WooCommerce store.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/323034","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=323034"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/koszecz"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=323034"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=323034"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=323034"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=323034"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=323034"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=323034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}