{"id":320485,"date":"2026-06-29T21:59:21","date_gmt":"2026-06-29T21:59:21","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ozy-ai-agent\/"},"modified":"2026-06-29T21:58:58","modified_gmt":"2026-06-29T21:58:58","slug":"ozy-chat-assistant","status":"publish","type":"plugin","link":"https:\/\/mfe.wordpress.org\/plugins\/ozy-chat-assistant\/","author":23508772,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.8","stable_tag":"2.0.8","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"OZY Chat Assistant","header_author":"Danish Rangaiz","header_description":"AI-powered chat widget that learns your website and helps visitors. Supports OpenAI, Claude, Groq, Gemini & Mistral. Fully configurable from the dashboard.","assets_banners_color":"111f29","last_updated":"2026-06-29 21:58:58","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/ozysolutions.com","header_author_uri":"https:\/\/idanishrangaiz.vercel.app","rating":0,"author_block_rating":0,"active_installs":0,"downloads":38,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.8":{"tag":"2.0.8","author":"idanishrangaiz","date":"2026-06-29 21:58:58"}},"upgrade_notice":{"2.0.0":"<p>Major update. Adds OpenAI and Claude support, website auto-reader, redesigned dashboard, and improved widget modes.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3590650,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3590650,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3590650,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3590650,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.8"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3590650,"resolution":"1","location":"assets","locale":"","width":1200,"height":820},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3590650,"resolution":"2","location":"assets","locale":"","width":1200,"height":820},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3590650,"resolution":"3","location":"assets","locale":"","width":1100,"height":720},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3590650,"resolution":"4","location":"assets","locale":"","width":1100,"height":720}},"screenshots":{"1":"Admin dashboard \u2014 AI Providers tab with API key configuration and provider priority.","2":"Admin dashboard \u2014 Appearance tab showing widget mode toggles and color picker.","3":"Floating chat button and slide-up panel on a live website.","4":"Popup modal widget shown on first page visit."}},"plugin_section":[],"plugin_tags":[2353,1320,14160,2364,194533],"plugin_category":[],"plugin_contributors":[269519],"plugin_business_model":[],"class_list":["post-320485","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-assistant","plugin_tags-chat-widget","plugin_tags-chatbot","plugin_tags-openai","plugin_contributors-idanishrangaiz","plugin_committers-idanishrangaiz"],"banners":{"banner":"https:\/\/ps.w.org\/ozy-chat-assistant\/assets\/banner-772x250.png?rev=3590650","banner_2x":"https:\/\/ps.w.org\/ozy-chat-assistant\/assets\/banner-1544x500.png?rev=3590650","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ozy-chat-assistant\/assets\/icon-128x128.png?rev=3590650","icon_2x":"https:\/\/ps.w.org\/ozy-chat-assistant\/assets\/icon-256x256.png?rev=3590650","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ozy-chat-assistant\/assets\/screenshot-1.png?rev=3590650","caption":"Admin dashboard \u2014 AI Providers tab with API key configuration and provider priority."},{"src":"https:\/\/ps.w.org\/ozy-chat-assistant\/assets\/screenshot-2.png?rev=3590650","caption":"Admin dashboard \u2014 Appearance tab showing widget mode toggles and color picker."},{"src":"https:\/\/ps.w.org\/ozy-chat-assistant\/assets\/screenshot-3.png?rev=3590650","caption":"Floating chat button and slide-up panel on a live website."},{"src":"https:\/\/ps.w.org\/ozy-chat-assistant\/assets\/screenshot-4.png?rev=3590650","caption":"Popup modal widget shown on first page visit."}],"raw_content":"<!--section=description-->\n<p><strong>OZY Chat Assistant<\/strong> puts a smart AI assistant on your WordPress site. It automatically reads your pages, posts, products, and menus \u2014 then behaves as the dedicated AI agent for your business. Visitors get accurate, context-aware answers about your services without you lifting a finger.<\/p>\n\n<h4>Why OZY Chat Assistant is different<\/h4>\n\n<p>Most AI chat plugins require expensive SaaS subscriptions or are locked to one AI provider. OZY Chat Assistant:<\/p>\n\n<ul>\n<li><strong>Learns your website automatically<\/strong> \u2014 scans your WordPress content and uses it to answer visitor questions accurately<\/li>\n<li><strong>Supports 5 AI providers<\/strong> \u2014 OpenAI, Claude, Groq, Gemini, Mistral \u2014 with configurable priority and automatic fallback<\/li>\n<li><strong>Free tiers available<\/strong> \u2014 Groq, Gemini, and Mistral all offer free API keys<\/li>\n<li><strong>Fully configurable dashboard<\/strong> \u2014 no code required, everything done from Settings<\/li>\n<li><strong>Dual widget modes<\/strong> \u2014 floating button (side panel) + popup modal, each independently togglable<\/li>\n<\/ul>\n\n<h4>Core Features<\/h4>\n\n<ul>\n<li><strong>Multi-provider AI<\/strong> \u2014 OpenAI (GPT-4o), Claude (Haiku\/Sonnet), Groq (Llama 3.3 70B), Gemini 2.0 Flash, Mistral Small<\/li>\n<li><strong>Configurable priority<\/strong> \u2014 choose which provider is tried first and in what fallback order<\/li>\n<li><strong>Website content reader<\/strong> \u2014 automatically reads your WordPress pages, posts, products, and menus<\/li>\n<li><strong>Business knowledge base<\/strong> \u2014 add custom descriptions, services, FAQs, and policies<\/li>\n<li><strong>Streaming responses<\/strong> \u2014 tokens appear in real time (like ChatGPT)<\/li>\n<li><strong>Voice input<\/strong> \u2014 Groq Whisper STT transcribes voice messages<\/li>\n<li><strong>Text-to-speech<\/strong> \u2014 AI reads responses aloud after voice input<\/li>\n<li><strong>Floating button + panel<\/strong> \u2014 fixed corner chat button with slide-up panel<\/li>\n<li><strong>Popup modal<\/strong> \u2014 centered overlay on first visit (independently togglable)<\/li>\n<li><strong>Shortcode<\/strong> \u2014 <code>[oozzy_ai_agent]<\/code> to embed on specific pages<\/li>\n<li><strong>IP\/timezone-aware greeting<\/strong> \u2014 greets visitors based on their local time<\/li>\n<li><strong>Re-engagement<\/strong> \u2014 prompts idle visitors after 50 seconds<\/li>\n<li><strong>Chat history<\/strong> \u2014 persists last 30 messages across page loads<\/li>\n<li><strong>Lightweight<\/strong> \u2014 no jQuery dependency, vanilla JS, minimal CSS<\/li>\n<\/ul>\n\n<h4>Setup in 5 Minutes<\/h4>\n\n<ol>\n<li>Install and activate the plugin<\/li>\n<li>Go to <strong>Settings \u2192 OZY Chat Assistant<\/strong><\/li>\n<li>Add at least one API key in the <strong>AI Providers<\/strong> tab (Groq is free and recommended)<\/li>\n<li>Describe your business in the <strong>My Business<\/strong> tab and click \"Scan My Website\"<\/li>\n<li>Add contact details in the <strong>Agent<\/strong> tab<\/li>\n<li>Adjust appearance in the <strong>Appearance<\/strong> tab<\/li>\n<\/ol>\n\n<h4>Free API Keys<\/h4>\n\n<ul>\n<li><strong>Groq<\/strong> \u2014 https:\/\/console.groq.com (free, fast, recommended)<\/li>\n<li><strong>Gemini<\/strong> \u2014 https:\/\/aistudio.google.com (free tier)<\/li>\n<li><strong>Mistral<\/strong> \u2014 https:\/\/console.mistral.ai (free tier)<\/li>\n<li><strong>OpenAI<\/strong> \u2014 https:\/\/platform.openai.com\/api-keys (paid)<\/li>\n<li><strong>Claude<\/strong> \u2014 https:\/\/console.anthropic.com (paid)<\/li>\n<\/ul>\n\n<h4>Shortcode<\/h4>\n\n<pre><code>[oozzy_ai_agent]\n<\/code><\/pre>\n\n<p>Add to any page or post. Or enable \"Load Site-Wide\" in Appearance to load on every page without a shortcode.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to third-party AI services to generate chat responses. The plugin only contacts a provider if you have entered an API key for that provider in <strong>Settings \u2192 OZY Chat Assistant \u2192 AI Providers<\/strong>. No data is sent to any provider whose key is empty.<\/p>\n\n<p><strong>What is sent<\/strong>: the visitor's chat message text, the prior conversation (up to the last 20 messages from the same browser session), and a system prompt containing your configured business info and a snapshot of public WordPress content (page\/post titles and excerpts) you have configured the plugin to read.<\/p>\n\n<p><strong>When is it sent<\/strong>: every time a visitor submits a message in the chat widget on your site.<\/p>\n\n<p><strong>Providers used<\/strong> (only the ones with configured API keys are called):<\/p>\n\n<ul>\n<li><strong>Groq<\/strong> \u2014 https:\/\/groq.com\/ \u2014 terms: https:\/\/groq.com\/terms-of-use\/ \u2014 privacy: https:\/\/groq.com\/privacy-policy\/<\/li>\n<li><strong>Google Gemini<\/strong> \u2014 https:\/\/ai.google.dev\/ \u2014 terms: https:\/\/ai.google.dev\/gemini-api\/terms \u2014 privacy: https:\/\/policies.google.com\/privacy<\/li>\n<li><strong>Mistral AI<\/strong> \u2014 https:\/\/mistral.ai\/ \u2014 terms: https:\/\/legal.mistral.ai\/terms \u2014 privacy: https:\/\/legal.mistral.ai\/terms\/privacy-policy<\/li>\n<li><strong>OpenAI<\/strong> \u2014 https:\/\/openai.com\/ \u2014 terms: https:\/\/openai.com\/policies\/terms-of-use\/ \u2014 privacy: https:\/\/openai.com\/policies\/privacy-policy\/<\/li>\n<li><strong>Anthropic (Claude)<\/strong> \u2014 https:\/\/www.anthropic.com\/ \u2014 terms: https:\/\/www.anthropic.com\/legal\/consumer-terms \u2014 privacy: https:\/\/www.anthropic.com\/legal\/privacy<\/li>\n<\/ul>\n\n<p><strong>Voice transcription<\/strong> (only if the visitor uses the microphone button and a Groq API key is configured): the audio recording is sent directly to the Groq Whisper API endpoint (https:\/\/api.groq.com\/openai\/v1\/audio\/transcriptions) over an HTTP request. The audio is not stored on your WordPress server.<\/p>\n\n<p>The plugin does not store visitor messages on your WordPress server. Chat history is kept only in the visitor's own browser via <code>localStorage<\/code> and is cleared when the visitor clears their browser data.<\/p>\n\n<p><strong>Site owners are responsible<\/strong> for disclosing this third-party data processing to their visitors in their site's privacy policy.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>ozy-chat-assistant<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through <strong>Plugins \u2192 Installed Plugins<\/strong><\/li>\n<li>Configure at <strong>Settings \u2192 OZY Chat Assistant<\/strong><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20all%20five%20api%20keys%3F\"><h3>Do I need all five API keys?<\/h3><\/dt>\n<dd><p>No. You only need one working API key. The agent tries them in your configured priority order and falls back automatically if one fails. Groq is the recommended starting point \u2014 it's free and fast.<\/p><\/dd>\n<dt id=\"will%20it%20conflict%20with%20my%20theme%20or%20other%20plugins%3F\"><h3>Will it conflict with my theme or other plugins?<\/h3><\/dt>\n<dd><p>The widget uses fixed positioning and scoped CSS custom properties. It does not inject styles into the page flow. Conflicts are very rare.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20on%20a%20client%27s%20website%3F\"><h3>Can I use it on a client's website?<\/h3><\/dt>\n<dd><p>Yes. Each installation is independent. Configure the business info, agent name, and contact details for each site separately.<\/p><\/dd>\n<dt id=\"does%20streaming%20work%20on%20shared%20hosting%3F\"><h3>Does streaming work on shared hosting?<\/h3><\/dt>\n<dd><p>Streaming requires <code>ob_flush()<\/code> \/ <code>flush()<\/code> support. This works on most hosts. If streaming fails, the widget automatically falls back to non-streaming mode.<\/p><\/dd>\n<dt id=\"how%20does%20the%20website%20reader%20work%3F\"><h3>How does the website reader work?<\/h3><\/dt>\n<dd><p>The plugin reads your WordPress pages, posts, WooCommerce products, custom post types, and navigation menus using built-in WordPress functions \u2014 no external HTTP requests. The content is cached (default: 6 hours) and injected into the AI's system prompt.<\/p><\/dd>\n<dt id=\"who%20built%20this%20plugin%3F\"><h3>Who built this plugin?<\/h3><\/dt>\n<dd><p>Built and maintained by idanishrangaiz. See the plugin author link in your WordPress plugins page for support and contact details.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.8<\/h4>\n\n<ul>\n<li>Fixed: the \"Powered by OZY\" credit no longer appears on the front-end chat widget by default. As required by the WordPress.org plugin guidelines, attribution on user-facing interfaces is now strictly opt-in.<\/li>\n<li>Added: a \"Show 'Powered by OZY' Credit\" toggle (off by default) in the Appearance tab. Site administrators must intentionally enable it for the credit to display.<\/li>\n<\/ul>\n\n<h4>2.0.7<\/h4>\n\n<ul>\n<li>Changed: renamed the plugin to \"OZY Chat Assistant\" with the slug <code>ozy-chat-assistant<\/code>; the text domain now matches the slug.<\/li>\n<li>Changed: replaced all short <code>ozy<\/code>\/<code>OZY_<\/code> code prefixes with the unique <code>oozzy<\/code>\/<code>OOZZY_<\/code> prefix on functions, classes, options, transients, nonces, AJAX actions, and the shortcode (now <code>[oozzy_ai_agent]<\/code>).<\/li>\n<li>Changed: all upstream AI and voice requests now use the WordPress HTTP API (<code>wp_remote_post()<\/code>) exclusively; removed all direct cURL calls.<\/li>\n<li>Changed: voice transcription now uploads audio via a multipart HTTP request instead of writing a temporary file to disk.<\/li>\n<li>Removed: <code>load_plugin_textdomain()<\/code> call \u2014 WordPress.org loads translations automatically since WP 4.6.<\/li>\n<li>Fixed: corrected the Mistral terms\/privacy URLs to the working Legal Center links.<\/li>\n<\/ul>\n\n<h4>2.0.5<\/h4>\n\n<ul>\n<li>Fixed: replaced direct <code>&lt;style&gt;<\/code> tag output with <code>wp_add_inline_style()<\/code> for the accent color CSS variables, as required by WordPress.org guidelines.<\/li>\n<li>Fixed: updated Contributors field to correct WordPress.org username <code>idanishrangaiz<\/code>.<\/li>\n<li>Fixed: updated broken Mistral terms\/privacy URLs in readme.txt.<\/li>\n<\/ul>\n\n<h4>2.0.4<\/h4>\n\n<ul>\n<li>Fixed: replaced heredoc (&lt;&lt;&lt;EOT) string syntax in the system-prompt builder with standard string concatenation, to satisfy the WordPress.org Plugin Check (PluginCheck.CodeAnalysis.Heredoc.NotAllowed).<\/li>\n<li>Fixed: bumped \"Tested up to\" header to 7.0 to match the current WordPress release (\"Armstrong\").<\/li>\n<li>Fixed: added the missing <code>languages\/<\/code> directory (with a <code>ozy-chat-assistant.pot<\/code> translation template) so the <code>Domain Path: \/languages<\/code> header in the plugin file now resolves to an existing folder.<\/li>\n<\/ul>\n\n<p><h4>2.0.3<\/h4><\/p>\n\n<ul>\n<li>Removed: developer-promotion text that was injected into the AI system prompt. The AI no longer mentions the plugin author to your visitors.<\/li>\n<li>Removed: \"Allow External Suggestions\" setting (no longer needed). Setting default changed to off for any existing installs.<\/li>\n<li>Changed: chat widget footer simplified to \"Powered by OZY\" (brand only, no link, no full plugin name).<\/li>\n<li>Removed: developer bio and \"Contact\" CTA button from the admin Guide tab. Author info is available via the plugin page on WordPress.org instead.<\/li>\n<li>Removed: unused <code>standalone\/<\/code> folder (Vercel\/Node.js demo code unrelated to the WordPress plugin).<\/li>\n<li>Improved: added an \"External Services\" section to readme that fully discloses every third-party endpoint contacted and exactly what data is transmitted.<\/li>\n<li>Improved: added an inline reviewer-facing comment in <code>class-ozy-api.php<\/code> explaining why cURL is used in the SSE streaming path (WP HTTP API does not support response streaming).<\/li>\n<li>Improved: reduced readme tags to 5 (WP.org limit) and bumped \"Tested up to\" to 6.8.<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Fixed: popup modal background appeared transparent on some themes \u2014 CSS variables now resolve correctly for the modal.<\/li>\n<li>Fixed: voice (mic) button no longer shows an oversized dark hover background; hover now only changes the icon color.<\/li>\n<li>Improved: chat input field is taller and wider with better padding for easier typing on both desktop and mobile.<\/li>\n<li>Improved: voice mic button is more compact (28px), giving the text input more room.<\/li>\n<li>Improved: input row uses center alignment and tighter spacing for a more polished look.<\/li>\n<li>Fixed: admin settings tab links now point to the correct top-level admin URL (admin.php instead of options-general.php).<\/li>\n<li>Fixed: resolved leftover merge artifacts in CSS that were breaking widget styling in certain browsers.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Fixed: saving settings on one tab (e.g. AI Providers) no longer resets toggles from other tabs (floating enable, popup enable, site-wide, auto-open).<\/li>\n<li>Added: auto-repair that restores visibility settings if all three are found to be off simultaneously.<\/li>\n<li>Improved: nonce verification now uses check_ajax_referer() for AJAX handlers.<\/li>\n<li>Improved: basic per-IP rate limiting (30 req\/min for chat, 10 req\/min for voice).<\/li>\n<li>Improved: MIME type validation and audio size check for voice transcription.<\/li>\n<li>Improved: removed all error-suppressor (@) operators; output buffering checked before flushing.<\/li>\n<li>Improved: user message bubble now renders in solid black bold text for better readability.<\/li>\n<li>Security: escHtml() now escapes double and single quotes to prevent attribute injection.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Added OpenAI (GPT-4o Mini, GPT-4o, GPT-3.5 Turbo) support<\/li>\n<li>Added Claude (Haiku, Sonnet, Opus) support<\/li>\n<li>Added configurable provider priority order<\/li>\n<li>Added automatic website content reader (pages, posts, products, menus)<\/li>\n<li>Redesigned dashboard with aesthetic card-based UI<\/li>\n<li>Added dual widget modes: floating button and popup modal, each independently togglable<\/li>\n<li>Added business knowledge base field<\/li>\n<li>Added external suggestions toggle<\/li>\n<li>Added agent icon URL field<\/li>\n<li>Removed contact form auto-fill (now pure AI conversation agent)<\/li>\n<li>Streaming support for all providers<\/li>\n<li>Improved system prompt with site context injection<\/li>\n<li>Updated to GPL-2.0-or-later license<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"AI-powered chat widget that learns your website and helps visitors. Supports OpenAI, Claude, Groq, Gemini &amp; Mistral. No monthly fees.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/320485","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=320485"}],"author":[{"embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/idanishrangaiz"}],"wp:attachment":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=320485"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=320485"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=320485"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=320485"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=320485"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=320485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}