=== Achla AI Search – Cited AI Answers from Your WordPress Content === Contributors: achlaai Tags: ai search, ai chatbot, site search, knowledge base, chatbot Requires at least: 6.0 Tested up to: 7.0 Requires PHP: 7.4 Stable tag: 0.3.5 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Turn your site's content into cited AI answers, in the visitor's language. No API key, token bills, or search infrastructure. == Description == Visitors do not always use the same words you used on the page. They ask a question in everyday language, use a synonym, or type an acronym you spelled out somewhere else. Keyword search misses the match even when the answer is already on your site. Achla AI Search turns that question into a short answer drawn from your published content, with numbered links to the pages that support it. Visitors can ask in their own language and receive the answer in that language. [See setup, plans, compatibility, and support](https://achlaai.com/en/plugins/wordpress) Achla answers questions about your content. It is not a live chat, helpdesk, or support inbox. **Free plan: 100 searches a month and 100 indexed pages. No payment card.** = What visitors get = * **An answer with sources.** Instead of another results page, visitors get a concise response and links to the pages behind it. * **Meaning, not exact keyword matching.** Synonyms, alternative terminology, spelled-out acronyms, and plain-language questions can reach the relevant content. * **Answers in the visitor's language.** Questions in Hebrew, Arabic, French, German, Spanish, and other supported languages receive answers in the same language, including right-to-left layout where needed. * **Answers grounded in your pages.** Achla is designed not to show an answer without citations from your indexed content. When the available pages do not provide enough support, it says so. As with any AI-generated output, visitors should check the cited pages when accuracy matters. = No API keys or search infrastructure = Achla includes the parts that site owners would otherwise have to assemble and operate themselves: * **No OpenAI or Gemini key.** There is no model-provider account or secret to configure, store in WordPress, rotate, or top up. * **No separate token bill.** Plans are measured in searches, so you do not have to estimate input and output token costs. * **No vector database or search server.** There is no indexing infrastructure to deploy, size, or maintain. * **The crawler is included.** Achla reads permitted public content on your site, including PDFs and pages that are not WordPress posts, and maintains the search index. Achla runs the crawling, indexing, and model calls as a managed service. You install the plugin, connect the site, and choose where the widget appears. = How it works = 1. Install and activate the plugin. 2. Select Connect, sign in to Achla, and confirm that you own the site. No key is copied into WordPress. 3. Achla reads your permitted public pages and builds the index. The plugin shows the connection and indexing status. 4. Choose a placement, preview it, and switch the widget on. = Where it fits best = Achla works on a small site, but its advantage becomes clearer when useful information is spread across more pages than a visitor can browse: * technical documentation and knowledge bases * research groups, laboratories, and institutes * university departments and faculty sites * scientific publications, proceedings, and open archives * medical, legal, and regulatory reference sites * large catalogs, directories, and databases Specialized terminology is a natural fit. A visitor can ask about protein folding when a page discusses conformational dynamics, use a field-specific name for a method, or enter an acronym that is defined elsewhere on the site. Achla matches the question to the meaning of the indexed content rather than requiring the same wording. = Three ways to place it = * **Bubble** — a floating button in the corner. This is the default and requires no page editing. * **Inline** — a shortcode or Gutenberg block placed inside your content. * **Attach** — connects Achla to an existing search field. Bubble and Inline work alongside the WordPress search you already have. Attach lets you reuse the search field already present in your design. = Plans and pricing = * **Free — $0.** 100 searches a month and 100 indexed pages. No payment card. This is an ongoing plan, not a trial that expires. * **Paid plans start at $15 a month** and include a fixed number of searches. Extra usage is purchased in blocks of searches rather than model tokens. That makes usage easier to understand and budget. = Worth knowing before you install = * An Achla account is required. * The free plan stops after 100 searches in a month. It cannot overspend or charge you automatically. * The free plan indexes up to 100 pages. On a large site, use it to test one section rather than an entire archive. * Achla indexes only public pages it is permitted to crawl. Content behind a login is not indexed. * The widget displays a "Powered by Achla AI" credit. * An administrator must connect the site. Moving to a new domain requires ownership confirmation again. * On an HTTP site, the plugin displays a permanent reduced-security warning. HTTPS is recommended. * Colors and styling are configured in the Achla dashboard, not in WordPress. == External services == This plugin requires the third-party Achla AI Search service at `https://achlaai.com`. The service crawls permitted public content, builds and maintains the index, generates cited answers, provides widget configuration, and manages service billing. 1. **Ownership connection.** When an administrator clicks Connect, Resume, or Reconnect, the plugin sends the site origin, WordPress callback URL, and a short-lived ownership challenge to Achla. The secret verifier is sent only after WordPress validates Achla's signed callback. WordPress then stores the site binding, project identifier, public widget key, and a server-side management credential. 2. **Lifecycle status and health.** While connected, WordPress makes paced, authenticated requests to read project and index status. Diagnostics can contain only the classified states `ATTACH_TARGET_MISSING` and `RELEASE_UNAVAILABLE`, software versions, status classifications, and timestamps. They do not contain page content, visitor questions, email addresses, IP addresses, cookies, secrets, arbitrary URLs, or stack traces. 3. **Disconnect.** An administrator disconnect, or uninstall best effort, revokes the installation binding and management credential. It does not cancel an Achla subscription. 4. **Signed widget release.** WordPress periodically requests a signed control and manifest from Achla. The connector checks its signature, expiry, compatibility, rollback state, immutable asset URL, and Subresource Integrity value. The browser loads only a verified release. 5. **Widget use.** The verified widget uses Achla's widget configuration and search APIs. When a visitor asks a question, Achla receives the question, the site's public widget key, the page origin, and the visitor's IP address carried by the HTTPS request. These data are used for site binding, abuse controls, and returning an answer from the indexed public content. 6. **Plugin code updates (self-hosted package only).** The self-hosted package checks signed update metadata at `https://achlaai.com/api/plugin/releases/wordpress` and downloads a selected immutable ZIP from `https://achlaai.com/api/plugin/releases/download/wordpress/...`. The WordPress.org package does not contain this updater and receives code updates only through WordPress.org. The plugin's three public WordPress REST routes are limited to a signed ownership callback, a no-store release decision, and nonce-protected, same-origin runtime diagnostics. All management routes require an administrator capability and WordPress REST nonce. The local bridge does not use cookies, browser storage, advertising identifiers, iframes, or page-content telemetry. Review the service terms before enabling the widget: * Privacy Policy: https://achlaai.com/legal/privacy * Terms of Service: https://achlaai.com/legal/terms == Installation == 1. Install the plugin ZIP through Plugins > Add New > Upload Plugin, or place the `achlaai` directory under `/wp-content/plugins/`. 2. Activate Achla AI Search. 3. Open Settings > Achla AI Search and select Connect. 4. Complete ownership setup on Achla, then return to WordPress and watch the connection and indexing status. 5. Keep Bubble placement or choose Inline or Attach. Test an Attach selector before saving it. Switch "Show the widget" on when you are ready for the widget and its Powered by Achla AI credit to be publicly visible. The widget appears only once the connection is valid, the project is active, the index is ready, placement is on, and the current signed release passes verification. == Frequently Asked Questions == = How is this different from an AI chatbot plugin that uses my own API key? = Plugins that use your own API key leave you responsible for the model-provider account, a secret stored in WordPress, and a separate bill that changes with token use. They may also limit indexing to content stored as WordPress posts. Achla runs the crawler, index, and model calls as a managed service. It can index permitted public content across the site, including PDFs and pages that are not WordPress posts. There is no model-provider key, separate token bill, or vector database for you to operate. = Is this a live chat or helpdesk? = No. Achla answers questions from your published content and links to the pages it used. It does not open tickets, route conversations to a human agent, or manage a support inbox. = Is the free plan really free? = Yes. It includes 100 searches a month and 100 indexed pages, with no payment card. It is an ongoing plan rather than a trial. When the monthly searches are used, search stops until the allowance renews; the plan does not automatically charge you for more. Free projects that remain completely unused are eventually removed after an email warning. = Do I need my own OpenAI or LLM API key? = No. Achla runs the crawler, index, and model calls. There is no model-provider key to obtain, paste into WordPress, secure, rotate, or refill. = Do I have to prepay for tokens? = No. Plans are measured in searches. Paid plans include a fixed allowance, and extra usage is purchased as blocks of searches rather than model tokens. = Will it make things up? = Achla is designed to show an answer only when it can cite supporting pages from your indexed content. When the available pages do not provide enough support, it says so instead. AI-generated answers can still be imperfect, so visitors should follow the source links when accuracy matters. = Can visitors ask in their own language? = Yes. The answer comes back in the language of the question, including right-to-left languages such as Hebrew and Arabic. Your pages do not have to be translated first. = My site has thousands of pages. Can it handle that? = Yes, on a paid plan sized for the site. The free plan indexes 100 pages and is intended for testing one section rather than covering an entire archive. Start with the section visitors ask about most, review the answers, and expand if it works for your content. = Our terminology is specialized. Will it understand the questions? = This is one of the main reasons to use Achla. Questions are matched against the meaning of indexed pages rather than exact wording, so alternative terms, spelled-out acronyms, and plain-language phrasing can reach the relevant content. Answers still use your indexed pages as their sources. = Does this replace the WordPress search I already have? = Only if you choose Attach. Bubble and Inline work alongside your existing search. Attach connects Achla to the search field already on the site. = What content does it index? = Public pages that Achla is permitted to crawl, including supported documents such as PDFs. Content behind a login, and content excluded by robots rules, stays out. = Does the plugin store visitor data in WordPress? = No. It does not store visitor questions, IP addresses, page content, cookies, or widget sessions in WordPress. It stores only this site's connection, lifecycle, placement, release, and diagnostic state. = The widget is not showing up. Why? = Open Settings > Achla AI Search. The status screen identifies the reason and the next step. Common causes include ownership confirmation still being required, indexing not being complete, placement being switched off, or the signed release needing to refresh. = What does Attach do if the search field is missing? = Attach accepts a narrow set of CSS selectors and tests them on the server before saving. If the element is missing at runtime, the widget falls back to Bubble and records a warning. The warning clears once the field is found again. = What happens if I deactivate the plugin? = The widget disappears and scheduled work stops. The connection is retained, so reactivating the plugin continues from the previous state. Deactivation does not disconnect the site or cancel a subscription. = What happens if I uninstall it? = Uninstall attempts to disconnect the site, then removes this site's options, temporary connection data, locks, and scheduled hooks. It does not cancel an Achla subscription; subscriptions are managed in the Achla dashboard. == 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. == Upgrade Notice == = 0.3.5 = Security update. The runtime placement diagnostic endpoint now requires a WordPress nonce. Updating is recommended. == Changelog == = 0.3.5 = * Security hardening: the runtime placement diagnostic endpoint now requires a WordPress nonce issued with the bridge script. = 0.3.4 = * Move settings maintenance and public runtime diagnostics to asynchronous scheduled work. * Respect lifecycle and release backoff in due-aware status, heartbeat, and release cron callbacks. * Enforce signed CMS control expiry when selecting and downloading self-hosted update packages. = 0.3.2 = * Keep setup in the current tab so registration and email verification can return to the original WordPress connection. * Continue bounded status polling while the first index and signed widget release are being prepared. * Improve WordPress.org compatibility checks, release gates, and package metadata.