{"id":271321,"date":"2026-01-11T15:36:31","date_gmt":"2026-01-11T15:36:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/convertybot\/"},"modified":"2026-05-03T00:42:26","modified_gmt":"2026-05-03T00:42:26","slug":"convertybot","status":"publish","type":"plugin","link":"https:\/\/es-ec.wordpress.org\/plugins\/convertybot\/","author":20811354,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.4.3","stable_tag":"2.4.3","tested":"6.9.4","requires":"5.0","requires_php":"7.2","requires_plugins":null,"header_name":"ConvertyBot","header_author":"ConvertyBot, 2wstechnologies Team","header_description":"An intelligent AI-powered sales assistant for WooCommerce that helps visitors discover products, provides personalized recommendations, and generates dynamic discount codes to boost sales.","assets_banners_color":"","last_updated":"2026-05-03 00:42:26","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/convertybot.com\/","header_plugin_uri":"","header_author_uri":"https:\/\/convertybot.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":389,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.14":{"tag":"1.0.14","author":"2wstechnologies","date":"2026-01-21 09:30:55"},"1.0.15":{"tag":"1.0.15","author":"2wstechnologies","date":"2026-01-21 15:52:33"},"1.0.16":{"tag":"1.0.16","author":"2wstechnologies","date":"2026-01-22 16:22:02"},"1.0.26":{"tag":"1.0.26","author":"2wstechnologies","date":"2026-01-23 13:01:09"},"1.0.28":{"tag":"1.0.28","author":"2wstechnologies","date":"2026-01-23 16:49:32"},"1.0.29":{"tag":"1.0.29","author":"2wstechnologies","date":"2026-01-23 17:21:35"},"1.0.31":{"tag":"1.0.31","author":"2wstechnologies","date":"2026-01-27 10:14:19"},"1.0.32":{"tag":"1.0.32","author":"2wstechnologies","date":"2026-02-25 11:01:05"},"2.4.3":{"tag":"2.4.3","author":"2wstechnologies","date":"2026-05-03 00:42:26"}},"upgrade_notice":{"2.3.3":"<p>Major release. Custom branding (avatar + header logo), brand-new Developer tab with public API + endpoint reference, redesigned integrations page, full subscription enforcement on the storefront (widget hides on inactive plans), and dozens of save-handler bug fixes. One-time auto-repair runs on first admin page load to restore any options that were accidentally wiped by the legacy save handler. Strongly recommended for all stores.<\/p>","2.1.0":"<p>Redesigned admin experience \u2014 worth the update. New plans page lets you see your plan, usage, and upgrade options at a glance. Better progress bars, clearer upgrade paths, and a live What&#039;s New panel. No migration needed.<\/p>","2.0.0":"<p>Major release. New 6-tier pricing with better value at every level, lifetime Free Trial (no more 14-day clock), overage packs, and a hardened Stripe + subscription engine. Strongly recommended update. Existing shops are auto-migrated on first admin-page load.<\/p>","1.0.32":"<p>Major feature release \u2014 AI-driven proactive engagement with 7 levels. Strongly recommended for all stores wanting higher conversion.<\/p>","1.0.31":"<p>Critical fix \u2014 resolves &quot;Service Unavailable&quot; during checkout with AI-generated coupons.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3437847,"resolution":"128x128","location":"assets","locale":""}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.14","1.0.15","1.0.16","1.0.26","1.0.28","1.0.29","1.0.31","1.0.32","2.4.3"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The widget engaging a visitor mid-browse","2":"Admin subscription page \u2014 plan, usage, packs, feature comparison","3":"Configuration page with six tabs (Appearance \/ Voice \/ Proactive strategies \/ Conversation behavior \/ Advanced \/ Developer)","4":"Custom branding pickers \u2014 bot avatar + header logo with live preview","5":"Proactive strategy picker \u2014 seven strategies, plan-capped, single-active","6":"Integrations page \u2014 Klaviyo, Mailchimp, Zapier, n8n, Make, Slack, custom webhook with HMAC","7":"Developer tab \u2014 masked API keys, curl examples, expandable endpoint reference","8":"Analytics dashboard with conversion attribution","9":"Coupon rule editor with trigger conditions","10":"Visitor journey timeline with engagement scoring","11":"Onboarding tour spotlighting the admin experience","12":"Mobile widget in action"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2353,2364,984,332,286],"plugin_category":[45],"plugin_contributors":[244628],"plugin_business_model":[],"class_list":["post-271321","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-chatbot","plugin_tags-conversion","plugin_tags-sales","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-2wstechnologies","plugin_committers-2wstechnologies"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/convertybot\/assets\/icon-128x128.png?rev=3437847","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>ConvertyBot is the AI sales assistant your WooCommerce store hires once and keeps forever.<\/strong> It greets every visitor, understands what they're looking for, recommends products, crafts personalised coupons on the fly, and closes the sale \u2014 while you sleep, ship, or focus on the next product line.<\/p>\n\n<p>Built on a single-model Mistral Small 3 LLM running at 92\u201397% gross margin, optimised for e-commerce tone and grounded in <em>your<\/em> product catalogue. Not a generic chatbot. A conversion machine.<\/p>\n\n<p><strong>Start free. 100 conversations, no time limit, no credit card.<\/strong><\/p>\n\n<p><a href=\"https:\/\/convertybot.com\/demo.html\">Try the live demo \u2192<\/a> \u00b7 <a href=\"https:\/\/convertybot.com\/pricing.html\">See pricing \u2192<\/a><\/p>\n\n<h4>Why stores switch to ConvertyBot<\/h4>\n\n<ul>\n<li>\ud83d\ude80 <strong>+25% to +50% conversion lift<\/strong> measured across beta partners in the first 30 days<\/li>\n<li>\u26a1 <strong>Under 200ms response<\/strong> \u2014 visitors don't wait for the bot to think<\/li>\n<li>\ud83c\udf81 <strong>Coupons that close<\/strong> \u2014 context-aware discounts generated for the moment, not static codes<\/li>\n<li>\ud83d\uded2 <strong>Cart recovery in real time<\/strong> \u2014 exit intent, cart idle, and hesitation triggers, not just email retargeting<\/li>\n<li>\ud83c\udf0d <strong>Multilingual out of the box<\/strong> \u2014 speaks to every visitor in their language<\/li>\n<li>\ud83d\udd10 <strong>GDPR-ready<\/strong> \u2014 consent-first, data minimisation, audit trail<\/li>\n<li>\ud83c\udfa8 <strong>Custom branding<\/strong> \u2014 your bot avatar and header logo on the widget (Growth+)<\/li>\n<li>\ud83d\udd0c <strong>Public API<\/strong> \u2014 push events \/ pull analytics into your own apps (Business+)<\/li>\n<\/ul>\n\n<h4>The seven conversion strategies<\/h4>\n\n<p>Most chatbots have one mode: \"pop up after 30s.\" ConvertyBot has <strong>seven<\/strong>, and you pick which the bot should run per plan tier:<\/p>\n\n<ol>\n<li><strong>Ghost<\/strong> \u2014 silent bubble, waits to be invoked<\/li>\n<li><strong>Host<\/strong> \u2014 warm welcome after a configurable delay<\/li>\n<li><strong>Guide<\/strong> \u2014 navigation-aware product recommendations<\/li>\n<li><strong>Advisor<\/strong> \u2014 intervenes when a visitor hesitates on a product<\/li>\n<li><strong>Hunter<\/strong> \u2014 exit-intent pop-up with a contextual coupon<\/li>\n<li><strong>Closer<\/strong> \u2014 cross-sell and upsell on the cart page<\/li>\n<li><strong>Blitz<\/strong> \u2014 time-limited flash offer to push conversion<\/li>\n<\/ol>\n\n<p>Strategy selection is single-active (radio behaviour) \u2014 pick the engagement mode that fits your traffic, save, done. The picker shows locked tiers with a clear upgrade path.<\/p>\n\n<h4>What it actually does during a visit<\/h4>\n\n<p><strong>Arrival<\/strong> \u2014 visitor lands on your store. ConvertyBot silently analyses the pages they view, how long they dwell, which products they compare, whether they're signed in.<\/p>\n\n<p><strong>Engagement<\/strong> \u2014 the bot picks the right moment to surface a teaser bubble: \"Not sure which size? I can help.\" The visitor clicks, the chat opens, the assistant is ready.<\/p>\n\n<p><strong>Recommendation<\/strong> \u2014 the bot knows your catalogue. It recommends 2\u20133 products that match the visitor's implied need, with prices, images, and stock.<\/p>\n\n<p><strong>Coupon<\/strong> \u2014 if the visitor hesitates (scrolls back up, adds and removes from cart), the bot generates a real coupon \u2014 percentage or fixed, capped to your rules, expiring in 60 minutes. The code is syncable with your WooCommerce coupons table.<\/p>\n\n<p><strong>Close<\/strong> \u2014 the bot nudges toward checkout, answers the final objections, and hands off when the visitor is ready to pay.<\/p>\n\n<h4>Analytics you can act on<\/h4>\n\n<ul>\n<li>Every conversation, scored for engagement and conversion likelihood<\/li>\n<li>Visitor journeys with full timeline (pages, dwell time, interactions, chat turns)<\/li>\n<li>Coupon performance per rule<\/li>\n<li>Revenue attribution: which chats led to which orders, net of discounts<\/li>\n<li>Multi-touch attribution (First Click, Last Click, Linear, Time Decay)<\/li>\n<li>Exportable CSV \/ PDF on Pro+ plans<\/li>\n<li>Public API token for your own BI dashboards (Business+)<\/li>\n<\/ul>\n\n<h4>Built for real WooCommerce stores<\/h4>\n\n<ul>\n<li>Ships as a standard plugin; activate and go<\/li>\n<li>Zero conflict with your theme \u2014 renders in a shadow DOM<\/li>\n<li>Elementor, Divi, WPBakery, Gutenberg all supported<\/li>\n<li>Mobile-first, responsive, reduced-motion aware<\/li>\n<li>Works alongside your existing coupons \u2014 never double-discounts<\/li>\n<li>Full white-label option on Business and Enterprise<\/li>\n<\/ul>\n\n<h4>Pricing that scales with you<\/h4>\n\n<p><strong>\ud83c\udd93 Free Trial<\/strong> \u2014 100 conversations lifetime, <strong>no time limit<\/strong>\nUnlimited visitors analysed \u00b7 1 strategy (Ghost) \u00b7 basic AI \u00b7 email support<\/p>\n\n<p><strong>\u2b50 Starter \u2014 $19\/mo<\/strong> (or $182\/yr, save 20%)\n250 conversations\/mo \u00b7 5,000 visitors\/mo \u00b7 2 strategies \u00b7 basic smart coupons \u00b7 basic analytics<\/p>\n\n<p><strong>\ud83d\ude80 Growth \u2014 $49\/mo<\/strong> (or $470\/yr, save 20%)\n1,500 conversations\/mo \u00b7 20,000 visitors\/mo \u00b7 5 strategies \u00b7 rule-based coupons \u00b7 advanced analytics \u00b7 custom bot avatar + header logo<\/p>\n\n<p><strong>\ud83d\udcbc Pro \u2014 $99\/mo<\/strong> (or $950\/yr, save 20%) <em>Most popular<\/em>\n5,000 conversations\/mo \u00b7 50,000 visitors\/mo \u00b7 all 7 strategies \u00b7 A\/B testing \u00b7 CSV \/ PDF export \u00b7 \"Powered by\" badge removal \u00b7 Klaviyo + Mailchimp integrations \u00b7 priority support<\/p>\n\n<p><strong>\ud83c\udfe2 Business \u2014 $199\/mo<\/strong> (or $1,910\/yr, save 20%)\n10,000 conversations\/mo \u00b7 100,000 visitors\/mo \u00b7 all 7 strategies \u00b7 full custom branding \u00b7 white-label \u00b7 multi-site \u00b7 public API access \u00b7 all integrations (Zapier, n8n, Make, Slack, custom webhooks) \u00b7 account manager<\/p>\n\n<p><strong>\ud83d\udd37 Enterprise \u2014 Custom<\/strong>\nUnlimited everything \u00b7 dedicated SLA \u00b7 bespoke integrations \u00b7 named engineer<\/p>\n\n<h4>Run out of conversations mid-month?<\/h4>\n\n<p>Top up without changing plans:<\/p>\n\n<ul>\n<li>100 conversations \u2014 <strong>$5<\/strong><\/li>\n<li>500 conversations \u2014 <strong>$20<\/strong> (best value)<\/li>\n<li>1,000 conversations \u2014 <strong>$35<\/strong><\/li>\n<\/ul>\n\n<p>Packs are one-time, activate instantly, and automatically consume after your plan quota runs out.<\/p>\n\n<h4>Who is ConvertyBot for?<\/h4>\n\n<ul>\n<li>Store owners who want more sales without hiring more humans<\/li>\n<li>Marketing leads who need a conversion lever they can ship this week<\/li>\n<li>Agencies managing multiple client stores (Business tier unlocks multi-site + white-label)<\/li>\n<li>Founders of small shops that can't afford a 24\/7 support team<\/li>\n<li>Developers integrating ConvertyBot data into custom dashboards (Business public API)<\/li>\n<\/ul>\n\n<h4>Integrations<\/h4>\n\n<ul>\n<li><strong>Native:<\/strong> WooCommerce, WordPress, Stripe (billing)<\/li>\n<li><strong>Pro+:<\/strong> Klaviyo, Mailchimp<\/li>\n<li><strong>Business+:<\/strong> Zapier, n8n, Make.com, Slack (Incoming Webhooks), custom HTTPS webhooks with HMAC-SHA256 signing, public REST API<\/li>\n<li><strong>Enterprise:<\/strong> custom integrations on request<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>ConvertyBot communicates with the ConvertyBot API (https:\/\/api.convertybot.com) to provide AI-powered chat, analytics, and billing:<\/p>\n\n<ul>\n<li><strong>Product catalogue<\/strong> \u2014 read-only sync so the AI can recommend products accurately<\/li>\n<li><strong>Chat conversations<\/strong> \u2014 processed through the ConvertyBot AI service for response generation<\/li>\n<li><strong>Analytics<\/strong> \u2014 aggregated into the dashboard you see in WordPress admin<\/li>\n<li><strong>Billing<\/strong> \u2014 managed through Stripe (PCI-compliant, we never see card data)<\/li>\n<li><strong>Integrations<\/strong> \u2014 outbound webhooks to merchant-configured destinations (Klaviyo, Mailchimp, Zapier, n8n, Make, Slack, custom URLs) only when the merchant connects them<\/li>\n<li><strong>Public API (Business+)<\/strong> \u2014 inbound calls from merchant-owned apps using the merchant's own <code>cbt_pk_<\/code> token<\/li>\n<\/ul>\n\n<p>No personal visitor data is collected without consent. The plugin ships with a GDPR-ready consent banner. Visitor data is anonymised by default; store-owner data is limited to shop metadata (domain, email, plan) plus the conversation \/ analytics payloads you'd expect.<\/p>\n\n<ul>\n<li><strong>Terms of Service:<\/strong> <a href=\"https:\/\/convertybot.com\/terms.html\">https:\/\/convertybot.com\/terms<\/a><\/li>\n<li><strong>Privacy Policy:<\/strong> <a href=\"https:\/\/convertybot.com\/privacy.html\">https:\/\/convertybot.com\/privacy<\/a><\/li>\n<li><strong>Data Processing Addendum:<\/strong> available on request from legal@convertybot.com<\/li>\n<\/ul>\n\n<h3>Support &amp; Community<\/h3>\n\n<ul>\n<li><strong>Website:<\/strong> <a href=\"https:\/\/convertybot.com\/\">convertybot.com<\/a><\/li>\n<li><strong>Live demo:<\/strong> <a href=\"https:\/\/convertybot.com\/demo.html\">convertybot.com\/demo<\/a><\/li>\n<li><strong>Documentation:<\/strong> <a href=\"https:\/\/convertybot.com\/docs\">convertybot.com\/docs<\/a><\/li>\n<li><strong>Support email:<\/strong> support@convertybot.com<\/li>\n<li><strong>Status page:<\/strong> <a href=\"https:\/\/status.convertybot.com\/\">status.convertybot.com<\/a><\/li>\n<li><strong>Feature requests:<\/strong> <a href=\"https:\/\/feedback.convertybot.com\/\">feedback.convertybot.com<\/a><\/li>\n<\/ul>\n\n<h3>Why choose ConvertyBot?<\/h3>\n\n<p><strong>\ud83d\udcb0 Revenue that compounds<\/strong> \u2014 every visitor is a chance to sell\n<strong>\u23f0 Always on<\/strong> \u2014 the bot doesn't sleep, doesn't take breaks, doesn't quit\n<strong>\ud83d\udcc8 Scales with you<\/strong> \u2014 100 conversations free, 10,000+ on Business, unlimited on Enterprise\n<strong>\ud83c\udfaf Right message, right moment<\/strong> \u2014 seven behaviour-aware strategies\n<strong>\ud83d\udd0c Open to your stack<\/strong> \u2014 public API + 6 native integrations + custom webhooks\n<strong>\ud83d\udee1\ufe0f Built right<\/strong> \u2014 GDPR, Stripe-grade billing, audit trails, 14-day grace on payment failure\n<\/p>\n\n<!--section=installation-->\n<h4>Option 1 \u2014 from your WordPress admin (recommended)<\/h4>\n\n<ol>\n<li>In your WordPress admin, open <strong>Plugins \u2192 Add New<\/strong><\/li>\n<li>Search for <strong>\"ConvertyBot\"<\/strong><\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong><\/li>\n<li>Go to <strong>ConvertyBot<\/strong> in the admin menu<\/li>\n<li>Click <strong>Start Free Trial<\/strong> \u2014 you're done<\/li>\n<\/ol>\n\n<p>The setup wizard takes under two minutes. No credit card required. A 14-step guided onboarding tour walks you through every admin section on first launch.<\/p>\n\n<h4>Option 2 \u2014 manual upload<\/h4>\n\n<ol>\n<li>Download <code>convertybot.zip<\/code> from this listing<\/li>\n<li>In WordPress admin: <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong><\/li>\n<li>Pick the ZIP, install, activate<\/li>\n<li>Configure from the <strong>ConvertyBot<\/strong> admin menu<\/li>\n<\/ol>\n\n<h4>Option 3 \u2014 FTP<\/h4>\n\n<ol>\n<li>Extract <code>convertybot.zip<\/code><\/li>\n<li>Upload the <code>convertybot\/<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin from the Plugins page<\/li>\n<\/ol>\n\n<h4>After installation<\/h4>\n\n<ul>\n<li><strong>Appearance<\/strong> \u2014 match the widget to your brand (colours, avatar, header logo, position)<\/li>\n<li><strong>Voice &amp; persona<\/strong> \u2014 name your bot, set its tone, customise the welcome message<\/li>\n<li><strong>Proactive strategies<\/strong> \u2014 pick the engagement mode that fits your traffic (capped by your plan)<\/li>\n<li><strong>Coupon rules<\/strong> \u2014 set maximum discount, minimum cart value, validity window<\/li>\n<li><strong>Integrations<\/strong> \u2014 connect Klaviyo, Mailchimp, Zapier, n8n, Make.com, Slack, or any HTTPS endpoint<\/li>\n<li><strong>Developer<\/strong> \u2014 generate a public API token, see endpoint reference, copy curl examples<\/li>\n<li><strong>Analytics<\/strong> \u2014 watch the dashboard fill up as visitors come in<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20convertybot%20really%20free%3F\"><h3>Is ConvertyBot really free?<\/h3><\/dt>\n<dd><p>Yes \u2014 the Free Trial has no time limit. You get 100 conversations that last as long as you need, unlimited visitors analysed, and the Ghost strategy. No credit card. Upgrade only when you're ready.<\/p><\/dd>\n<dt id=\"do%20i%20need%20woocommerce%3F\"><h3>Do I need WooCommerce?<\/h3><\/dt>\n<dd><p>Yes for the WooCommerce plugin. If you run a Shopify store we have a dedicated Shopify app at <a href=\"https:\/\/apps.shopify.com\/convertybot\">apps.shopify.com\/convertybot<\/a>.<\/p><\/dd>\n<dt id=\"what%20exactly%20counts%20as%20a%20%22conversation%22%3F\"><h3>What exactly counts as a \"conversation\"?<\/h3><\/dt>\n<dd><p>A conversation is a visitor who <strong>actively sends at least one message<\/strong> to the bot. If the bot silently analyses browsing (no chat), that's a \"visitor analysed\" \u2014 cheap to process and generous on every plan. You only burn conversations when someone types.<\/p><\/dd>\n<dt id=\"how%20is%20a%20%22visitor%22%20counted%3F\"><h3>How is a \"visitor\" counted?<\/h3><\/dt>\n<dd><p>One visitor session = one tick on the counter, deduplicated by browser session (standard 30-minute inactivity gap, same convention as Google Analytics). The same visitor returning hours later counts as a new visit because each visit costs new AI analysis cycles.<\/p><\/dd>\n<dt id=\"how%20does%20the%2020%25%20annual%20discount%20work%3F\"><h3>How does the 20% annual discount work?<\/h3><\/dt>\n<dd><p>Pay the yearly total upfront and you save two months. Switch between monthly and annual at any time from the admin page \u2014 it takes one click.<\/p><\/dd>\n<dt id=\"can%20i%20cancel%20anytime%3F\"><h3>Can I cancel anytime?<\/h3><\/dt>\n<dd><p>Yes. Cancel from the Stripe Customer Portal linked inside the admin page. Your bot keeps working until the end of the period you already paid for. No refunds on partial months, no tricks.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20run%20out%20of%20conversations%3F\"><h3>What happens if I run out of conversations?<\/h3><\/dt>\n<dd><p>The bot gracefully degrades \u2014 it shows a short offline message instead of chatting. You can either upgrade your plan or buy an overage pack ($5 \/ $20 \/ $35) that activates instantly.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20my%20subscription%20expires%20or%20i%20cancel%3F\"><h3>What happens when my subscription expires or I cancel?<\/h3><\/dt>\n<dd><p>The widget hides itself entirely from your storefront the moment your billing period ends \u2014 customers see nothing instead of a broken bubble. Custom branding (avatar, logo) reverts to defaults. Plan-gated features (integrations, advanced strategies, custom branding, public API) lock cleanly. Reactivate from the Subscription page in admin and everything restores within 60 seconds.<\/p><\/dd>\n<dt id=\"can%20i%20customise%20the%20chatbot%27s%20appearance%3F\"><h3>Can I customise the chatbot's appearance?<\/h3><\/dt>\n<dd><ul>\n<li><strong>Growth<\/strong> \u2014 upload a custom bot avatar and an optional widget header logo<\/li>\n<li><strong>Pro<\/strong> \u2014 branding-removal (no \"Powered by ConvertyBot\")<\/li>\n<li><strong>Business<\/strong> \u2014 full white-label (every reference to ConvertyBot is stripped)<\/li>\n<\/ul>\n\n<p>All configurable from <strong>Configuration \u2192 Appearance<\/strong> with WordPress Media Library pickers and live previews.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20my%20site%20down%3F\"><h3>Will it slow my site down?<\/h3><\/dt>\n<dd><p>No. The widget is lazy-loaded, runs in an isolated shadow DOM, and makes zero blocking requests on page load. Lighthouse scores stay intact.<\/p><\/dd>\n<dt id=\"is%20my%20data%20secure%3F\"><h3>Is my data secure?<\/h3><\/dt>\n<dd><ul>\n<li>All API calls over TLS<\/li>\n<li>No personal data sent to our servers without explicit consent<\/li>\n<li>GDPR-ready consent banner built in<\/li>\n<li>Data retention limited to your plan's window<\/li>\n<li>Full data-export and data-deletion endpoints<\/li>\n<\/ul><\/dd>\n<dt id=\"what%20ai%20model%20is%20behind%20this%3F\"><h3>What AI model is behind this?<\/h3><\/dt>\n<dd><p>Mistral Small 3 via OpenRouter \u2014 tuned for e-commerce conversational tone. All plans use the same core model; higher tiers get richer prompt context, more recommendation depth, and more conversation history.<\/p><\/dd>\n<dt id=\"can%20i%20run%20a%2Fb%20tests%3F\"><h3>Can I run A\/B tests?<\/h3><\/dt>\n<dd><p>Yes \u2014 on Pro and above. Test welcome messages, timings, strategy mixes, and coupon offers side-by-side.<\/p><\/dd>\n<dt id=\"can%20i%20integrate%20with%20my%20email%20%2F%20crm%20tools%3F\"><h3>Can I integrate with my email \/ CRM tools?<\/h3><\/dt>\n<dd><ul>\n<li><strong>Pro:<\/strong> Klaviyo, Mailchimp<\/li>\n<li><strong>Business:<\/strong> add Zapier, n8n, Make.com, Slack, and any HTTPS endpoint via custom webhook (with optional HMAC-SHA256 signing)<\/li>\n<li><strong>Enterprise:<\/strong> custom integrations on request<\/li>\n<\/ul>\n\n<p>Every integration card has a \"Send test event\" button and an activity log so you can verify wiring without writing code.<\/p><\/dd>\n<dt id=\"can%20i%20call%20the%20api%20from%20my%20own%20apps%3F\"><h3>Can I call the API from my own apps?<\/h3><\/dt>\n<dd><p>Yes \u2014 Business and above unlock a public API token (<code>cbt_pk_\u2026<\/code>) you generate from <strong>Configuration \u2192 Developer<\/strong>. The token authenticates external apps (CRMs, BI dashboards, Zapier, partner tools) on the <code>\/api\/public\/*<\/code> endpoints \u2014 read analytics summaries, push custom events, query plan info. CORS allowlist is per-shop and configurable. Endpoint reference with example request\/response bodies lives right inside the Developer tab.<\/p><\/dd>\n<dt id=\"what%20if%20i%20need%20help%3F\"><h3>What if I need help?<\/h3><\/dt>\n<dd><p>All plans: email support. Growth: priority email. Pro: priority email + live chat. Business: dedicated account manager. Enterprise: dedicated SLA with a named engineer.<\/p><\/dd>\n<dt id=\"do%20you%20offer%20a%20demo%20i%20can%20try%3F\"><h3>Do you offer a demo I can try?<\/h3><\/dt>\n<dd><p>Yes \u2014 a fully interactive demo lives at <a href=\"https:\/\/convertybot.com\/demo.html\">convertybot.com\/demo<\/a>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.4.3 \u2014 Chat persistence definitive fix + production cleanup<\/h4>\n\n<ul>\n<li>FIXED: Chat history loss on the first refresh after a cold-start conversation. The widget now adopts the survival-cookie sessionId BEFORE attempting localStorage recovery, so even when localStorage is missing or corrupt the chat session id stays canonical and the conversation is rehydrated from the backend on init.<\/li>\n<li>CHANGED: Removed all debug console.log statements from the storefront widget \u2014 clean production output.<\/li>\n<\/ul>\n\n<h4>2.4.2 \u2014 Persistence reliability hardening (round 3)<\/h4>\n\n<ul>\n<li>FIXED: Visitor-tally Mongo dedup wasn't gating fast enough on the very first refresh after a cold-start visit (the per-session marker only protects the same UserSession id, and replica read lag could miss a freshly-stamped cross-session marker). Added a Redis-backed dedup gate keyed by <code>(siteId, guestId|userId)<\/code> with 30-min TTL, with an in-process map fallback when Redis is unavailable \u2014 guaranteed single-count regardless of how many UserSessions get created for the same visitor.<\/li>\n<li>FIXED: One-shot legacy-storage purge on first init after upgrade. The pre-2.4.0 widget wrote chat sessions through a btoa\/escape \"encryption\" that occasionally failed UTF-8 round-trip on first refresh. Visitors carrying that legacy blob in localStorage from before the upgrade now have it cleared on first load (so the next save uses native JSON from a clean slate) instead of repeatedly tripping the silent decryption failure.<\/li>\n<li>DEBUG: Widget now prints <code>[ConvertyBot] frontend.js v2.4.2 loaded<\/code> to the browser console on every page load, so merchants can confirm in DevTools that the freshly-deployed JS is what the browser is actually executing (vs. a CDN \/ page-cache plugin \/ browser disk cache serving stale code).<\/li>\n<\/ul>\n\n<h4>2.4.1 \u2014 Persistence reliability hardening (round 2)<\/h4>\n\n<ul>\n<li>FIXED: Visitor counter still incremented on the first refresh after a cold start because the per-session dedup marker (<code>visitorCountedAt<\/code>) only protects the same UserSession id \u2014 when the engagement SDK was forced to create a new session (lost localStorage, ITP eviction, isActive flipped by <code>\/tracking\/session\/end<\/code>), the new session had no marker and got counted again. Tally now also dedups across all recent UserSessions for the same <code>(siteId, guestId|userId)<\/code> within the 30-minute window.<\/li>\n<li>FIXED: Chat history first-refresh loss when the JS persistence migration silently dropped the legacy encrypted entry. The widget now ALWAYS rehydrates from <code>GET \/api\/chat\/sessions\/:id\/messages<\/code> on init (using the survival cookie's session id) and adopts server history whenever it strictly contains more messages than the local copy.<\/li>\n<\/ul>\n\n<h4>2.4.0 \u2014 Persistence reliability fixes<\/h4>\n\n<p><strong>Strategy picker \u2014 silent ghost-revert fix<\/strong>\n* FIXED: Strategy save handler used the merchant's saved strategies list as the \"plan-allowed\" gate (typo in plan-cap check), so any new pick that wasn't already saved was silently reverted to Ghost. Now correctly resolves the plan-allowed list from the snapshot's plan tier (Free Trial \/ Starter \/ Growth \/ Pro \/ Business \/ Enterprise).<\/p>\n\n<p><strong>Chat history persistence \u2014 first-refresh data loss<\/strong>\n* FIXED: Chat session round-trip through home-grown btoa\/escape \"encryption\" silently dropped messages on the first refresh after a cold-start conversation (encryption returned null on certain UTF-8 byte patterns; loadSession then wiped localStorage without logging). Replaced with native JSON.stringify\/parse \u2014 the encryption never provided real security since the key was derivable from the domain. Migration path included for legacy encrypted entries.\n* NEW: Server-side fallback. If localStorage is empty\/corrupt but the chat session id cookie survives (private window first refresh, ITP eviction, iframe storage partition in Shopify embed), the widget rehydrates the conversation from <code>GET \/api\/chat\/sessions\/:id\/messages<\/code> so users never lose their chat.<\/p>\n\n<p><strong>Visitor counter \u2014 refresh inflation fix<\/strong>\n* FIXED: <code>\/api\/tracking\/session<\/code> was incrementing <code>visitorsThisMonth<\/code> on every successful POST, regardless of dedup. A single visitor refreshing N times appeared as N visitors. Now routes through the existing <code>tallyVisitorForSession<\/code> helper which honours the documented 30-minute inactivity gap (same convention as Google Analytics).\n* FIXED: <code>UserTrackingService.createUserSession<\/code> now reuses the most recent active UserSession for the same <code>(siteId, userId|guestId)<\/code> within the 30-minute window instead of always inserting a new doc \u2014 eliminating duplicate Visitor Journey rows on refresh.<\/p>\n\n<h4>2.3.3 \u2014 Custom branding, Developer tab, Public API<\/h4>\n\n<p><strong>Custom branding (Growth+)<\/strong>\n* NEW: WordPress Media Library pickers for bot avatar + widget header logo with live previews\n* NEW: Custom avatar renders in chat header AND next to every bot message bubble\n* NEW: Optional widget header logo replaces the chatbot name when set\n* IMPROVED: Branding auto-reverts to default Gabriel SVG + chatbot name when subscription becomes inactive<\/p>\n\n<p><strong>Developer tab (Configuration \u2192 Developer)<\/strong>\n* NEW: Plugin connection key (<code>sk_live_\u2026<\/code>) shown masked with show\/copy controls\n* NEW: Public API token (<code>cbt_pk_\u2026<\/code>) generator (crypto-strong, client-side) with regeneration confirmation\n* NEW: CORS origin allowlist for browser-side external apps\n* NEW: Quick-start <code>curl<\/code> examples with your real key + base URL prefilled\n* NEW: Expandable endpoint reference table \u2014 click any row to see example request\/response bodies for <code>\/merchant\/plan<\/code>, <code>\/merchant\/usage<\/code>, <code>\/chat<\/code>, <code>\/merchant\/strategies<\/code>, <code>\/api\/public\/ping<\/code>, <code>\/api\/public\/me<\/code>, <code>\/api\/public\/analytics\/summary<\/code>, <code>\/api\/public\/events<\/code><\/p>\n\n<p><strong>Public API (Business+)<\/strong>\n* NEW: <code>\/api\/public\/*<\/code> router authenticated by <code>cbt_pk_<\/code> token in <code>X-API-Key<\/code> header\n* NEW: <code>GET \/ping<\/code>, <code>GET \/me<\/code>, <code>GET \/analytics\/summary<\/code>, <code>POST \/events<\/code>\n* NEW: Per-shop CORS enforcement against the configured allowlist<\/p>\n\n<p><strong>Plan-status UX<\/strong>\n* CHANGED: \"Powered by ConvertyBot\" badge is now plan-controlled automatically (no manual toggle that did nothing). Pro+ hides it; Free\/Starter\/Growth show it. Read-only status row in the admin reflects the live plan.\n* CHANGED: \"Full white-label\" toggle replaced with the same plan-status row pattern. Auto-applied on Business\/Enterprise.<\/p>\n\n<p><strong>Strategy picker<\/strong>\n* FIXED: Strategy selection now persists correctly after refresh (PHP render no longer gated by stale plan check)\n* FIXED: Disabled checkbox no longer prevents the saved value from being submitted on the next save\n* IMPROVED: Single-active radio behaviour enforced both client-side and server-side<\/p>\n\n<p><strong>Configuration save reliability<\/strong>\n* FIXED: \"Leave site?\" dialog when clicking Save (form submit was falling through to native POST because legacy admin.js handler was gated on a class the V2 template didn't have)\n* FIXED: <code>engagement_tracking<\/code> option silently flipped to <code>false<\/code> on any partial-form save (with one-time auto-repair for affected installs)\n* FIXED: 11 boolean settings (chatbot_enabled, auto_open, sound_enabled, etc.) had inconsistent save semantics \u2014 now unified via a single form-level marker\n* FIXED: <code>show_cookie_consent<\/code> toggle didn't persist after refresh\n* FIXED: Stuck \"Saving\u2026\" button label after switching tabs (race condition between two submit handlers \u2014 old one removed)\n* FIXED: Public API token + CORS origins now persisted by the AJAX save handler, with format validation and URL sanitization<\/p>\n\n<p><strong>Subscription enforcement<\/strong>\n* NEW: Widget hides entirely on the storefront when subscription is cancelled \/ past grace period (no broken bubble for customers)\n* NEW: Hard-override <code>convertybot_widget_denied<\/code> flag set whenever <code>\/chat<\/code> returns 403\/429 \u2014 survives plan-snapshot cache lag\n* NEW: Strategies tab locks read-only when subscription inactive (server + client both enforce)\n* NEW: Analytics export client-side gate against plan features (cancelled subs can't trigger downloads)<\/p>\n\n<p><strong>Storefront tracking &amp; engagement<\/strong>\n* FIXED: Visitor journey + engagement events now correctly captured (the <code>engagement_tracking<\/code> regression above was blocking all SDK loads)\n* FIXED: 1:1 alignment \u2014 every new UserSession created equals exactly +1 on the \"Visitors analysed\" counter (Visitor Journey row count = subscription page counter, always)\n* FIXED: Conversation counter no longer increments by 2 per message (legacy duplicate increment in ChatService removed)\n* IMPROVED: 30-minute inactivity gap defines a new visit (standard web-analytics convention)<\/p>\n\n<p><strong>Onboarding tour<\/strong>\n* NEW: 14-step guided admin walkthrough on first install (replayable from the header)\n* NEW: SVG-mask spotlight, multi-page navigation via user-meta cursor\n* FIXED: <code>sendBeacon<\/code> save so progress survives navigation between admin pages (was a race condition causing back-and-forth loops)\n* FIXED: Configuration page URL now points to the correct slug (<code>convertybot-config<\/code>)<\/p>\n\n<p><strong>Dashboard rebuild<\/strong>\n* CHANGED: ConvertyBot main dashboard now reads live data from <code>\/merchant\/plan<\/code> (legacy custom WP tables abandoned \u2014 they were never populated in V3 and always showed 0)\n* NEW: Hero card with plan + status + next billing date, usage cards (conversations + visitors with progress bars), all-time totals, quick actions, system status<\/p>\n\n<p><strong>Plan snapshot freshness<\/strong>\n* IMPROVED: Plan snapshot transient TTL reduced from 5 minutes to 60 seconds so plan changes propagate to the storefront within a minute\n* NEW: Snapshot eagerly refreshed when admin loads Configuration or Dashboard pages<\/p>\n\n<p><strong>Subscription page polish<\/strong>\n* IMPROVED: Hero now shows \"Next billing: DATE (N days)\" + \"Current period started\" \u2014 backend <code>plan.billing.*<\/code> fields correctly read\n* IMPROVED: Usage cards now show real <code>conversationsUsed \/ conversationsLimit<\/code> (was showing <code>0 UNLIMITED<\/code> due to wrong field path)\n* IMPROVED: Feature comparison matrix shows real \u2713\/\u2014 marks across all six tiers (was all dashes)\n* CHANGED: API key block removed from this page \u2014 moved to the Developer tab to consolidate all API\/credentials UX<\/p>\n\n<p><strong>Integrations page<\/strong>\n* REDESIGNED: Now matches the cb2 design language used by Subscription \/ Configuration\n* NEW: Connect form is hidden behind the \"Connect\" button rather than always visible (no more duplicate Connect buttons)\n* NEW: HMAC secret field with explainer + crypto-strong \"Generate\" button + clear documentation of <code>X-Convertybot-Signature<\/code>\n* FIXED: \"What gets sent?\" sample-payloads drawer now populated correctly (PHP envelope was wrong)\n* NEW: Activity log + send-test buttons on every connector<\/p>\n\n<p><strong>Backend hardening<\/strong>\n* NEW: <code>\/merchant\/api-token<\/code> endpoint to sync the public token from the WP plugin to the backend Shop document\n* NEW: <code>requireActiveSubscription<\/code> middleware on <code>\/integrations<\/code> and <code>\/merchant\/strategies<\/code> (was missing \u2014 cancelled shops could still hit them)\n* FIXED: <code>\/api\/chat<\/code> validation no longer requires <code>context.currentUrl<\/code> so external API callers (Postman, Zapier) can call it\n* FIXED: Per-billing-period usage reset on tier change in support-backend plan-change paths (parallels Stripe webhook behaviour)\n* FIXED: Several v1 enum values (<code>free<\/code>, <code>cancelled<\/code>, <code>professional<\/code>, <code>trial<\/code>) replaced with v2 values across the support backend and admin dashboard<\/p>\n\n<h4>2.1.0 \u2014 Marketplace-quality admin<\/h4>\n\n<ul>\n<li>REDESIGNED: admin subscription page with modern hero, usage dashboard, plans grid with segmented monthly\/annual toggle, collapsible 9-feature comparison matrix, overage-packs section with per-conversation pricing, and a \"What's New\" changelog card<\/li>\n<li>REDESIGNED: progress bars with colour transitions at 50\/80\/100% thresholds<\/li>\n<li>ADDED: \"+N from packs\" chip on the conversation usage bar<\/li>\n<li>ADDED: Dynamic feature flag rendering \u2014 unavailable features are greyed out with an \"Upgrade to X\" hint<\/li>\n<li>ADDED: Opt-in dark mode tokens (via <code>prefers-color-scheme<\/code>)<\/li>\n<li>ADDED: Full plan-aware strategy picker in the Configuration page<\/li>\n<li>ADDED: Customer Portal button for one-click billing management<\/li>\n<li>IMPROVED: Widget frontend \u2014 gracefully hides on subscription inactive (403), shows fallback on quota exceeded (429), respects branding-removal on Pro+<\/li>\n<li>FIXED: Per-shop strategy allowlist persisted correctly via new <code>POST \/api\/merchant\/strategies<\/code> endpoint<\/li>\n<\/ul>\n\n<h4>2.0.0 \u2014 Six-tier pricing + Stripe realignment<\/h4>\n\n<ul>\n<li>NEW: Six plan tiers \u2014 Free Trial \/ Starter \/ Growth \/ Pro \/ Business \/ Enterprise<\/li>\n<li>NEW: Free Trial is now <strong>lifetime<\/strong> (100 conversations, no time limit) \u2014 no more 14-day clock<\/li>\n<li>NEW: Overage conversation packs (100\/500\/1,000 at $5\/$20\/$35)<\/li>\n<li>NEW: Stripe Customer Portal integration for self-serve billing<\/li>\n<li>NEW: Scheduled downgrades apply cleanly at end-of-period instead of immediately<\/li>\n<li>NEW: Past-due \u2192 expired 14-day grace window with automated transition<\/li>\n<li>NEW: Webhook idempotency via event-id deduplication<\/li>\n<li>NEW: Atomic conversation credit consumption \u2014 zero race conditions under load<\/li>\n<li>NEW: <code>POST \/api\/merchant\/{plan,usage,checkout,portal,change-plan,strategies}<\/code> merchant API surface<\/li>\n<li>NEW: Per-shop enabled-strategies allowlist, plan-capped<\/li>\n<li>RENAMED: Subscription statuses aligned with Stripe (trialing \/ active \/ past_due \/ expired \/ canceled)<\/li>\n<li>IMPROVED: Strategy identifiers \u2014 canonical English IDs (Ghost \/ Host \/ Guide \/ Advisor \/ Hunter \/ Closer \/ Blitz)<\/li>\n<li>IMPROVED: LLM cost model \u2014 Mistral Small 3 single-model architecture, 92\u201397% gross margin<\/li>\n<\/ul>\n\n<h4>1.0.32<\/h4>\n\n<ul>\n<li>NEW: AI-driven proactive engagement with 7 configurable levels (legacy naming)<\/li>\n<li>NEW: Behaviour-based smart triggers (product dwell, deep scroll, product comparison, cart idle, category browsing)<\/li>\n<li>NEW: Non-intrusive teaser notification card with bot avatar and AI-generated message<\/li>\n<li>NEW: AI-generated followups \u2014 every proactive message is contextual and unique<\/li>\n<li>NEW: Exit-intent overlay for high engagement levels<\/li>\n<li>NEW: Coupon eligibility detection auto-offers relevant discounts<\/li>\n<li>IMPROVED: Three-layer throttling to prevent message spam<\/li>\n<li>IMPROVED: Enriched API payloads with viewed products, page history, dwell times<\/li>\n<\/ul>\n\n<h4>1.0.31<\/h4>\n\n<ul>\n<li>FIXED: Checkout \"Service Unavailable\" when using AI-generated coupons<\/li>\n<li>FIXED: Backend API notification was using encrypted API key<\/li>\n<li>FIXED: Coupon usage not being tracked in backend<\/li>\n<li>IMPROVED: 2-second timeout for backend calls to prevent checkout hang<\/li>\n<\/ul>\n\n<h4>1.0.30<\/h4>\n\n<ul>\n<li>FIXED: Fatal error on product update (<code>wc_get_product_related_posts<\/code> \u2192 <code>wc_get_related_products<\/code>)<\/li>\n<\/ul>\n\n<h4>1.0.29<\/h4>\n\n<ul>\n<li>FIXED: Chat button not reappearing after minimising<\/li>\n<li>IMPROVED: Production-ready clean code (debug logs removed)<\/li>\n<\/ul>\n\n<h4>Older versions<\/h4>\n\n<p>For the full history from 1.0.10 onwards, see <a href=\"https:\/\/convertybot.com\/changelog\">convertybot.com\/changelog<\/a>.<\/p>","raw_excerpt":"Turn visitors into buyers with an AI salesperson that recommends products, crafts live coupons, and runs 7 conversion strategies \u2014 24\/7.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/271321","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=271321"}],"author":[{"embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/2wstechnologies"}],"wp:attachment":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=271321"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=271321"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=271321"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=271321"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=271321"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=271321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}