{"id":367837,"date":"2026-09-21T06:14:14","date_gmt":"2026-09-21T06:14:14","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ai-website-attendant\/"},"modified":"2026-09-21T06:15:44","modified_gmt":"2026-09-21T06:15:44","slug":"command-modular-ai-website-attendant","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/command-modular-ai-website-attendant\/","author":23564397,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Command Modular AI Website Attendant","header_author":"Command Modular","header_description":"Official Command Modular plugin for Command Modular AI Website Attendant\u2122 \u2014 first-party chat widget with WordPress REST reverse proxy (Wordfence\/adblocker friendly).","assets_banners_color":"7493a0","last_updated":"2026-09-21 06:15:44","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.aiwebsiteattendant.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":35,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"aiwebsiteattendant","date":"2026-09-21 06:15:44","revision":3704929}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3704901,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3704901,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3704901,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3704901,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3704901,"resolution":"1","location":"assets","locale":"","width":768,"height":295},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3704901,"resolution":"2","location":"assets","locale":"","width":768,"height":418},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3704901,"resolution":"3","location":"assets","locale":"","width":768,"height":410},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3704901,"resolution":"4","location":"assets","locale":"","width":768,"height":320}},"screenshots":{"1":"Connect Account tab \u2014 one-click OAuth setup with the AI Website Attendant portal.","2":"API Key connection tab \u2014 connect your site using an API key.","3":"Site Key connection tab \u2014 standalone widget-only setup using a public site key.","4":"Connected status screen \u2014 displays active connection details, subscription status, and disconnect options."}},"plugin_section":[],"plugin_tags":[2353,2364,2369,14090,2379],"plugin_category":[],"plugin_contributors":[281787],"plugin_business_model":[],"class_list":["post-367837","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-chatbot","plugin_tags-customer-support","plugin_tags-knowledge-base","plugin_tags-live-chat","plugin_contributors-aiwebsiteattendant","plugin_committers-aiwebsiteattendant"],"banners":{"banner":"https:\/\/ps.w.org\/command-modular-ai-website-attendant\/assets\/banner-772x250.png?rev=3704901","banner_2x":"https:\/\/ps.w.org\/command-modular-ai-website-attendant\/assets\/banner-1544x500.png?rev=3704901","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/command-modular-ai-website-attendant\/assets\/icon-128x128.png?rev=3704901","icon_2x":"https:\/\/ps.w.org\/command-modular-ai-website-attendant\/assets\/icon-256x256.png?rev=3704901","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/command-modular-ai-website-attendant\/assets\/screenshot-1.png?rev=3704901","caption":"Connect Account tab \u2014 one-click OAuth setup with the AI Website Attendant portal."},{"src":"https:\/\/ps.w.org\/command-modular-ai-website-attendant\/assets\/screenshot-2.png?rev=3704901","caption":"API Key connection tab \u2014 connect your site using an API key."},{"src":"https:\/\/ps.w.org\/command-modular-ai-website-attendant\/assets\/screenshot-3.png?rev=3704901","caption":"Site Key connection tab \u2014 standalone widget-only setup using a public site key."},{"src":"https:\/\/ps.w.org\/command-modular-ai-website-attendant\/assets\/screenshot-4.png?rev=3704901","caption":"Connected status screen \u2014 displays active connection details, subscription status, and disconnect options."}],"raw_content":"<!--section=description-->\n<p>Command Modular AI Website Attendant connects your WordPress site to the AI Website Attendant\u2122 service and loads the chat widget without pasting third-party scripts that Wordfence, CSP, and ad blockers often block.<\/p>\n\n<p><strong>Important:<\/strong> This plugin requires an active <a href=\"https:\/\/www.aiwebsiteattendant.com\">AI Website Attendant<\/a> account and connected website. The free plugin alone cannot answer visitor chats without that service.<\/p>\n\n<h4>Connect methods<\/h4>\n\n<ol>\n<li><strong>Connect Account<\/strong> (recommended) \u2014 one-click OAuth to your AI Website Attendant\u2122 portal.<\/li>\n<li><strong>API Key<\/strong> \u2014 master or personal token from Settings \u2192 Integrations.<\/li>\n<li><strong>Site Key<\/strong> \u2014 widget-only mode using the public embed site key.<\/li>\n<\/ol>\n\n<h4>First-party architecture<\/h4>\n\n<p>The visitor browser talks only to your WordPress origin (<code>\/cmaiwa\/embed.js<\/code> and <code>\/wp-json\/cmaiwa\/v1\/...<\/code>). WordPress uses <code>wp_remote_*<\/code> to reach the AI Website Attendant\u2122 API server-to-server. REST routes require a matching connected site key in permission_callback (constant-time compare) before any upstream proxy request is made.<\/p>\n\n<h4>External services<\/h4>\n\n<p>This plugin requires the AI Website Attendant hosted service. It does not work as a standalone chatbot. From your WordPress server it contacts the following first-party endpoints operated by AI Website Attendant (Command Modular). No visitor browser calls are made directly to third-party domains when the plugin is used as intended.<\/p>\n\n<p>If you use Wordfence or similar, allow the REST namespace <code>cmaiwa\/v1<\/code> if requested.<\/p>\n\n<h4>AI Website Attendant API<\/h4>\n\n<p>This service is used to connect your WordPress site to your AI Website Attendant account and to generate chat answers from your site's knowledge base.<\/p>\n\n<p>The plugin sends data to <code>https:\/\/api.aiwebsiteattendant.com\/api\/v1<\/code> (or a custom Upstream API URL you configure) in these cases:<\/p>\n\n<ul>\n<li>When an administrator uses Connect Account: the one-time pairing code, CSRF state, and the WordPress site hostname are posted to <code>\/integrations\/wordpress\/exchange<\/code>.<\/li>\n<li>When an administrator uses API Key connect: the API token (Authorization header), platform identifier (<code>wordpress<\/code>), WordPress hostname, and optional site ID are posted to <code>\/integrations\/connect-with-key<\/code>.<\/li>\n<li>When a visitor uses the chat widget: WordPress reverse-proxies the request to the embed API. That can include chat message text, session identifiers, widget config requests, feedback, optional voice audio (transcribe), link-preview URLs, and the site Origin\/Referer.<\/li>\n<\/ul>\n\n<p>This service is provided by AI Website Attendant: <a href=\"https:\/\/apps.aiwebsiteattendant.com\/terms\">Terms of Service<\/a>, <a href=\"https:\/\/apps.aiwebsiteattendant.com\/privacy\">Privacy Policy<\/a>.<\/p>\n\n<h4>AI Website Attendant portal and script CDN<\/h4>\n\n<p>This service is used for account connection in wp-admin and to fetch the official chat widget scripts so WordPress can serve them first-party.<\/p>\n\n<p>The plugin contacts <code>https:\/\/apps.aiwebsiteattendant.com<\/code> in these cases:<\/p>\n\n<ul>\n<li>When an administrator starts Connect Account: the browser is redirected to the portal with the WordPress callback URL, a CSRF state value, and the site hostname.<\/li>\n<li>When the storefront loads the widget: WordPress requests <code>embed.js<\/code> and <code>embed.widget.js<\/code> from the CDN (the public site key may be included as a query parameter).<\/li>\n<li>When an administrator opens Dashboard or Support from the plugin settings screen.<\/li>\n<\/ul>\n\n<p>This service is provided by AI Website Attendant: <a href=\"https:\/\/apps.aiwebsiteattendant.com\/terms\">Terms of Service<\/a>, <a href=\"https:\/\/apps.aiwebsiteattendant.com\/privacy\">Privacy Policy<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate <strong>Command Modular AI Website Attendant<\/strong>.<\/li>\n<li>Create or sign in to an AI Website Attendant account at <a href=\"https:\/\/apps.aiwebsiteattendant.com\">apps.aiwebsiteattendant.com<\/a>.<\/li>\n<li>Open <strong>Command Modular AI Website Attendant<\/strong> in the WordPress admin menu.<\/li>\n<li>Choose Connect Account, API Key, or Site Key and finish connecting a website.<\/li>\n<li>Visit a public page to see the widget.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20paid%20or%20registered%20account%3F\"><h3>Do I need a paid or registered account?<\/h3><\/dt>\n<dd><p>Yes. The plugin connects your WordPress site to AI Website Attendant\u2122. You need an account (and an active subscription for production use) from the AI Website Attendant portal.<\/p><\/dd>\n<dt id=\"why%20not%20paste%20the%20cdn%20script%3F\"><h3>Why not paste the CDN script?<\/h3><\/dt>\n<dd><p>Third-party <code>fetch<\/code> to the API is often blocked. This plugin proxies scripts and API calls first-party through your WordPress site.<\/p><\/dd>\n<dt id=\"what%20visitor%20data%20is%20sent%20externally%3F\"><h3>What visitor data is sent externally?<\/h3><\/dt>\n<dd><p>When a visitor uses the chat widget, message content and related request metadata needed for chat (such as session identifiers) are sent from WordPress to the AI Website Attendant\u2122 API for your connected site. See the External services section, the <a href=\"https:\/\/apps.aiwebsiteattendant.com\/terms\">Terms of Service<\/a>, and the <a href=\"https:\/\/apps.aiwebsiteattendant.com\/privacy\">Privacy Policy<\/a>.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20api%20or%20cdn%20url%3F\"><h3>Can I change the API or CDN URL?<\/h3><\/dt>\n<dd><p>Yes. After connect, the plugin stores the Upstream API URL returned by the service. Advanced installs can also set portal\/CDN defaults in plugin settings stored in WordPress options.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release with Connect Account (OAuth), API Key, and Site Key modes.<\/li>\n<li>First-party embed script proxy and REST reverse proxy for chat APIs.<\/li>\n<li>Dashboard and Support links in the admin settings screen.<\/li>\n<li>Subscription expiry and next recurring date display with an expired-subscription alert.<\/li>\n<li>Documented AI Website Attendant API and portal\/CDN usage in External services, including data sent and links to Terms of Service and Privacy Policy.<\/li>\n<\/ul>","raw_excerpt":"Command Modular plugin for AI Website Attendant\u2122 \u2014 first-party chat widget with WordPress REST reverse proxy.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/367837","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=367837"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/aiwebsiteattendant"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=367837"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=367837"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=367837"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=367837"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=367837"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=367837"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}