{"id":310577,"date":"2026-05-27T10:52:47","date_gmt":"2026-05-27T10:52:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/timesaverbot\/"},"modified":"2026-05-27T12:08:41","modified_gmt":"2026-05-27T12:08:41","slug":"timesaverbot","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/timesaverbot\/","author":23490289,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.1","stable_tag":"1.1.1","tested":"6.9.4","requires":"6.0","requires_php":"8.1","requires_plugins":null,"header_name":"TimeSaverBot","header_author":"timesaverbot","header_description":"Connect your WordPress site to TimeSaverBot SaaS \u2014 AI-powered chatbot, live-chat widget, and lead collection. This plugin communicates with the external service at app.timesaverbot.com for provisioning, authentication, and embedded settings UI.","assets_banners_color":"","last_updated":"2026-05-27 12:08:41","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/timesaverbot.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":45,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"timesaverbot","date":"2026-05-27 10:52:32"},"1.1.1":{"tag":"1.1.1","author":"timesaverbot","date":"2026-05-27 12:08:41"}},"upgrade_notice":{"1.1.1":"<p>Bug fix: corrects the API host used for provisioning. Recommended for all users \u2014 earlier versions could fail to complete the setup wizard.<\/p>","1.1.0":"<p>Chat widget now appears automatically on your site after completing the setup wizard. No manual script embedding required.<\/p>","1.0.0":"<p>Documentation and compliance update. No functional changes \u2014 safe to upgrade.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3550629,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3550629,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0","1.1.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3550629,"resolution":"1","location":"assets","locale":"","width":1280,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3550629,"resolution":"2","location":"assets","locale":"","width":1280,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3550629,"resolution":"3","location":"assets","locale":"","width":1280,"height":900}},"screenshots":{"1":"Setup wizard \u2014 Stage 0 introduction page.","2":"Dashboard with settings status, plan usage, and monthly metrics.","3":"Bot Settings configuration via embedded iframe."}},"plugin_section":[],"plugin_tags":[2353,2364,2369,2379,12770],"plugin_category":[41,47],"plugin_contributors":[264623],"plugin_business_model":[],"class_list":["post-310577","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-chatbot","plugin_tags-customer-support","plugin_tags-live-chat","plugin_tags-webchat","plugin_category-communication","plugin_category-education-and-support","plugin_contributors-timesaverbot","plugin_committers-timesaverbot"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/timesaverbot\/assets\/icon-128x128.png?rev=3550629","icon_2x":"https:\/\/ps.w.org\/timesaverbot\/assets\/icon-256x256.png?rev=3550629","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/timesaverbot\/assets\/screenshot-1.png?rev=3550629","caption":"Setup wizard \u2014 Stage 0 introduction page."},{"src":"https:\/\/ps.w.org\/timesaverbot\/assets\/screenshot-2.png?rev=3550629","caption":"Dashboard with settings status, plan usage, and monthly metrics."},{"src":"https:\/\/ps.w.org\/timesaverbot\/assets\/screenshot-3.png?rev=3550629","caption":"Bot Settings configuration via embedded iframe."}],"raw_content":"<!--section=description-->\n<p>TimeSaverBot integrates your WordPress site with the <a href=\"https:\/\/app.timesaverbot.com\/\">TimeSaverBot<\/a> SaaS platform. A guided setup wizard provisions your workspace automatically \u2014 no separate account registration required.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>AI-powered chatbot with customizable prompt instructions<\/li>\n<li>Live-chat widget with appearance and behavior settings<\/li>\n<li>Lead collection and management dashboard<\/li>\n<li>Knowledge base integration for enriching bot context<\/li>\n<li>Admin dashboard with usage metrics (dialogs, leads, conversion rate)<\/li>\n<li>One-click navigation to Chat, Leads, and Knowledge Base with automatic authentication<\/li>\n<\/ul>\n\n<p><strong>How it works:<\/strong><\/p>\n\n<ol>\n<li>Activate the plugin and complete the setup wizard.<\/li>\n<li>Configure your bot prompt and widget appearance from within WordPress admin.<\/li>\n<li>The chat widget appears on your site automatically \u2014 no manual code changes required.<\/li>\n<li>Manage conversations and leads from the WordPress admin menu.<\/li>\n<\/ol>\n\n<h4>Third-Party Service Disclosure<\/h4>\n\n<p>This plugin relies on the <strong>TimeSaverBot SaaS platform<\/strong> hosted at <code>app.timesaverbot.com<\/code>. The following external connections are made:<\/p>\n\n<ol>\n<li><strong>Provisioning API<\/strong> (<code>POST \/Provision\/WordPressInstall<\/code>) \u2014 Called once during the setup wizard to create your workspace. Sends: site URL, installation ID, WordPress version, plugin version, admin email.<\/li>\n<li><strong>Dashboard Summary API<\/strong> (<code>GET \/Provision\/WordPressDashboardSummary<\/code>) \u2014 Called when loading the Dashboard page. Returns aggregated usage metrics.<\/li>\n<li><strong>Operation Token API<\/strong> (<code>POST \/Auth\/CreateOperationToken<\/code>) \u2014 Called when you navigate to Chat, Leads, or Knowledge Base. Issues a short-lived authentication token.<\/li>\n<li><strong>Iframe embeds<\/strong> \u2014 Bot Settings and Widget Settings pages load the TimeSaverBot configuration UI inside an iframe from <code>app.timesaverbot.com<\/code>.<\/li>\n<li><strong>Silent login redirects<\/strong> \u2014 Chat, Leads, and Knowledge Base menu items redirect to <code>app.timesaverbot.com<\/code> with automatic authentication.<\/li>\n<li><strong>Chat widget script<\/strong> (<code>embed.js<\/code>) \u2014 Loaded on every frontend page after wizard completion. The script is served from <code>widget.timesaverbot.com<\/code> and renders the chat widget inside an iframe. It sends your tenant ID and channel ID as data attributes.<\/li>\n<\/ol>\n\n<p>All server-to-server API calls are signed with HMAC-SHA256 using a per-installation secret. No data is sent to any other third-party service.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/app.timesaverbot.com\/terms\">TimeSaverBot Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/app.timesaverbot.com\/privacy\">TimeSaverBot Privacy Policy<\/a><\/li>\n<\/ul>\n\n<h3>Privacy<\/h3>\n\n<p>TimeSaverBot connects to the TimeSaverBot SaaS platform at <code>app.timesaverbot.com<\/code>. This section documents all data transmitted.<\/p>\n\n<h4>Data sent during provisioning (one-time, on wizard completion)<\/h4>\n\n<ul>\n<li>Normalized site hostname (e.g. <code>example.com<\/code>)<\/li>\n<li>Installation UUID (locally generated, not tied to any personal data)<\/li>\n<li>Raw site URL, WordPress version, plugin version (diagnostic metadata)<\/li>\n<li>Admin email address (used to create a technical user for your workspace)<\/li>\n<\/ul>\n\n<h4>Data sent during normal operation<\/h4>\n\n<ul>\n<li><strong>Dashboard<\/strong>: HMAC-signed GET request with installation ID header. Returns aggregate metrics only.<\/li>\n<li><strong>Navigation (Chat\/Leads\/Knowledge Base)<\/strong>: HMAC-signed POST request with installation ID and requested scope. Returns a one-time authentication token.<\/li>\n<li><strong>Settings (Bot\/Widget)<\/strong>: After initial authentication, the iframe communicates directly between the browser and TimeSaverBot. The WordPress plugin does not relay this traffic.<\/li>\n<\/ul>\n\n<h4>Data stored locally<\/h4>\n\n<p>Installation ID, HMAC secret, tenant ID, connector channel ID, process ID, wizard state. All stored in the <code>wp_options<\/code> table under the <code>tsvbot_wp_settings<\/code> key.<\/p>\n\n<h4>Data stored remotely<\/h4>\n\n<p>Chatbot configuration, conversations, leads, and usage metrics are stored on the TimeSaverBot platform. See the <a href=\"https:\/\/app.timesaverbot.com\/privacy\">TimeSaverBot Privacy Policy<\/a> for retention and deletion policies.<\/p>\n\n<h4>No additional third parties<\/h4>\n\n<p>This plugin does not transmit data to any service other than <code>app.timesaverbot.com<\/code>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>timesaverbot<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Follow the setup wizard that appears automatically:\n\n<ul>\n<li><strong>Stage 0<\/strong> \u2014 Read the introduction and click \"Start setup\" to provision your workspace.<\/li>\n<li><strong>Stage 1<\/strong> \u2014 Configure your bot prompt. Once saved, the setup completes automatically.<\/li>\n<\/ul><\/li>\n<li>You are now on the Dashboard. Use the admin menu to manage your chatbot.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20timesaverbot%20account%3F\"><h3>Do I need a TimeSaverBot account?<\/h3><\/dt>\n<dd><p>No. The setup wizard automatically provisions a workspace for your site. No separate registration or login is required.<\/p><\/dd>\n<dt id=\"what%20data%20is%20sent%20to%20timesaverbot%20during%20setup%3F\"><h3>What data is sent to TimeSaverBot during setup?<\/h3><\/dt>\n<dd><p>When you click \"Start setup\" in the wizard, the plugin sends:<\/p>\n\n<ul>\n<li>Your site URL (normalized to a canonical hostname)<\/li>\n<li>A unique installation identifier (UUID, generated locally)<\/li>\n<li>Your WordPress version and plugin version<\/li>\n<li>The admin email address (used to create a technical user in your workspace)<\/li>\n<\/ul>\n\n<p>This is the only time these details are transmitted. Subsequent API calls use HMAC-signed requests that include only the installation ID in a request header.<\/p><\/dd>\n<dt id=\"what%20data%20is%20sent%20during%20normal%20usage%3F\"><h3>What data is sent during normal usage?<\/h3><\/dt>\n<dd><ul>\n<li><strong>Dashboard page load<\/strong>: A signed GET request fetches usage metrics (dialog counts, lead counts, plan info). No site content is transmitted.<\/li>\n<li><strong>Chat \/ Leads \/ Knowledge Base navigation<\/strong>: A signed POST request obtains a short-lived, one-time authentication token. The token is exchanged in the browser for a session \u2014 no WordPress credentials are shared.<\/li>\n<li><strong>Bot Settings \/ Widget Settings<\/strong>: These pages load inside an iframe. Configuration data is exchanged directly between your browser and TimeSaverBot \u2014 the WordPress plugin is not involved after authentication.<\/li>\n<\/ul><\/dd>\n<dt id=\"where%20is%20my%20data%20stored%3F\"><h3>Where is my data stored?<\/h3><\/dt>\n<dd><p>Plugin settings (installation ID, secret, tenant IDs) are stored locally in WordPress options (<code>wp_options<\/code> table). Your chatbot configuration, conversations, and leads are stored on the TimeSaverBot platform. No data is stored on any other third-party service.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20deactivate%20the%20plugin%3F\"><h3>What happens when I deactivate the plugin?<\/h3><\/dt>\n<dd><p>All settings and your installation identity are preserved. Reactivating the plugin restores your connection to TimeSaverBot without re-running the wizard. Your workspace and data on TimeSaverBot remain intact.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20uninstall%20%28delete%29%20the%20plugin%3F\"><h3>What happens when I uninstall (delete) the plugin?<\/h3><\/dt>\n<dd><p>Plugin settings are removed from the WordPress database. Your workspace on TimeSaverBot is <strong>not<\/strong> deleted \u2014 contact TimeSaverBot support if you want your data removed from the platform.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20plugin%20on%20a%20multisite%20installation%3F\"><h3>Can I use this plugin on a multisite installation?<\/h3><\/dt>\n<dd><p>The plugin is designed for single-site WordPress installations. Multisite support is not currently available.<\/p><\/dd>\n<dt id=\"how%20does%20the%20chat%20widget%20appear%20on%20my%20site%3F\"><h3>How does the chat widget appear on my site?<\/h3><\/dt>\n<dd><p>After completing the setup wizard, the plugin automatically injects the TimeSaverBot chat widget script into every frontend page via <code>wp_footer<\/code>. No manual code changes are needed. The widget does not appear on wp-admin pages. If you deactivate the plugin or reset the wizard, the widget is removed automatically.<\/p><\/dd>\n<dt id=\"can%20i%20override%20the%20widget%20script%20url%3F\"><h3>Can I override the widget script URL?<\/h3><\/dt>\n<dd><p>Yes. Add <code>define('TSVBOT_WIDGET_URL', 'https:\/\/your-custom-url.com');<\/code> to your <code>wp-config.php<\/code> before the plugin loads. The default is <code>https:\/\/widget.timesaverbot.com<\/code>.<\/p><\/dd>\n<dt id=\"the%20iframe%20pages%20are%20blank%20or%20blocked\"><h3>The iframe pages are blank or blocked<\/h3><\/dt>\n<dd><p>See the Troubleshooting section on the Help page inside the plugin (TimeSaverBot \u2192 Help), or refer to the plugin's SECURITY.md file for CSP\/frame-ancestors configuration requirements.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fix: point plugin API calls to api.timesaverbot.com (previously targeted app.timesaverbot.com, causing provisioning requests to fail with 405)<\/li>\n<li>Updated Help page diagnostics to reference the correct API host<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Automatic frontend widget injection \u2014 chat widget appears on all frontend pages after wizard completion<\/li>\n<li>Widget absent on wp-admin pages and when wizard is incomplete<\/li>\n<li>Added TSVBOT_WIDGET_URL constant (overridable in wp-config.php)<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>WordPress.org documentation and compliance: full readme.txt, privacy disclosure, security docs, Quick Start, troubleshooting guide<\/li>\n<li>Help page expanded with detailed Quick Start and troubleshooting for 4 key failure scenarios<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Wizard Stages 1-3 UI with iframe embeds, navigation controls, and completion flow<\/li>\n<li>Dashboard page with settings status, plan and usage, last 30 days metrics<\/li>\n<li>Silent login links for Chat, Leads, and Knowledge Base with redirect notice page<\/li>\n<li>Iframe pages for Bot Settings and Widget Settings with embedded Nuxt UI<\/li>\n<li>Audit logging for provisioning and authentication events<\/li>\n<li>HMAC-SHA256 request signing with replay protection (timestamp + nonce)<\/li>\n<li>Operation token and silent login exchange (short-lived, one-time tokens)<\/li>\n<li>Call TimeSaverBot provisioning API on wizard Stage 0 to Stage 1 transition<\/li>\n<li>Store tenant ID, connector ID, process ID, and installation secret in WP options<\/li>\n<li>Add TSVBOT_API_URL constant (overridable in wp-config.php)<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Generate and persist stable installation ID (UUID v4) across deactivation\/reactivation<\/li>\n<li>Normalize site URL to canonical host for stable identity binding<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial plugin skeleton with activation\/deactivation hooks<\/li>\n<li>Setup wizard with Stage 0 intro page<\/li>\n<li>Admin menu with 8 navigation items (Dashboard, Chat, Leads, Bot Settings, Widget Settings, Knowledge Base, Packages, Help)<\/li>\n<li>Settings storage and version-based migration runner<\/li>\n<\/ul>","raw_excerpt":"Connect your WordPress site to TimeSaverBot SaaS \u2014 AI-powered chatbot, live-chat widget, and lead collection platform.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/310577","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=310577"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/timesaverbot"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=310577"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=310577"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=310577"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=310577"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=310577"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=310577"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}