{"id":345237,"date":"2026-07-27T04:59:49","date_gmt":"2026-07-27T04:59:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/achla-ai-search\/"},"modified":"2026-07-27T04:59:33","modified_gmt":"2026-07-27T04:59:33","slug":"achlaai","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/achlaai\/","author":23536467,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.5","stable_tag":"0.3.5","tested":"7.0.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Achla AI Search","header_author":"Achla AI Search","header_description":"Securely connects this WordPress site to Achla AI Search and controls widget placement.","assets_banners_color":"e3ddd0","last_updated":"2026-07-27 04:59:33","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/achlaai.com\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":30,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.5":{"tag":"0.3.5","author":"achlaai","date":"2026-07-27 04:59:33"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3623963,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3623963,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3623963,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3623963,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"achlaai\/inline-search":{"name":"achlaai\/inline-search","title":"Achla AI Search"}},"tagged_versions":["0.3.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3623963,"resolution":"1","location":"assets","locale":"","width":1600,"height":1000},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3623963,"resolution":"2","location":"assets","locale":"","width":1600,"height":1000},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3623963,"resolution":"3","location":"assets","locale":"","width":1600,"height":1000}},"screenshots":{"1":"A visitor asks in their own language and gets a concise answer with links to the supporting pages.","2":"Connect without copying an API key, then see ownership, service, and index status in WordPress.","3":"Choose Bubble, Inline, or Attach placement and check widget diagnostics before publishing."}},"plugin_section":[],"plugin_tags":[2353,220145,2369,1643,944],"plugin_category":[],"plugin_contributors":[273411],"plugin_business_model":[],"class_list":["post-345237","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-ai-search","plugin_tags-customer-support","plugin_tags-faq","plugin_tags-search","plugin_contributors-achlaai","plugin_committers-achlaai"],"banners":{"banner":"https:\/\/ps.w.org\/achlaai\/assets\/banner-772x250.png?rev=3623963","banner_2x":"https:\/\/ps.w.org\/achlaai\/assets\/banner-1544x500.png?rev=3623963","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/achlaai\/assets\/icon-128x128.png?rev=3623963","icon_2x":"https:\/\/ps.w.org\/achlaai\/assets\/icon-256x256.png?rev=3623963","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/achlaai\/assets\/screenshot-1.png?rev=3623963","caption":"A visitor asks in their own language and gets a concise answer with links to the supporting pages."},{"src":"https:\/\/ps.w.org\/achlaai\/assets\/screenshot-2.png?rev=3623963","caption":"Connect without copying an API key, then see ownership, service, and index status in WordPress."},{"src":"https:\/\/ps.w.org\/achlaai\/assets\/screenshot-3.png?rev=3623963","caption":"Choose Bubble, Inline, or Attach placement and check widget diagnostics before publishing."}],"raw_content":"<!--section=description-->\n<p>Turn your WordPress content into answers visitors can trust.<\/p>\n\n<p>Achla AI Search gives visitors a concise answer drawn from your public pages\nand links every answer to its sources. They can ask naturally, in their own\nlanguage, and get an answer instead of digging through a list of search\nresults.<\/p>\n\n<p>Achla is managed end to end. You do not need an OpenAI, Gemini, or other model\nAPI key. There is no separate model-provider account to fund, no prepaid model\ncredits to monitor, and no embeddings database or search backend\nto maintain. Achla handles crawling, indexing, model calls, signed widget\nreleases, and usage controls.<\/p>\n\n<p>Start free with 30 searches per month and up to 30 indexed pages \u2014 no card\nrequired. Paid plans include a fixed number of searches, so you budget in\nsearches rather than LLM tokens.<\/p>\n\n<h4>Why site owners choose Achla<\/h4>\n\n<ul>\n<li>Direct answers, not another results page. Visitors get a concise response\nwith clickable citations to the pages that support it.<\/li>\n<li>Grounded in your content. If the indexed pages do not support an answer,\nAchla does not present a guess as fact.<\/li>\n<li>No model API keys. There is no OpenAI or LLM key to obtain, paste into\nWordPress, secure, rotate, or refill.<\/li>\n<li>No separate model-token bill. Plans are measured in searches, not input and\noutput tokens from a second provider.<\/li>\n<li>The visitor's language by default. Visitors ask in their own language and\nreceive the answer in that language.<\/li>\n<li>Managed indexing. Achla crawls permitted public content, builds the search\nindex, and keeps it fresh as the site changes.<\/li>\n<li>Flexible placement. Use a floating Bubble, an Inline shortcode or Gutenberg\nblock, or attach the widget to an existing search field.<\/li>\n<\/ul>\n\n<h4>Connect without AI plumbing<\/h4>\n\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Select Connect, sign in to Achla, and confirm ownership of the site. No API\nkey is copied into WordPress.<\/li>\n<li>Achla crawls the permitted public pages and builds the index. WordPress\nshows the current connection and indexing status.<\/li>\n<li>Choose Bubble, Inline, or Attach placement, preview it, and enable the\nwidget when ready.<\/li>\n<\/ol>\n\n<p>Connection actions require a WordPress administrator and use short-lived,\nserver-generated proof. Credentials remain server-side. Widget releases are\nsigned and verified before they run in the browser; if verification fails,\nthe widget stays off. A cloned site or a move to another subdomain requires\nownership verification again.<\/p>\n\n<p>Visual styling is managed in the Achla dashboard. This plugin controls whether\nthe widget is active and where it is placed. HTTP sites show a persistent\nreduced-security warning.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin requires the third-party Achla AI Search service at\n    https:\/\/achlaai.com. The service crawls permitted public content, builds and\nmaintains the index, generates cited answers, provides widget configuration,\nand manages service billing.<\/p>\n\n<ol>\n<li><p><strong>Ownership connection.<\/strong> When an administrator clicks Connect, Resume, or\nReconnect, the plugin sends the site origin, WordPress callback URL, and a\nshort-lived ownership challenge to Achla. The secret verifier is sent only\nafter WordPress validates Achla's signed callback. WordPress then stores the\nsite binding, project identifier, public widget key, and a server-side\nmanagement credential.<\/p><\/li>\n<li><p><strong>Lifecycle status and health.<\/strong> While connected, WordPress makes paced,\nauthenticated requests to read project and index status. Diagnostics can\ncontain only the classified states <code>ATTACH_TARGET_MISSING<\/code> and\n   RELEASE_UNAVAILABLE, software versions, status classifications, and\ntimestamps. They do not contain page content, visitor questions, email\naddresses, IP addresses, cookies, secrets, arbitrary URLs, or stack traces.<\/p><\/li>\n<li><p><strong>Disconnect.<\/strong> An administrator disconnect, or uninstall best effort,\nrevokes the installation binding and management credential. It does not\ncancel an Achla subscription.<\/p><\/li>\n<li><p><strong>Signed widget release.<\/strong> WordPress periodically requests a signed control\nand manifest from Achla. The connector checks its signature, expiry,\ncompatibility, rollback state, immutable asset URL, and Subresource\nIntegrity value. The browser loads only a verified release.<\/p><\/li>\n<li><p><strong>Widget use.<\/strong> The verified widget uses Achla's widget configuration and\nsearch APIs. When a visitor asks a question, Achla receives the question,\nthe site's public widget key, the page origin, and the visitor's IP address\ncarried by the HTTPS request. These data are used for site binding, abuse\ncontrols, and returning an answer from the indexed public content.<\/p><\/li>\n<\/ol>\n\n<p>The plugin's three public WordPress REST routes are limited to a signed\nownership callback, a no-store release decision, and nonce-protected,\nsame-origin runtime diagnostics. All management routes require an\nadministrator capability and WordPress REST nonce.<\/p>\n\n<p>The local bridge does not use cookies, browser storage, advertising\nidentifiers, iframes, or page-content telemetry. Review the service terms\nbefore enabling the widget:<\/p>\n\n<ul>\n<li>Privacy Policy: https:\/\/achlaai.com\/legal\/privacy<\/li>\n<li>Terms of Service: https:\/\/achlaai.com\/legal\/terms<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install the plugin ZIP through Plugins &gt; Add New &gt; Upload Plugin, or place\nthe <code>achlaai<\/code> directory under <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate Achla AI Search.<\/li>\n<li>Open Settings &gt; Achla AI Search and select Connect.<\/li>\n<li>Complete ownership setup on Achla, then return to WordPress and monitor the\nconnection and indexing status.<\/li>\n<li>Keep Bubble placement or choose Inline or Attach. Test an Attach selector\nbefore saving it. Enable \"Show the widget\" only when you are ready to display\nthe widget and its Powered by Achla AI attribution publicly.<\/li>\n<\/ol>\n\n<p>The widget renders only when the management binding is valid, the project is\nactive, the index is ready, placement is enabled, and a current signed release\npasses verification.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20achla%20account%3F\"><h3>Do I need an Achla account?<\/h3><\/dt>\n<dd><p>Yes. A free Achla account is required to connect and manage the service. The\nFree plan does not require a payment card.<\/p><\/dd>\n<dt id=\"do%20i%20need%20my%20own%20openai%20or%20llm%20api%20key%3F\"><h3>Do I need my own OpenAI or LLM API key?<\/h3><\/dt>\n<dd><p>No. Achla manages the crawler, index, model calls, and billing. There is no\nmodel key to obtain, paste into WordPress, secure, rotate, or refill.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20prepay%20model%20tokens%3F\"><h3>Do I need to prepay model tokens?<\/h3><\/dt>\n<dd><p>No separate model-token balance is required. The Free plan includes 30\nsearches per month. Paid plans include a fixed search allowance, and optional\nadditional usage is purchased as search blocks rather than LLM tokens.<\/p><\/dd>\n<dt id=\"can%20visitors%20ask%20in%20their%20own%20language%3F\"><h3>Can visitors ask in their own language?<\/h3><\/dt>\n<dd><p>Yes. Achla returns the answer in the language of the question by default.<\/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>Deactivation stops all front-end output and scheduled connector work. It keeps\nthe local binding so activation can recheck status and resume. Deactivation\ndoes not disconnect the site and does not affect the subscription.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20uninstall%20the%20plugin%3F\"><h3>What happens when I uninstall the plugin?<\/h3><\/dt>\n<dd><p>Uninstall performs a bounded best-effort local disconnect and emits a local\naudit outcome for WordPress integrations. It then removes this site's options,\ntemporary connection data, locks, and scheduled hooks. If the network request\ncannot be confirmed, the backend stale-credential policy remains the recovery\nboundary. Uninstall never cancels a subscription.<\/p><\/dd>\n<dt id=\"why%20is%20the%20widget%20not%20rendering%3F\"><h3>Why is the widget not rendering?<\/h3><\/dt>\n<dd><p>Open Settings &gt; Achla AI Search. Rendering remains off when ownership needs\nverification, the project is not active, indexing is not ready, the release is\nexpired, incompatible, rolled back, or killed, or placement is disabled. The\nstatus screen provides the corresponding recovery action.<\/p><\/dd>\n<dt id=\"how%20does%20attach%20fallback%20work%3F\"><h3>How does Attach fallback work?<\/h3><\/dt>\n<dd><p>Attach accepts a narrow CSS selector subset and requires a successful server\ntest before saving. If the element is absent at runtime, the widget falls back\nto Bubble and records a classified warning. The warning clears after the\ntarget is observed again.<\/p><\/dd>\n<dt id=\"does%20the%20connector%20store%20visitor%20data%20in%20wordpress%3F\"><h3>Does the connector store visitor data in WordPress?<\/h3><\/dt>\n<dd><p>No. The connector does not store visitor questions, IP addresses, page\ncontent, cookies, or widget sessions in WordPress. It stores only site-owner\nconnection, lifecycle, placement, signed-release, and classified diagnostic\nstate for the current site.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.5<\/h4>\n\n<ul>\n<li>Security hardening: the runtime placement diagnostic endpoint now requires a WordPress nonce issued with the bridge script.<\/li>\n<\/ul>\n\n<h4>0.3.4<\/h4>\n\n<ul>\n<li>Move settings maintenance and public runtime diagnostics to asynchronous scheduled work.<\/li>\n<li>Respect lifecycle and release backoff in due-aware status, heartbeat, and release cron callbacks.<\/li>\n<li>Enforce signed CMS control expiry when selecting and downloading self-hosted update packages.<\/li>\n<\/ul>\n\n<h4>0.3.2<\/h4>\n\n<ul>\n<li>Keep setup in the current tab so registration and email verification can return to the original WordPress connection.<\/li>\n<li>Continue bounded status polling while the first index and signed widget release are being prepared.<\/li>\n<li>Improve WordPress.org compatibility checks, release gates, and package metadata.<\/li>\n<\/ul>","raw_excerpt":"Turn WordPress content into cited AI answers \u2014 no model API keys, no prepaid model credits, and no search infrastructure to manage.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/345237","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=345237"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/achlaai"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=345237"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=345237"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=345237"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=345237"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=345237"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=345237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}