{"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-31T09:17:23","modified_gmt":"2026-07-31T09:17:23","slug":"achlaai","status":"publish","type":"plugin","link":"https:\/\/co.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-31 09:17:23","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":98,"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-31 09:17:23"}},"upgrade_notice":{"0.3.5":"<p>Security update. The runtime placement diagnostic endpoint now requires a\nWordPress nonce. Updating is recommended.<\/p>"},"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":[191735,220145,2364,14090,3541],"plugin_category":[],"plugin_contributors":[273411],"plugin_business_model":[],"class_list":["post-345237","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-chatbot","plugin_tags-ai-search","plugin_tags-chatbot","plugin_tags-knowledge-base","plugin_tags-site-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>Visitors do not always use the same words you used on the page. They ask a\nquestion in everyday language, use a synonym, or type an acronym you spelled\nout somewhere else. Keyword search misses the match even when the answer is\nalready on your site.<\/p>\n\n<p>Achla AI Search turns that question into a short answer drawn from your\npublished content, with numbered links to the pages that support it. Visitors\ncan ask in their own language and receive the answer in that language.<\/p>\n\n<p>Achla answers questions about your content. It is not a live chat, helpdesk,\nor support inbox.<\/p>\n\n<p><strong>Free plan: 100 searches a month and 100 indexed pages. No payment card.<\/strong><\/p>\n\n<h4>What visitors get<\/h4>\n\n<ul>\n<li><strong>An answer with sources.<\/strong> Instead of another results page, visitors get a\nconcise response and links to the pages behind it.<\/li>\n<li><strong>Meaning, not exact keyword matching.<\/strong> Synonyms, alternative terminology,\nspelled-out acronyms, and plain-language questions can reach the relevant\ncontent.<\/li>\n<li><strong>Answers in the visitor's language.<\/strong> Questions in Hebrew, Arabic, French,\nGerman, Spanish, and other supported languages receive answers in the same\nlanguage, including right-to-left layout where needed.<\/li>\n<li><strong>Answers grounded in your pages.<\/strong> Achla is designed not to show an answer\nwithout citations from your indexed content. When the available pages do\nnot provide enough support, it says so.<\/li>\n<\/ul>\n\n<p>As with any AI-generated output, visitors should check the cited pages when\naccuracy matters.<\/p>\n\n<h4>No API keys or search infrastructure<\/h4>\n\n<p>Achla includes the parts that site owners would otherwise have to assemble\nand operate themselves:<\/p>\n\n<ul>\n<li><strong>No OpenAI or Gemini key.<\/strong> There is no model-provider account or secret to\nconfigure, store in WordPress, rotate, or top up.<\/li>\n<li><strong>No separate token bill.<\/strong> Plans are measured in searches, so you do not\nhave to estimate input and output token costs.<\/li>\n<li><strong>No vector database or search server.<\/strong> There is no indexing\ninfrastructure to deploy, size, or maintain.<\/li>\n<li><strong>The crawler is included.<\/strong> Achla reads permitted public content on your\nsite, including PDFs and pages that are not WordPress posts, and maintains\nthe search index.<\/li>\n<\/ul>\n\n<p>Achla runs the crawling, indexing, and model calls as a managed service. You\ninstall the plugin, connect the site, and choose where the widget appears.<\/p>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Select Connect, sign in to Achla, and confirm that you own the site. No key is\ncopied into WordPress.<\/li>\n<li>Achla reads your permitted public pages and builds the index. The plugin\nshows the connection and indexing status.<\/li>\n<li>Choose a placement, preview it, and switch the widget on.<\/li>\n<\/ol>\n\n<h4>Where it fits best<\/h4>\n\n<p>Achla works on a small site, but its advantage becomes clearer when useful\ninformation is spread across more pages than a visitor can browse:<\/p>\n\n<ul>\n<li>technical documentation and knowledge bases<\/li>\n<li>research groups, laboratories, and institutes<\/li>\n<li>university departments and faculty sites<\/li>\n<li>scientific publications, proceedings, and open archives<\/li>\n<li>medical, legal, and regulatory reference sites<\/li>\n<li>large catalogs, directories, and databases<\/li>\n<\/ul>\n\n<p>Specialized terminology is a natural fit. A visitor can ask about protein\nfolding when a page discusses conformational dynamics, use a field-specific\nname for a method, or enter an acronym that is defined elsewhere on the site.\nAchla matches the question to the meaning of the indexed content rather than\nrequiring the same wording.<\/p>\n\n<h4>Three ways to place it<\/h4>\n\n<ul>\n<li><strong>Bubble<\/strong> \u2014 a floating button in the corner. This is the default and\nrequires no page editing.<\/li>\n<li><strong>Inline<\/strong> \u2014 a shortcode or Gutenberg block placed inside your content.<\/li>\n<li><strong>Attach<\/strong> \u2014 connects Achla to an existing search field.<\/li>\n<\/ul>\n\n<p>Bubble and Inline work alongside the WordPress search you already have.\nAttach lets you reuse the search field already present in your design.<\/p>\n\n<h4>Plans and pricing<\/h4>\n\n<ul>\n<li><strong>Free \u2014 $0.<\/strong> 100 searches a month and 100 indexed pages. No payment card.\nThis is an ongoing plan, not a trial that expires.<\/li>\n<li><strong>Paid plans start at $15 a month<\/strong> and include a fixed number of searches.<\/li>\n<\/ul>\n\n<p>Extra usage is purchased in blocks of searches rather than model tokens. That\nmakes usage easier to understand and budget.<\/p>\n\n<h4>Worth knowing before you install<\/h4>\n\n<ul>\n<li>An Achla account is required.<\/li>\n<li>The free plan stops after 100 searches in a month. It cannot overspend or\ncharge you automatically.<\/li>\n<li>The free plan indexes up to 100 pages. On a large site, use it to test one\nsection rather than an entire archive.<\/li>\n<li>Achla indexes only public pages it is permitted to crawl. Content behind a\nlogin is not indexed.<\/li>\n<li>The widget displays a \"Powered by Achla AI\" credit.<\/li>\n<li>An administrator must connect the site. Moving to a new domain requires\nownership confirmation again.<\/li>\n<li>On an HTTP site, the plugin displays a permanent reduced-security warning.\nHTTPS is recommended.<\/li>\n<li>Colors and styling are configured in the Achla dashboard, not in WordPress.<\/li>\n<\/ul>\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><!-- ACHLAAI_SELFHOSTED_UPDATES_START -->\n6. <strong>Plugin code updates (self-hosted package only).<\/strong> The self-hosted package\n   checks signed update metadata at\n       https:\/\/achlaai.com\/api\/plugin\/releases\/wordpress and downloads a selected\n   immutable ZIP from\n       https:\/\/achlaai.com\/api\/plugin\/releases\/download\/wordpress\/.... The\n   WordPress.org package does not contain this updater and receives code updates\n   only through WordPress.org.\n<!-- ACHLAAI_SELFHOSTED_UPDATES_END --><\/p>\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 watch the\nconnection and indexing status.<\/li>\n<li>Keep Bubble placement or choose Inline or Attach. Test an Attach selector\nbefore saving it. Switch \"Show the widget\" on when you are ready for the\nwidget and its Powered by Achla AI credit to be publicly visible.<\/li>\n<\/ol>\n\n<p>The widget appears only once the connection is valid, the project is active,\nthe index is ready, placement is on, and the current signed release passes\nverification.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20is%20this%20different%20from%20an%20ai%20chatbot%20plugin%20that%20uses%20my%20own%20api%20key%3F\"><h3>How is this different from an AI chatbot plugin that uses my own API key?<\/h3><\/dt>\n<dd><p>Plugins that use your own API key leave you responsible for the\nmodel-provider account, a secret stored in WordPress, and a separate bill that\nchanges with token use. They may also limit indexing to content stored as\nWordPress posts.<\/p>\n\n<p>Achla runs the crawler, index, and model calls as a managed service. It can\nindex permitted public content across the site, including PDFs and pages that\nare not WordPress posts. There is no model-provider key, separate token bill,\nor vector database for you to operate.<\/p><\/dd>\n<dt id=\"is%20this%20a%20live%20chat%20or%20helpdesk%3F\"><h3>Is this a live chat or helpdesk?<\/h3><\/dt>\n<dd><p>No. Achla answers questions from your published content and links to the\npages it used. It does not open tickets, route conversations to a human agent,\nor manage a support inbox.<\/p><\/dd>\n<dt id=\"is%20the%20free%20plan%20really%20free%3F\"><h3>Is the free plan really free?<\/h3><\/dt>\n<dd><p>Yes. It includes 100 searches a month and 100 indexed pages, with no payment\ncard. It is an ongoing plan rather than a trial. When the monthly searches\nare used, search stops until the allowance renews; the plan does not\nautomatically charge you for more.<\/p>\n\n<p>Free projects that remain completely unused are eventually removed after an\nemail warning.<\/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 runs the crawler, index, and model calls. There is no model-provider\nkey to obtain, paste into WordPress, secure, rotate, or refill.<\/p><\/dd>\n<dt id=\"do%20i%20have%20to%20prepay%20for%20tokens%3F\"><h3>Do I have to prepay for tokens?<\/h3><\/dt>\n<dd><p>No. Plans are measured in searches. Paid plans include a fixed allowance, and\nextra usage is purchased as blocks of searches rather than model tokens.<\/p><\/dd>\n<dt id=\"will%20it%20make%20things%20up%3F\"><h3>Will it make things up?<\/h3><\/dt>\n<dd><p>Achla is designed to show an answer only when it can cite supporting pages\nfrom your indexed content. When the available pages do not provide enough\nsupport, it says so instead. AI-generated answers can still be imperfect, so\nvisitors should follow the source links when accuracy matters.<\/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. The answer comes back in the language of the question, including\nright-to-left languages such as Hebrew and Arabic. Your pages do not have to\nbe translated first.<\/p><\/dd>\n<dt id=\"my%20site%20has%20thousands%20of%20pages.%20can%20it%20handle%20that%3F\"><h3>My site has thousands of pages. Can it handle that?<\/h3><\/dt>\n<dd><p>Yes, on a paid plan sized for the site. The free plan indexes 100 pages and is\nintended for testing one section rather than covering an entire archive. Start\nwith the section visitors ask about most, review the answers, and expand if it\nworks for your content.<\/p><\/dd>\n<dt id=\"our%20terminology%20is%20specialized.%20will%20it%20understand%20the%20questions%3F\"><h3>Our terminology is specialized. Will it understand the questions?<\/h3><\/dt>\n<dd><p>This is one of the main reasons to use Achla. Questions are matched against\nthe meaning of indexed pages rather than exact wording, so alternative terms,\nspelled-out acronyms, and plain-language phrasing can reach the relevant\ncontent. Answers still use your indexed pages as their sources.<\/p><\/dd>\n<dt id=\"does%20this%20replace%20the%20wordpress%20search%20i%20already%20have%3F\"><h3>Does this replace the WordPress search I already have?<\/h3><\/dt>\n<dd><p>Only if you choose Attach. Bubble and Inline work alongside your existing\nsearch. Attach connects Achla to the search field already on the site.<\/p><\/dd>\n<dt id=\"what%20content%20does%20it%20index%3F\"><h3>What content does it index?<\/h3><\/dt>\n<dd><p>Public pages that Achla is permitted to crawl, including supported documents\nsuch as PDFs. Content behind a login, and content excluded by robots rules,\nstays out.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20store%20visitor%20data%20in%20wordpress%3F\"><h3>Does the plugin store visitor data in WordPress?<\/h3><\/dt>\n<dd><p>No. It does not store visitor questions, IP addresses, page content, cookies,\nor widget sessions in WordPress. It stores only this site's connection,\nlifecycle, placement, release, and diagnostic state.<\/p><\/dd>\n<dt id=\"the%20widget%20is%20not%20showing%20up.%20why%3F\"><h3>The widget is not showing up. Why?<\/h3><\/dt>\n<dd><p>Open Settings &gt; Achla AI Search. The status screen identifies the reason and\nthe next step. Common causes include ownership confirmation still being\nrequired, indexing not being complete, placement being switched off, or the\nsigned release needing to refresh.<\/p><\/dd>\n<dt id=\"what%20does%20attach%20do%20if%20the%20search%20field%20is%20missing%3F\"><h3>What does Attach do if the search field is missing?<\/h3><\/dt>\n<dd><p>Attach accepts a narrow set of CSS selectors and tests them on the server\nbefore saving. If the element is missing at runtime, the widget falls back to\nBubble and records a warning. The warning clears once the field is found\nagain.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20deactivate%20the%20plugin%3F\"><h3>What happens if I deactivate the plugin?<\/h3><\/dt>\n<dd><p>The widget disappears and scheduled work stops. The connection is retained,\nso reactivating the plugin continues from the previous state. Deactivation\ndoes not disconnect the site or cancel a subscription.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20uninstall%20it%3F\"><h3>What happens if I uninstall it?<\/h3><\/dt>\n<dd><p>Uninstall attempts to disconnect the site, then removes this site's options,\ntemporary connection data, locks, and scheduled hooks. It does not cancel an\nAchla subscription; subscriptions are managed in the Achla dashboard.<\/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 your site&#039;s content into cited AI answers, in the visitor&#039;s language. No API key, token bills, or search infrastructure.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/345237","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=345237"}],"author":[{"embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/achlaai"}],"wp:attachment":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=345237"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=345237"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=345237"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=345237"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=345237"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=345237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}