Description
Zaffro adds an AI sales assistant to your WooCommerce store. Your customers get a helpful chat experience; you get more conversions.
The assistant presents products, answers questions, and — naturally — negotiates. When a deal is reached, the customer is taken to checkout in one click with the discount already applied.
How it works
- A visitor opens the chat widget on your storefront
- The AI assistant answers questions and gently steers toward a purchase
- If the customer hesitates, the assistant can offer a personalised discount
- A checkout button appears — one click, discount pre-applied, straight to payment
Key features
- AI negotiation — the assistant bargains within limits you define
- Coupon generation — creates WooCommerce coupons on the fly during chat
- One-click checkout — sends customers to the cart/checkout with the discount already applied
- Product catalogue context — automatically loaded from your WooCommerce product data
- AI buyer detection — 7 heuristics to identify serious buyers and trigger the right moment
- System prompt editor — train the assistant in plain language; 5 industry templates included
- Cloud proxy — your API keys stay on our server; no setup required on the Free plan
- BYOK support — bring your own Gemini or Claude API key (Pro/Agency)
- Chat history — stored in localStorage, visible to the shopper across the session
- Order note + email summary — every negotiation logged to the WooCommerce order
Free plan
The Free plan runs on Zaffro’s shared Gemini Flash key. No registration required — the plugin works immediately after activation, with a limit of 50 negotiations per month.
Paid plans
Upgrade for higher limits, faster models, and advanced features:
- Starter — $39/month — 500 negotiations/month
- Pro — $59/month — Gemini 2.5 Pro model, analytics dashboard
- Agency — $199/month — up to 5 stores, priority support
- Enterprise — custom pricing — white-label (custom widget logo), dedicated support
Annual billing saves ~17%.
External service
This plugin communicates with api.zaffro.ai (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.
- Service URL: https://api.zaffro.ai
- Privacy policy: https://zaffro.ai/privacy
- Terms of service: https://zaffro.ai/terms
If you enable the Messenger or WhatsApp channel, the plugin also connects to Facebook Graph API (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.
- Service URL: https://graph.facebook.com/v19.0/
- Meta Privacy Policy: https://www.facebook.com/privacy/policy/
On the Free plan the plugin also connects to api.zaffro.ai to validate usage limits (50 negotiations/month).
BYOK (Bring Your Own Key) mode — direct AI provider calls. On a paid plan you may enter your own API key. In that case the plugin calls the AI provider directly from your server (bypassing api.zaffro.ai), so you must be aware of these third-party services:
If you supply a Google Gemini 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.
- Service URL: https://generativelanguage.googleapis.com
- Google Gemini API Terms of Service: https://ai.google.dev/gemini-api/terms
- Google Privacy Policy: https://policies.google.com/privacy
If you supply an Anthropic Claude 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.
- Service URL: https://api.anthropic.com
- Anthropic Commercial Terms of Service: https://www.anthropic.com/legal/commercial-terms
- Anthropic Privacy Policy: https://www.anthropic.com/legal/privacy
Shortcodes
[zaffro_manage_subscription]
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.
The page is created automatically during the onboarding wizard. If you need to recreate it manually, add a new page with the slug manage-subscription and insert [zaffro_manage_subscription] as the only content.
Screenshots





Installation
- Upload the
zaffrofolder to/wp-content/plugins/, or install directly from the WordPress plugin directory - Activate the plugin through the Plugins menu in WordPress
- Go to ZaffroAI in the WordPress admin sidebar to open the settings panel
- The chat widget is live immediately on the Free plan — no API key required
- (Optional) Enter a licence key to unlock Starter, Pro, or Agency features
FAQ
-
Do I need an API key to get started?
-
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.
-
Which AI models does Zaffro use?
-
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.
-
Does the plugin send customer data to external servers?
-
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.
-
Can I customise what the assistant says?
-
Yes. Go to ZaffroAI System Prompt 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).
-
Does it work without WooCommerce?
-
No. Zaffro requires WooCommerce to read the product catalogue, generate coupons, and build checkout URLs.
-
How do I limit the maximum discount the AI can offer?
-
In the settings panel under Negotiation limits, set the maximum discount percentage. The AI will never offer more than this value.
-
Is the chat GDPR compliant?
-
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.
-
Will it slow down my store?
-
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.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Zaffro – AI Sales Agent for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Zaffro – AI Sales Agent for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.7.25
- 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).
- 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.
- 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.
- Docs: Documented the Google Gemini and Anthropic Claude APIs as external services used in BYOK mode (with terms and privacy links).
1.7.24
- 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.
- Fix: The “Powered by Zaffro” branding link in the chat widget footer is now opt-in — disabled by default, with a new toggle in Settings Appearance.
- Fix: Added Requires Plugins: woocommerce header to declare the WooCommerce dependency.
- Fix: Facebook Graph API (Messenger/WhatsApp channel) documented as an external service in the readme.
1.7.23
- New: Shop category selector — choose your industry (SaaS/plugin sales, jewellery, furniture, food & drink, gardening, B2B, or general retail) and the AI assistant automatically adapts its tone, sales style, and product presentation to match.
- 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.
- Improvement: One-time automatic migration clears any legacy system-prompt text inserted by older plugin versions, preventing duplicate instructions.
1.7.22
- New: Admin sandbox — 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.
- New: Prompt configuration versioning — every save creates a timestamped snapshot so you can review what changed and roll back if needed.
1.7.21
- New: Structured AI behaviour settings — 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 — all from the admin panel without touching the system prompt.
- New: Advanced prompt field (L3) — a 1,500-character free-text area for merchant-specific instructions, sanitised server-side against prompt-injection patterns before use.
1.7.20
- Security: Layered prompt protection (Phase 1) — 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.
1.7.19
- Fix: Multi-product checkout with zero-discount orders — empty coupon tokens are now accepted, so mixed-price bundles reach the checkout page correctly.
- Fix: Free/gift products (price = 0) now add to cart correctly under Zaffro checkout; WooCommerce previously rejected them as “not purchasable”.
- 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.
- Fix: Server-side coupon text and “free” labels now translate to Hungarian on Hungarian-language sites.
1.7.18
- New: Multi-product checkout — the assistant can negotiate and check out multiple products in a single conversation, applying one shared discount across the entire cart.
- Improvement: Chat widget launcher text is now fully internationalised — labels display in the active site language without requiring a translation file.
1.7.17
- 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 Channels — until then those webhooks stay locked.
- Security: The chat endpoint now has built-in rate limiting to prevent abuse and runaway API usage. Normal conversations are unaffected.
1.7.16
- New: Customer account page — 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.
1.7.15
- Maintenance: Translation-readiness and code-quality improvements (added translator comments and internationalisation fixes) in preparation for the WordPress.org plugin directory.
1.7.14
- Fix: Update loop — 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.
1.7.13
- Improvement: Widget logo (white-label) is now restricted to the Enterprise plan — visible in settings but locked for Free / Starter / Pro / Agency accounts, with an Enterprise upgrade note.
- Fix: “Online” and “Typing…” status indicators now correctly display in Hungarian (and any other translated language) instead of always showing in English.
1.7.12
- New: Connection diagnostics — 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.
- Improvement: Clearer chat error messages — 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”.
1.7.11
- New: WooCommerce Subscriptions support — the assistant detects subscription products in your catalogue and presents recurring pricing correctly during negotiation.
- New: Subscription-aware coupons — discounts on subscription products are generated with the correct recurring/once-off behaviour, configurable per product.
- New: Subscription-aware add-to-cart and AI prompt context, so the assistant never offers an invalid one-off checkout for a recurring product.
- Improvement: Graceful fallback when WooCommerce Subscriptions is not installed — subscription logic is skipped cleanly and standard products work as before.
1.7.10
- 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 — previously they led to the homepage trial funnel, leaving no clear path to pay.
1.7.9
- New: Trial expiry experience — escalating admin reminders (7 3 1 days) as a 14-day trial nears its end, with a one-click subscribe call-to-action and the lifetime 20% coupon code.
- New: Expired trial now shows a clear “subscribe to switch the chat back on” notice instead of silently going inactive.
- Improvement: Conversion link and coupon are served by the license API, so they can change without a plugin update.
1.7
- New: Analytics event tracking — wp_zaffro_events table logs chat_started, coupon_offered, checkout_offered, order_completed events (session hash only, no PII)
- New: Revenue & ROI dashboard section — orders closed, revenue generated, discounts given, avg discount %, close rate, revenue/discount ratio
- New: WooCommerce order hook — links completed orders to Zaffro sessions via coupon meta (_zaffro_session_hash)
1.6
- New: Free tier support — plugin works without a paid license key (shared API key, 50 negotiations/month limit)
- New: Monthly negotiation limit enforced server-side for Free plan users (per distinct session)
- Fix: Chat widget enable/disable option no longer resets to empty string on every Settings save
- Fix: Chat header logo now renders correctly instead of displaying raw HTML markup
- Fix: Chat widget visibility condition corrected — empty string value treated as enabled
1.5
- New: Stripe subscription management — customers can update payment method, download invoices, or cancel via [zaffro_manage_subscription] shortcode
- New: Stripe Customer Portal redirect endpoint
- New: Onboarding wizard auto-creates the subscription management page on step 5
- Fix: Portal error messages now redirect back to the shortcode page instead of homepage
- Fix: WordPress Coding Standards (PHPCS WordPress-Extra) — zero errors across all plugin files
1.4
- Fix: All remaining Hungarian strings replaced with English throughout the plugin (catalog, coupon generator, system prompt, JS widget)
- Fix: Currency symbol dynamically loaded from WooCommerce instead of hardcoded as Ft
- Fix: Date format now uses WordPress locale-aware date_i18n() instead of hardcoded Hungarian format
- Fix: Coupon i18n — msgids changed to English so WordPress translation lookup works correctly on non-Hungarian sites
- Fix: Admin debug info removed from customer-facing WooCommerce notices
- Fix: Email webhook authenticated with timing-safe hash_equals()
- Fix: Onboarding wizard Skip buttons use POST form submission instead of plain links
- Fix: Agent name flash on chat widget load (name now set only when non-empty)
- Fix: License status label key mismatch corrected; Last checked timestamp added
- Fix: readme.txt — corrected admin menu path (ZaffroAI, not WooCommerce Zaffro) and analytics metrics
- New: Stripe trial period days configurable in admin settings (was hardcoded at 14 days)
1.3
- New: Analytics dashboard — sessions, conversions, AI buyer rate, model usage, daily trend chart
- New: Conversation log — full message history with AI summary generation per session
- New: 5-step onboarding wizard — shop details, industry template, discount slider, live test chat
- New: GDPR tooling — WP Privacy API export/erasure, PII masking before DB write
- New: Session DB cleanup cron — configurable retention (7–365 days)
- New: Custom update checker for direct-download builds (not applicable on WP.org)
- Security: Dev API keys moved to gitignored config file (filter-based)
- Fix: Text domain normalised to
zaffrothroughout - Fix: All user-facing strings wrapped in i18n functions; Hungarian .po/.mo updated
1.2
- New: Cloud proxy architecture — API keys stay on Zaffro servers
- New: Gemini 2.5 Flash as default model
- New: Gemini 2.5 Pro as upgraded model
- New: Checkout button without coupon (
[CHECKOUT:PRODUCT_ID]tag)
1.1
- New: WooCommerce coupon generation via
[COUPON:ID:PERCENT]tag in AI response - New: Manual product list / non-WC catalogue (
{{catalog}}admin text field) - New: AI buyer detection — 7 heuristics, configurable threshold
- New: System prompt onboarding wizard with 10 industry templates
1.0
- Initial release — chat widget, WooCommerce product context, one-click checkout
