{"id":324315,"date":"2026-06-29T13:24:19","date_gmt":"2026-06-29T13:24:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/aivastark-widget\/"},"modified":"2026-10-17T06:56:20","modified_gmt":"2026-10-17T06:56:20","slug":"aivastark-widget","status":"publish","type":"plugin","link":"https:\/\/kea.wordpress.org\/plugins\/aivastark-widget\/","author":23490723,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.5.0","stable_tag":"2.5.0","tested":"6.8.11","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Aivastark - AI Agent","header_author":"Aivastark","header_description":"Adds the Aivastark AI support chat widget to your site. One field: your Widget Key. Works via shortcode [aivastark key=\"...\"] or site-wide.","assets_banners_color":"080a0e","last_updated":"2026-10-17 06:56:20","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.aivastark.com\/wordpress-plugin","header_author_uri":"https:\/\/www.aivastark.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":411,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.3.0":{"tag":"2.3.0","author":"aivastark","date":"2026-06-29 13:23:45","revision":3590149},"2.3.1":{"tag":"2.3.1","author":"aivastark","date":"2026-07-07 12:24:15","revision":3599025},"2.4.0":{"tag":"2.4.0","author":"aivastark","date":"2026-07-25 14:51:52","revision":3622553},"2.5.0":{"tag":"2.5.0","author":"aivastark","date":"2026-10-17 06:56:20","revision":3751495}},"upgrade_notice":{"2.5.0":"<p>Aivastark becomes a full-screen app in wp-admin: inbox, knowledge base, leads, analytics and more next to the widget editor, plus Display rules for where and when the widget loads. Nothing changes on your site until you edit a rule.<\/p>","2.3.1":"<p>Plugin renamed to &quot;Aivastark - AI Agent&quot;. No settings change or action required \u2014 everything keeps working as before.<\/p>","2.3.0":"<p>Adds an optional one-question feedback prompt when you deactivate the plugin. Entirely skippable and never blocks deactivation. No settings change required.<\/p>","2.2.0":"<p>Customize your widget from inside WordPress. Optional one-click Connect adds an embedded editor under Aivastark \u2192 Customize Widget. Existing key\/shortcode setups keep working unchanged \u2014 no action needed after upgrading.<\/p>","2.1.0":"<p>Compliance and cleanup release. Adds proper uninstall handling and the disclosures required by the WordPress.org plugin directory. No settings change required after upgrading.<\/p>","2.0.0":"<p>Major simplification \u2014 you only need your Widget Key now. After upgrading, re-open <strong>Settings \u2192 Aivastark Widget<\/strong> and paste your Widget Key (if it was blank) from the Integrations page in your dashboard.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3590162,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3590162,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3590149,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3590149,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.3.0","2.3.1","2.4.0","2.5.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3590149,"resolution":"1","location":"assets","locale":"","width":2560,"height":1600},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3590149,"resolution":"2","location":"assets","locale":"","width":2560,"height":1600},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3590149,"resolution":"3","location":"assets","locale":"","width":2560,"height":1600}},"screenshots":{"1":"The single-field settings page \u2014 paste your Widget Key and save.","2":"The widget open on a live WordPress site.","3":"Lead capture form inside the widget."}},"plugin_section":[],"plugin_tags":[2353,5707,2364,10916,1104],"plugin_category":[41],"plugin_contributors":[269469],"plugin_business_model":[],"class_list":["post-324315","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-chat","plugin_tags-chatbot","plugin_tags-livechat","plugin_tags-support","plugin_category-communication","plugin_contributors-aivastark","plugin_committers-aivastark"],"banners":{"banner":"https:\/\/ps.w.org\/aivastark-widget\/assets\/banner-772x250.png?rev=3590149","banner_2x":"https:\/\/ps.w.org\/aivastark-widget\/assets\/banner-1544x500.png?rev=3590149","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/aivastark-widget\/assets\/icon-128x128.png?rev=3590162","icon_2x":"https:\/\/ps.w.org\/aivastark-widget\/assets\/icon-256x256.png?rev=3590162","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/aivastark-widget\/assets\/screenshot-1.png?rev=3590149","caption":"The single-field settings page \u2014 paste your Widget Key and save."},{"src":"https:\/\/ps.w.org\/aivastark-widget\/assets\/screenshot-2.png?rev=3590149","caption":"The widget open on a live WordPress site."},{"src":"https:\/\/ps.w.org\/aivastark-widget\/assets\/screenshot-3.png?rev=3590149","caption":"Lead capture form inside the widget."}],"raw_content":"<!--section=description-->\n<p><strong>Aivastark Widget<\/strong> adds the Aivastark AI support chat widget to your WordPress site in seconds. Trained on your own knowledge base, it answers visitor questions 24\/7 and hands off to a human agent when needed.<\/p>\n\n<p><strong>One field. That's it.<\/strong> Paste your Widget Key from the Aivastark dashboard and the widget is live site-wide. You can also use the <code>[aivastark key=\"...\"]<\/code> shortcode on individual pages.<\/p>\n\n<p><strong>Run it without leaving WordPress.<\/strong> Click <strong>Connect<\/strong> once to securely link your site to your Aivastark project. Aivastark then opens as a full-screen app inside wp-admin, with its own navigation: the <strong>Widget editor<\/strong>, the <strong>Inbox<\/strong>, the <strong>Knowledge base<\/strong>, <strong>Leads<\/strong>, <strong>Analytics<\/strong>, <strong>AI agent<\/strong> settings and more, already signed in. No second login each time.<\/p>\n\n<p><strong>Decide where it shows.<\/strong> <strong>Display rules<\/strong> choose the pages (by type, by page or by URL path), the devices, the visitors (everyone, logged out, logged in, or not certain roles) and how early the widget loads, all without code.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>AI chat trained on your knowledge base (PDFs, URLs, documents)<\/li>\n<li>Fully white-label \u2014 your brand, your colors, your logo<\/li>\n<li>Lead capture (trigger by message count, keyword, idle time, or manual)<\/li>\n<li>Live agent handoff via realtime notifications<\/li>\n<li>A full-screen Aivastark app inside wp-admin: widget editor, inbox, knowledge base, leads, tickets, analytics and AI agent settings, via a secure one-click connection<\/li>\n<li>Display rules: show the widget on every page, only on some, or everywhere but some; desktop, phones or both; everyone, logged-out visitors or logged-in users; hide it from chosen roles<\/li>\n<li>Load the widget right away, after a delay, or on the visitor's first interaction<\/li>\n<li>Knowledge sync: your knowledge base flags itself when you publish or update content here<\/li>\n<li>Or manage everything from the Aivastark dashboard \u2014 your choice<\/li>\n<li>Domain whitelisting enforced server-side<\/li>\n<li>Conversation and rate limits enforced server-side<\/li>\n<li>Markdown-formatted responses<\/li>\n<li>Lightweight \u2014 the widget is loaded asynchronously and never blocks page rendering<\/li>\n<\/ul>\n\n<h4>Get a Widget Key<\/h4>\n\n<p>You need a free Aivastark account. Sign up at <a href=\"https:\/\/www.aivastark.com\">aivastark.com<\/a>, create a project, and copy the Widget Key from the <strong>Integrations<\/strong> page.<\/p>\n\n<h4>Third-party service notice<\/h4>\n\n<p>This plugin is a client for the Aivastark hosted service. To function, it loads the widget script from <code>https:\/\/www.aivastark.com\/widget.js<\/code> and chat conversations are processed by the Aivastark backend. Full disclosure of every endpoint and the data sent is in the <strong>External services<\/strong> section below.<\/p>\n\n<p>By installing this plugin you agree to the Aivastark <a href=\"https:\/\/www.aivastark.com\/terms\">Terms of Service<\/a> and <a href=\"https:\/\/www.aivastark.com\/privacy\">Privacy Policy<\/a>.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Aivastark hosted service to function. Without this connection there is no chat widget \u2014 the plugin cannot work locally only.<\/p>\n\n<h4>1. Widget script (CDN)<\/h4>\n\n<ul>\n<li><strong>What it does<\/strong>: Loads the JavaScript file that renders the chat widget on your site's front-end.<\/li>\n<li><strong>Endpoint<\/strong>: <code>https:\/\/www.aivastark.com\/widget.js<\/code><\/li>\n<li><strong>When<\/strong>: On every front-end page load where the Widget Key is configured (site-wide or via shortcode).<\/li>\n<li><strong>Data sent<\/strong>: A standard browser HTTP GET \u2014 User-Agent, Referer, IP address. No site content, no visitor PII.<\/li>\n<\/ul>\n\n<h4>2. Chat backend (runtime, browser \u2192 Aivastark API)<\/h4>\n\n<ul>\n<li><strong>What it does<\/strong>: Handles the chat conversation between the visitor and the AI assistant.<\/li>\n<li><strong>Endpoint<\/strong>: <code>https:\/\/www.aivastark.com\/api\/*<\/code> (subdomains may be used; all requests originate from the visitor's browser, not from the WordPress server).<\/li>\n<li><strong>When<\/strong>: Only when a visitor actively opens the widget and sends a message. No requests are made until the visitor interacts.<\/li>\n<li><strong>Data sent<\/strong>: The visitor's chat messages, the Widget Key (identifies your project), an anonymous session ID, the page URL the chat was opened from, and standard browser headers. If the visitor submits a lead form inside the widget, the fields they enter (typically name, email, phone) are also sent.<\/li>\n<li><strong>Data sent \u2014 only if you enable \"Know your logged-in visitors\"<\/strong> (off by default): for signed-in visitors only, their WordPress user ID, display name, email address and primary role, so the assistant can address them by name and avoid re-asking for details. Nothing extra is sent for visitors who are not logged in, and the setting can be switched off at any time from <strong>Aivastark \u2192 Settings<\/strong>.<\/li>\n<\/ul>\n\n<h4>3. Pairing &amp; customization (optional \u2014 only if you click Connect)<\/h4>\n\n<ul>\n<li><strong>What it does<\/strong>: Securely links this WordPress site to one Aivastark project (OAuth Authorization Code + PKCE) and lets you open the Aivastark sections (widget editor, inbox, knowledge base, leads, analytics and the rest) inside wp-admin. The site stores a scoped, revocable access token; only a hashed copy is kept on the server. The token is used to mint a one-time sign-in ticket each time you open one of those sections.<\/li>\n<li><strong>Endpoints<\/strong>: <code>https:\/\/xckrihmmdwddvcwohvaz.supabase.co\/functions\/v1\/wordpress-token<\/code> and <code>...\/wordpress-sso<\/code> (called from your WordPress server). The connection-approval page <code>https:\/\/www.aivastark.com\/authorize\/wordpress<\/code> and the Aivastark app <code>https:\/\/www.aivastark.com\/embed\/wp\/app<\/code> are loaded in your browser (the latter inside an iframe in wp-admin, where it then shows pages under <code>https:\/\/www.aivastark.com\/dashboard<\/code>).<\/li>\n<li><strong>When<\/strong>: Only after you click <strong>Connect<\/strong> (the approval page) and when you open an Aivastark section in wp-admin (the iframe + ticket). Nothing is sent until you opt in by connecting.<\/li>\n<li><strong>Data sent<\/strong>: Your site URL, the chosen Aivastark project id, and the scoped token. While a section is open, what you do there (widget appearance, AI settings, knowledge base edits, replies you send from the inbox) is saved to your Aivastark project, exactly as in the Aivastark dashboard. No WordPress site content or visitor data is sent by this flow.<\/li>\n<li><strong>Data received<\/strong>: alongside the token, Aivastark returns this project's signing secret. It is stored locally (autoload off, never displayed) and used only to compute an HMAC of the logged-in user's ID when <strong>Know your logged-in visitors<\/strong> is on, so Aivastark can verify that identity. It is deleted when you disconnect or delete the plugin.<\/li>\n<\/ul>\n\n<h4>4. Knowledge sync (only while connected, and switchable off)<\/h4>\n\n<ul>\n<li><strong>What it does<\/strong>: Tells Aivastark that this site's content changed, so the knowledge base can show a \"Site changed\" badge with a Refresh button instead of going stale. It never starts a re-crawl by itself.<\/li>\n<li><strong>Endpoint<\/strong>: <code>https:\/\/xckrihmmdwddvcwohvaz.supabase.co\/functions\/v1\/kb-change-signal<\/code> (called from your WordPress server, on WP-Cron).<\/li>\n<li><strong>When<\/strong>: At most once every five minutes, after a public post or page is published, updated, unpublished, trashed or deleted. Only while the site is connected, and only if <strong>Knowledge sync<\/strong> is on (it is on by default; switch it off in <strong>Aivastark \u2192 Settings<\/strong> or on Home).<\/li>\n<li><strong>Data sent<\/strong>: The scoped token (which identifies your project) and the fixed reason <code>content_update<\/code>. No post title, URL, content or user data.<\/li>\n<\/ul>\n\n<h4>5. Deactivation feedback (optional \u2014 only if you click \"Submit &amp; Deactivate\")<\/h4>\n\n<ul>\n<li><strong>What it does<\/strong>: When you deactivate the plugin, an optional prompt asks why. If you choose to submit, your selected reason, optional comment, and the email shown (your WordPress account email) are sent to Aivastark to help improve the product.<\/li>\n<li><strong>Endpoint<\/strong>: <code>https:\/\/xckrihmmdwddvcwohvaz.supabase.co\/functions\/v1\/wordpress-feedback<\/code> (called from your WordPress server).<\/li>\n<li><strong>When<\/strong>: Only when you click <strong>Submit &amp; Deactivate<\/strong> in the feedback prompt. Clicking <strong>Skip &amp; Deactivate<\/strong> or <strong>Cancel<\/strong> sends nothing.<\/li>\n<li><strong>Data sent<\/strong>: The reason you selected, your optional comment, the email shown in the prompt, your site URL, the plugin version, and your WordPress version. No site content or visitor data.<\/li>\n<\/ul>\n\n<h4>Service provider<\/h4>\n\n<ul>\n<li><strong>Provider<\/strong>: Aivastark<\/li>\n<li><strong>Terms of Service<\/strong>: <a href=\"https:\/\/www.aivastark.com\/terms\">https:\/\/www.aivastark.com\/terms<\/a><\/li>\n<li><strong>Privacy Policy<\/strong>: <a href=\"https:\/\/www.aivastark.com\/privacy\">https:\/\/www.aivastark.com\/privacy<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin <code>.zip<\/code> file to <code>\/wp-content\/plugins\/<\/code> or install it via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate <strong>Aivastark - AI Agent<\/strong> through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Open <strong>Aivastark<\/strong> in the WordPress menu and click <strong>Connect to Aivastark<\/strong>, or go to <strong>Aivastark \u2192 Settings<\/strong> and paste your Widget Key.<\/li>\n<li>The widget is now live on every front-end page. Fine-tune where it shows in <strong>Aivastark \u2192 Display rules<\/strong>.<\/li>\n<\/ol>\n\n<p>To use it on a single page instead, leave the Widget Key field empty and paste the shortcode <code>[aivastark key=\"YOUR_WIDGET_KEY\"]<\/code> where you want the widget to load.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20any%20other%20settings%2C%20api%20keys%2C%20or%20urls%3F\"><h3>Do I need any other settings, API keys, or URLs?<\/h3><\/dt>\n<dd><p>No. Version 2.0 collapsed the old four-field config into a single Widget Key. Everything else (API endpoint, project settings, theme) is resolved automatically from the key.<\/p><\/dd>\n<dt id=\"where%20do%20i%20get%20a%20widget%20key%3F\"><h3>Where do I get a Widget Key?<\/h3><\/dt>\n<dd><p>Create a free account at <a href=\"https:\/\/www.aivastark.com\">aivastark.com<\/a>, create a project, and copy the Widget Key from the <strong>Integrations<\/strong> page in your dashboard.<\/p><\/dd>\n<dt id=\"is%20the%20widget%20served%20from%20wordpress%20or%20a%20cdn%3F\"><h3>Is the widget served from WordPress or a CDN?<\/h3><\/dt>\n<dd><p>The widget script is served from the Aivastark CDN (<code>https:\/\/www.aivastark.com\/widget.js<\/code>) by default. You can self-host by filtering <code>aivastark_widget_script_url<\/code>.<\/p><\/dd>\n<dt id=\"can%20i%20self-host%20the%20widget%20script%3F\"><h3>Can I self-host the widget script?<\/h3><\/dt>\n<dd><p>Yes. Add this to your theme or a custom plugin:<\/p>\n\n<pre><code>add_filter( 'aivastark_widget_script_url', function () {\n    return 'https:\/\/your-cdn.com\/widget.js';\n} );\n<\/code><\/pre><\/dd>\n<dt id=\"does%20the%20widget%20slow%20down%20my%20pages%3F\"><h3>Does the widget slow down my pages?<\/h3><\/dt>\n<dd><p>No. The widget script is registered with WordPress, loaded in the footer, and never blocks rendering. If you want it out of the first page load entirely, <strong>Aivastark \u2192 Display rules \u2192 When it loads<\/strong> can start it after a delay or on the visitor's first scroll, tap, click or key press.<\/p><\/dd>\n<dt id=\"what%20data%20is%20sent%20to%20aivastark%3F\"><h3>What data is sent to Aivastark?<\/h3><\/dt>\n<dd><p>By default: only conversation messages typed by visitors who open the widget, plus the Widget Key (to identify your project) and the visitor's session ID. No page content, no cookies on the host site, and no visitor tracking beyond what is needed for the chat session itself.<\/p>\n\n<p>If you switch on <strong>Know your logged-in visitors<\/strong> (off by default, see below), the logged-in user's WordPress user ID, display name, email address and role are also included. See the <strong>External services<\/strong> section for the full breakdown.<\/p><\/dd>\n<dt id=\"what%20is%20%22know%20your%20logged-in%20visitors%22%3F\"><h3>What is \"Know your logged-in visitors\"?<\/h3><\/dt>\n<dd><p>An optional setting \u2014 <strong>off unless you turn it on<\/strong> \u2014 that tells the assistant who is signed in, so it can greet them by name, recognize them across devices, and stop asking for details your site already has. Turn it on from <strong>Aivastark \u2192 Home<\/strong> (one click) or <strong>Aivastark \u2192 Settings<\/strong>.<\/p>\n\n<p>Nothing is sent for visitors who are not logged in. The values are the user's WordPress ID, display name, email address and primary role.<\/p>\n\n<p>Two things to know before enabling it:<\/p>\n\n<ol>\n<li>These details are rendered into the page for that signed-in visitor, so they reach Aivastark from the browser. They are suitable for greeting and personalization, and are <strong>not<\/strong> used to grant access to anything.<\/li>\n<li>If your site has users in the EU\/UK, sharing their name and email with a processor is a decision for you to make \u2014 that is exactly why this ships switched off.<\/li>\n<\/ol>\n\n<p>Developers can extend or replace the values with the <code>aivastark_widget_user_context<\/code> filter (for example to add a membership tier, subscription plan, or lifetime value).<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20work%20with%20caching%20plugins%3F\"><h3>Does this plugin work with caching plugins?<\/h3><\/dt>\n<dd><p>Yes. The widget config is inlined per-request; caching plugins that preserve <code>&lt;script&gt;<\/code> tags in <code>wp_footer<\/code> are fully compatible.<\/p>\n\n<p>When <strong>Know your logged-in visitors<\/strong> is on and a logged-in user is being served, the plugin also defines <code>DONOTCACHEPAGE<\/code> for that request, so a page containing one person's name can never be cached and served to somebody else. WP Rocket, LiteSpeed Cache, W3 Total Cache and WP Super Cache all honour this. Anonymous page views are untouched, so your page cache keeps working normally.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20widget%20from%20wordpress%20instead%20of%20the%20dashboard%3F\"><h3>Can I customize the widget from WordPress instead of the dashboard?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Aivastark \u2192 Home<\/strong> and click <strong>Connect<\/strong>, approve the connection in your Aivastark account (one time), then open <strong>Aivastark \u2192 Widget editor<\/strong>. The full editor (Content, Style, AI, Designer) loads right inside wp-admin and your changes save to your project. The Inbox, Knowledge base, Leads, Analytics and the other sections in the app's menu work the same way. You can disconnect anytime from Home or Settings.<\/p><\/dd>\n<dt id=\"why%20did%20the%20wordpress%20menu%20disappear%3F\"><h3>Why did the WordPress menu disappear?<\/h3><\/dt>\n<dd><p>Aivastark opens full screen so the inbox and editor get the room they need. Click the menu button at the top left to bring WordPress's menu back; WordPress remembers your choice.<\/p><\/dd>\n<dt id=\"can%20i%20choose%20which%20pages%20show%20the%20widget%3F\"><h3>Can I choose which pages show the widget?<\/h3><\/dt>\n<dd><p>Yes, in <strong>Aivastark \u2192 Display rules<\/strong>: every page, only on chosen pages, or everywhere except chosen pages. Choose by page type (home page, posts, pages, archives, search, 404, and WooCommerce shop, product, cart, checkout and account pages when WooCommerce is active), by specific page, or by URL path with <code>*<\/code> as a wildcard. The same screen limits it to desktop or phones, to logged-out or logged-in visitors, hides it from chosen roles, and sets when it loads. Developers can overrule any decision with the <code>aivastark_widget_should_render<\/code> filter.<\/p><\/dd>\n<dt id=\"is%20connecting%20required%3F\"><h3>Is connecting required?<\/h3><\/dt>\n<dd><p>No. Connecting is optional \u2014 it adds the in-WordPress app (editor, inbox, knowledge base, leads, analytics) and Knowledge sync. Display rules work without it. If you prefer, paste your Widget Key in <strong>Aivastark \u2192 Settings<\/strong> (or use the shortcode) and skip Connect entirely; the widget works exactly as before.<\/p><\/dd>\n<dt id=\"how%20do%20i%20remove%20all%20data%20this%20plugin%20stored%20when%20i%20delete%20it%3F\"><h3>How do I remove all data this plugin stored when I delete it?<\/h3><\/dt>\n<dd><p>Use <strong>Plugins \u2192 Delete<\/strong> in WordPress. The bundled <code>uninstall.php<\/code> removes the plugin's options (<code>aivastark_widget_options<\/code>, and if you connected, <code>aivastark_widget_secret<\/code> with the scoped token and <code>aivastark_widget_signing_secret<\/code>) and any queued Knowledge sync event. No tables, no extra rows. Disconnecting first also revokes the token on the server.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.5.0<\/h4>\n\n<ul>\n<li>New: Aivastark opens as a <strong>full-screen app<\/strong> in wp-admin, with its own top bar and navigation, and other plugins' banners kept out of the way. The menu button at the top left brings WordPress's sidebar back (remembered per user).<\/li>\n<li>New: much more of Aivastark runs inside WordPress once you connect: <strong>Inbox<\/strong>, <strong>Knowledge base<\/strong>, <strong>Leads<\/strong>, <strong>Tickets<\/strong>, <strong>Analytics<\/strong>, <strong>Visitors<\/strong>, <strong>AI agent<\/strong>, <strong>Chat settings<\/strong>, <strong>Quick responses<\/strong> and <strong>Automations<\/strong>, next to the <strong>Widget editor<\/strong> (formerly Customize Widget). Switching between them doesn't reload the page.<\/li>\n<li>New: <strong>Display rules<\/strong> \u2014 show the widget on every page, only on some or everywhere but some (by page type, page, or URL path with wildcards, including WooCommerce pages); on desktop, phones or both; for everyone, logged-out visitors or logged-in users; hidden from chosen roles; and loaded right away, after a delay, or on first interaction. New <code>aivastark_widget_should_render<\/code> filter.<\/li>\n<li>New: an on\/off switch for the widget on this site, without removing the Widget Key.<\/li>\n<li>New: <strong>Knowledge sync<\/strong> is now actually sent. The plugin shipped the code in 2.4 but never loaded it, so publishing never reached your knowledge base. It can be switched off in Settings.<\/li>\n<li>New: redesigned Home and Settings screens, and an <code>aivastark_widget_capability<\/code> filter for who may open the app.<\/li>\n<li>Unchanged by updating: every Display rule defaults to the 2.4 behavior (on, every page, every device, everyone, loaded right away). The shortcode, the Widget Key and existing connections keep working.<\/li>\n<\/ul>\n\n<h4>2.4.0<\/h4>\n\n<ul>\n<li>Added: <strong>Know your logged-in visitors<\/strong> \u2014 one click on <strong>Aivastark \u2192 Home<\/strong> and the assistant knows who is signed in, so it greets them by name, recognizes them across devices, and stops asking for details your site already has. No code required.<\/li>\n<li><strong>Off by default.<\/strong> Updating changes nothing until you switch it on, and nothing is ever sent for visitors who are not logged in.<\/li>\n<li>Added: <strong>verified identity.<\/strong> When your site is connected to Aivastark, the plugin signs the logged-in user's ID on your server (HMAC-SHA256) so Aivastark can confirm the person really is who your site says they are \u2014 which is what makes it safe for the assistant to help with their own account. The signing secret is stored with autoload off, never printed, and removed when you disconnect or delete the plugin. Nothing to configure: it arrives with <strong>Connect<\/strong>.<\/li>\n<li>Added: pages personalized for a signed-in user now set <code>DONOTCACHEPAGE<\/code>, so a page containing one person's details can never be cached and served to another visitor. Anonymous page views still cache normally.<\/li>\n<li>Added: <code>aivastark_widget_user_context<\/code> filter, so developers can add a membership tier, subscription plan, or any custom attributes to what the assistant knows.<\/li>\n<\/ul>\n\n<h4>2.3.1<\/h4>\n\n<ul>\n<li>Renamed the plugin to <strong>Aivastark - AI Agent<\/strong>. No functional changes \u2014 settings, Widget Key, shortcode, and existing connections are unaffected.<\/li>\n<\/ul>\n\n<h4>2.3.0<\/h4>\n\n<ul>\n<li>Added: a short, optional feedback prompt when you deactivate the plugin from the Plugins screen \u2014 pick a reason, add a comment, and submit, or skip entirely. It helps us improve Aivastark. Nothing is sent unless you click <strong>Submit &amp; Deactivate<\/strong>, and feedback never blocks or delays deactivation.<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Added: customize your widget without leaving WordPress. Click <strong>Connect<\/strong> (one-click, OAuth + PKCE) to securely link your site to an Aivastark project, then open <strong>Aivastark \u2192 Customize Widget<\/strong> to edit Content, Style, AI, and Designer in an embedded editor. Disconnect anytime \u2014 the token is revoked server-side and stored only as a hash.<\/li>\n<li>Added: a top-level <strong>Aivastark<\/strong> admin menu (Home \/ Customize Widget \/ Settings) replacing the single Settings page.<\/li>\n<li>Changed: the plugin is now organized into <code>includes\/<\/code> and <code>admin\/<\/code> files. Front-end behavior is unchanged \u2014 the <code>[aivastark]<\/code> shortcode and site-wide rendering work exactly as in 2.1.x, and an unconnected site behaves identically to before.<\/li>\n<li>Note: connecting auto-fills the Widget Key from the linked project if it was empty, so the widget goes live immediately.<\/li>\n<\/ul>\n\n<h4>2.1.6<\/h4>\n\n<ul>\n<li>Fixed: WordPress (and other CMS) themes were leaking CSS into the widget \u2014 tab bar background turned theme-coloured, SVG icons (mic, image, tab icons) disappeared because <code>currentColor<\/code> resolved to the theme's text colour. Wrapped the entire widget in a Shadow DOM so host-page styles can no longer reach widget elements. The widget now renders identically across WordPress, Shopify, and bare HTML pages.<\/li>\n<\/ul>\n\n<h4>2.1.5<\/h4>\n\n<ul>\n<li>Fixed: dashboard customisations (accent, name, logo, welcome message, suggested questions) silently failed to apply because the bootstrap path called the apply routine before the inner <code>WIDGET_SKINS<\/code> const had been initialised, throwing a temporal-dead-zone <code>ReferenceError<\/code> (\"Cannot access 'se' before initialization\") that aborted the rest of the customisation. The apply call is now deferred to a microtask, so it runs after every const\/function declaration in the IIFE has initialised.<\/li>\n<\/ul>\n\n<h4>2.1.4<\/h4>\n\n<ul>\n<li>Bumped widget script version so customers pull a CDN copy that bypasses any stale edge-cached widget-config response (cache-busted per page load) and surfaces apply errors \/ config diagnostics in the browser console for debugging.<\/li>\n<\/ul>\n\n<h4>2.1.3<\/h4>\n\n<ul>\n<li>Bumped widget script version so existing installs pull the latest CDN copy that reliably applies dashboard customisations (accent colour, logo, name, welcome message, suggested questions, FAQs).<\/li>\n<\/ul>\n\n<h4>2.1.2<\/h4>\n\n<ul>\n<li>Fixed: site-wide widget loader silently did nothing on activation. The auto-enqueue was hooked on <code>wp_footer<\/code> priority 100, which fires after WordPress prints footer scripts at priority 20, so the script was enqueued too late to render. Moved the auto-enqueue to <code>wp_enqueue_scripts<\/code>. The shortcode form was unaffected.<\/li>\n<\/ul>\n\n<h4>2.1.1<\/h4>\n\n<ul>\n<li>Fixed: separated <code>Plugin URI<\/code> (now <code>aivastark.com\/wordpress-plugin<\/code>) from <code>Author URI<\/code> to satisfy WordPress.org submission requirements. No functional changes.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Added <code>uninstall.php<\/code> to clean up the plugin's option when deleted.<\/li>\n<li>Hardened <code>$_POST<\/code> handling on the settings page (unslash + sanitize before any comparison or use).<\/li>\n<li>Added the WordPress.org-required <strong>External services<\/strong> disclosure section to readme.<\/li>\n<li>Added an explicit third-party service notice in the plugin description.<\/li>\n<li>Bumped <strong>Tested up to<\/strong> to WordPress 6.8.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li><strong>Breaking<\/strong>: Single-field setup. Widget Key is now the only required setting. Supabase URL \/ Anon Key \/ Widget.js URL fields have been removed \u2014 they are resolved server-side from the key.<\/li>\n<li>Switched to <code>wp_enqueue_script<\/code> and <code>wp_add_inline_script<\/code> for WP.org compliance.<\/li>\n<li>Added <code>aivastark_widget_script_url<\/code> filter for self-hosted widget scripts.<\/li>\n<li>Added translation support (text domain <code>aivastark-widget<\/code>).<\/li>\n<li>Dropped the bundled copy of <code>widget.js<\/code> \u2014 the CDN copy is now always used by default.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"White-label AI agent for your WordPress site. Paste one key, get a branded AI widget, and run the inbox, knowledge base and leads from wp-admin.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/324315","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=324315"}],"author":[{"embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/aivastark"}],"wp:attachment":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=324315"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=324315"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=324315"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=324315"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=324315"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=324315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}