AskMason

Description

AskMason adds a small “ask” box to a page. A visitor types a question and gets an answer drawn from that page’s own text, with the section it came from. When the page does not cover the question, the assistant says so and points the visitor to a contact you set, rather than guessing.

It is built for long reference pages that people would rather ask than scroll: a trip guide, a program, a policy, a product manual.

How it works

  • The plugin reads the page’s text as it is stored (Elementor pages from their design data, other pages from their block content) and keeps a snapshot. It never renders the page, so nothing another plugin would show only to some visitors can reach the assistant: a block from another plugin that renders at view time is left out along with everything inside it. The snapshot refreshes when the page is saved and before any question if it has gone stale.
  • Each question is sent to the Anthropic Messages API with the whole page as a cached prompt, so a long page costs one full read per cache window rather than one per question. A document budget (200,000 characters by default, on the Model tab) bounds what one page can cost; a longer page is cut at a paragraph break and the cut is shown on the page’s edit screen. Supplementary notes are capped at 20,000 characters.
  • You can add “supplementary notes” on the page’s edit screen: facts the assistant may use that are not on the page. The notes are not shown on the page, but the assistant may quote them in an answer, so they are not a place for anything a visitor should not read. Where the page and the notes disagree, the page wins.
  • Only people who can already view the page can ask about it. A page password counts. You can narrow that to logged-in users or roles, or plug in your own gate.
  • Daily limits per visitor, per address, and site-wide keep the bill bounded, counted on the database so they hold under concurrent traffic and cache eviction. A per-minute cap and a cap on questions in flight with the model absorb bursts without spending the day’s allowance. A monthly token budget is the backstop for the month: when the tokens the provider has reported since the first of the month reach it, the ask box leaves every page until the next month.
  • Every question, answer, and outcome is logged for the site administrator, with filters and a CSV export, and purged after a retention period you choose.

Bring your own key

AskMason never carries a key of its own. This plugin sends each question to Anthropic’s API under your own account: enter your Anthropic API key on the Model tab beside the model you choose (one Save stores both), or define ASKMASON_ANTHROPIC_API_KEY (or Anthropic’s own ANTHROPIC_API_KEY) in wp-config.php; a constant takes precedence over the screen. You are billed by Anthropic for the questions your visitors ask; set a spend limit on its dashboard as well as the plugin’s daily limits and the monthly token budget. The page text rides with every question and is cached by Anthropic under a lifetime you set, so a long page costs one full read per cache window rather than one per question.

The paid edition, sold separately (see Editions), can use OpenAI, xAI, Google, Mistral, DeepSeek, or an OpenAI-compatible endpoint of your own instead, each under its own key.

Two display modes

  • Hybrid (default): a compact ask bar where the shortcode sits. The first question opens a conversation panel, docked in the corner on desktop and full screen on phones. Minimizing it leaves a small tab in the corner that pops it back out; the tab can be dismissed, after which a Resume link on the ask bar brings the conversation back.
  • Inline: the whole conversation in place.

Editions

The free plugin is the whole product for one page on one site with an Anthropic key: the ask box in either display mode, the two Mason looks, supplementary notes, access rules, daily limits, the question log, and the privacy tools. Nothing in it is switched off or greyed out. An optional “AskMason by Auth/Technic” credit can be enabled on the Appearance tab in every edition; it is off by default.

Paid licenses are sold through Freemius (AskMason > Upgrade in the admin menu opens the pricing page; nothing is sent to Freemius until you buy or activate a license). Starter adds the style controls (colors, corner radius, the docked panel, custom CSS, and adopting your theme’s look), the other providers (OpenAI, xAI, Google, Mistral, DeepSeek, and any OpenAI-compatible endpoint), CSV export of the log, and settings export and import. Pro adds, for up to five sites, answers from the whole site, the Content gaps report and digest, per-page overrides, and the outgoing webhook. Agency covers unlimited sites and network activation. A license is annual; when it lapses, the paid features keep working for 14 days, after which the assistant keeps answering on the provider you configured while the other paid features turn off until the license is renewed. Terms, privacy, support, and refunds: https://authtechnic.com/askmason/terms, /privacy, /support, /refunds.

Multisite

AskMason can be activated on one site of a network or for the whole network. Each site stands alone: its own Anthropic key, settings, snapshots, question log, daily limits, and retention, so each site’s questions are billed to that site’s key. A network-wide activation sets every site up, a site added later is set up when it is created, and uninstalling cleans every site.

Shortcode

[askmason] places the ask box. Attributes:
  • title="..." overrides the assistant name for that placement.
  • mode="inline" or mode="hybrid" overrides the display mode setting for that placement.

Several placements on one page share one conversation in hybrid mode. In inline mode there is one placement per page; a second inline placement is left empty.

Styling

The widget ships with two branded base styles: Mason (gold and ink, hard shadows, square corners, its own fonts) and Mason, quiet (the same design with ink in place of the gold, which stays only in the logo, so it sits on any site). Switch the base style to “adopt” and it takes the page’s link color for the button and links, the page’s text color and font, and the page background behind the panel. The conversation panel can be a floating card in the corner or a sidebar docked to the right edge.

AskMason > Settings > Style overrides that with an accent color, text on accent, text color, panel background, corner radius, and a Custom CSS box applied inside the widget. Each color has a picker, a chip strip shows every color the widget will use and where it comes from, and a live sample of the ask box updates as you change things. Setting an accent also sets the text on it (by contrast) and the tint of the visitor’s turn; setting the text color also sets the muted text and border tints.

A theme or Elementor stylesheet overrides both by setting custom properties on the widget’s host classes, .askmason-widget and .askmason-panel-host: --askmason-accent, --askmason-accent-fg, --askmason-fg, --askmason-bg, --askmason-muted, --askmason-border, --askmason-user-bg, --askmason-radius, --askmason-font.

External services

This plugin sends data to the following services. Nothing is sent to Auth/Technic, the plugin’s maker, at any time.

Anthropic API (https://api.anthropic.com). This is what answers the questions: the plugin has no model of its own. When a visitor asks a question on a page where AskMason is enabled, the plugin sends to Anthropic, over HTTPS, the text of that page as stored (and the page’s supplementary notes if you wrote any), the visitor’s question, the earlier turns of that visitor’s conversation on the page (up to six), the assistant instructions, and your Anthropic API key as the request credential. Nothing is sent before a question is asked, and nothing else is sent: not the visitor’s address, cookie, or account. Anthropic’s handling of API data is governed by its Commercial Terms of Service (https://www.anthropic.com/legal/commercial-terms) and Privacy Policy (https://www.anthropic.com/legal/privacy). The paid edition can send the same request to a different provider you choose instead.

Freemius (https://freemius.com). The plugin includes the Freemius SDK, which handles licensing and updates for the paid edition. In this free plugin it runs in anonymous mode: it shows no opt-in and sends nothing on activation or during use. It contacts Freemius only if you open AskMason > Upgrade, which loads Freemius’s pricing page (sending the plugin’s product id and version, and your site’s URL, so the page can show the plans), or if you buy or activate a paid license, which sends your site URL, the plugin and WordPress versions, and the license key so the license and updates can be served. Freemius’s Terms of Service (https://freemius.com/terms/) and Privacy Policy (https://freemius.com/privacy/) apply to those exchanges.

Privacy

Questions and answers are stored in your database for the retention period you set (180 days by default) and are visible to administrators. Visitors may type personal details into questions; mention the log in your privacy notice and keep the retention short.

Entries recorded with a WordPress user id (the “Record user id” setting) are covered by WordPress’s privacy tools: Tools > Export Personal Data returns that account’s questions and answers, and Erase Personal Data blanks them and clears the user id while keeping the entry for usage counts. Entries without a user id cannot be attributed to a person by the plugin, since addresses are never stored and the visitor identifier is random; they are removed by the retention purge, or one at a time on the Usage & log tab.

Visitor addresses are never stored. Daily limits use a salted hash that changes every day. Behind a reverse proxy or CDN, list its addresses under Trusted proxies on the Access and limits tab so the per-address limit sees visitors rather than the proxy; only the address the listed proxy appended is believed. The WordPress user id is stored on log entries only if you turn that on.

A conversation stays in the visitor’s browser tab until the tab is closed or New conversation is used, and after a login or logout it is shown only to the account that had it.

Anonymous visitors receive a cookie (askmason_session) so the per-visitor limit can work. It holds a random identifier and nothing else, and lasts 30 days, so it is a persistent identifier rather than a session cookie; the daily limit counts against it.

The Mason fonts ship with the plugin and are served from your own site; the plugin makes no request to a font service or to any third party other than the model provider you chose. The Fonts switch on the Appearance tab uses the theme font instead.

Each question, with the page text and any notes, is sent to the model provider you chose under your account and that provider’s terms.

Nothing is sent to Auth/Technic when a visitor asks a question. What leaves the site, and to whom, is listed under External services above. The full policy is at https://authtechnic.com/askmason/privacy.

Screenshots

Installation

  1. Upload the askmason folder to /wp-content/plugins/, or install the zip from Plugins > Add New.
  2. Activate the plugin.
  3. Go to AskMason > Settings. On the Model tab choose your provider, pick a model, paste the provider’s API key in the field beside them, and save: the three are stored together. On the General tab check the contact email and phone the assistant gives when the page does not answer, and which of them to offer; the email starts as the site’s admin address. The other tabs hold appearance, placement, access and limits, privacy, and the question log.
  4. Edit the page. Tick “Enable AskMason on this page” in the AskMason box, add any supplementary notes, and save. The checkbox is what turns a page on; a shortcode on a page that is not ticked shows nothing to visitors (and a reminder to editors), so pasting a template never starts paid usage by accident.
  5. Put the [askmason] shortcode where the ask box should appear. In Elementor, a Shortcode widget works.

Uninstalling the plugin removes the question log, the settings, and every page’s notes and snapshot. Export the log (Usage & log tab) and the settings (Privacy tab) first if you want to keep them. The plugin needs PHP 8.2 and WordPress 7.0; on an older host it declines to activate and says so, rather than failing.

Public pages containing the widget can use full-page caching. When a visitor asks a question, the widget first obtains a fresh security token in an uncached request. Keep WordPress AJAX and the AskMason question endpoint out of CDN/API caching. Password-protected, private, and personalized pages still need their normal access-aware caching rules.

When upgrading from a version that embedded tokens in page HTML, purge the page and JavaScript caches once so visitors receive the updated widget and configuration.

FAQ

Does it search my whole site?

By default, no: it answers from the page it is placed on, plus that page’s supplementary notes, so the answer can always be checked against the page. A page can also answer from the whole site: tick “Answer from the whole site on this page” in its AskMason box. That page’s own text still comes first, then the passages from your other enabled pages that bear on the question, and the answer names the page it drew on with a link under it. Give a page a Site-wide priority of Primary in its box to have it consulted before the rest, or Background to have it consulted last; most pages stay Normal, the default, so there is nothing to sort. Only pages the visitor could open are consulted: a password-protected page is used only for a visitor who has entered its password. The Placement tab lists your enabled pages by priority.

What happens when the page does not have the answer?

The assistant says the page does not cover it and gives the contact email, phone, or both from your settings, whichever you chose to offer. It is told never to guess: it answers only from what the page and the notes contain, and says so when they do not contain the information. The “Take particular care with” setting on the General tab names the subjects where that matters most for your content (it starts as travel documents, visa, medical or health requirements, safety, accessibility, dates and times); edit it for your pages, or clear it to keep the general rule alone.

How do I find out what the page is missing?

The Usage & log tab opens with a Content gaps report: every question the assistant could not answer from the page in the last 7, 30, or 90 days, grouped so the same question in different words counts once, most asked first, each with a link into the log. Add the answer to the page or its notes and the gap closes. A digest of the top gaps is emailed weekly (daily or off on the Privacy tab) to an address you choose, or the site’s admin email. The digest carries visitors’ questions only, never answers or identities, and nothing is sent for a period with no gaps.

Which parts of an Elementor page does it read?

Headings, text editors, HTML widgets, and icon lists, in page order. Images, galleries, and other non-text widgets are listed as “not read” in the AskMason box on the page’s edit screen, so you can see what the assistant cannot.

And a page built with the block editor, or the classic editor?

The text of every WordPress block that stores its content: paragraphs, headings, lists, quotes, tables, covers, media and text, accordions, tabs, and anything nested inside groups and columns, in page order; classic-editor text is read as paragraphs. Not read: WordPress blocks that fetch their content when the page is shown (latest posts, query loops, post content, synced patterns), blocks from other plugins that render at view time (including everything nested inside them, since such a block may show its contents to some visitors and not others), blocks whose plugin is no longer active, and shortcodes. Everything not read is listed in the AskMason box on the page’s edit screen. If something the assistant should know lives in one of those, put it in the supplementary notes.

Can I send every question somewhere else?

Yes, two ways. Requests rejected for exceeding a limit are logged but excluded from both. Developers: the askmason_question action fires after every question with the page, the question, the answer, the outcome, and the usage, once the visitor has the answer. Integrations: an outgoing webhook on the Privacy tab posts the same as JSON to an https URL of yours, signed with a secret you set (an HMAC-SHA256 of the body in the X-AskMason-Signature header), with one retry and a failure list on the Usage & log tab. It is off until you set a URL. The payload carries visitors’ questions and answers, which may hold personal details; what the receiving system does with them is your responsibility.

Can one page have its own settings?

Yes. The AskMason box on the page’s edit screen has an “Overrides for this page” section: assistant name, intro line, contact email and phone and which to offer, the “take particular care with” topics, the model (within your provider), the document budget, and the questions per visitor per day. Empty means the site setting; a line above the fields says what the page overrides. A shortcode attribute such as title still wins for that placement.

What do the paid editions add?

See Editions above. In short: Starter, the style controls, the other providers, CSV export, and settings backup; Pro, answers from the whole site, the Content gaps report and digest, per-page overrides, and the webhook, on up to five sites; Agency, unlimited sites and network activation. The free plugin answers questions from a page with an Anthropic key and is not a trial: it does not expire and nothing in it is locked.

Can I cap what a month can cost?

Set a Monthly token budget on the Access & limits tab. Every token the provider reports is counted alike (uncached input, cache reads, cache writes, and output), and when the month’s total reaches the budget the ask box disappears from every page, rather than refusing, until the first of the next month (UTC); a visitor who asks through a cached page is told the page cannot answer just now. Editors see a note where the box was. An administrator notice appears at 80 percent and again at 100 percent, once each per month. The budget is in tokens rather than money because providers price them differently: the header and the Usage & log tab show this month’s tokens so you can set it from your provider’s rate. 0, the default, turns it off. Keep log retention at 31 days or more for the count to be exact, since the month is summed from the log.

Can I use it on a password-protected page?

Yes. A visitor has to enter the page password before the assistant will answer, and the assistant is never available on a page the visitor could not view.

Which models can it use?

Claude through Anthropic’s API, GPT through OpenAI’s, Grok through xAI’s, Gemini through Google’s, Mistral’s and DeepSeek’s models through theirs, or any OpenAI-compatible endpoint (a gateway, or a server of your own). Provider and model are settings; effort applies to Anthropic and OpenAI, and the prompt cache lifetime to Anthropic. The rules the assistant follows are the same for every provider, and each provider’s own tests in the plugin’s suite prove one real round trip.

My pages are restricted by another plugin. Does the assistant know?

Not on its own. The plugin honors what WordPress itself knows: a page’s status, who may read a private page, and the page password. A membership or paywall plugin restricts a page when it is rendered, and the assistant never renders the page, so tell the assistant through the askmason_can_view filter. It receives WordPress’s verdict, the page id, and the user id (0 for a visitor); return false to refuse. Returning true cannot admit someone WordPress would refuse.

add_filter( 'askmason_can_view', function ( $allowed, $page_id, $user_id ) {
    return $allowed && my_site_user_can_see_page( $page_id, $user_id );
}, 10, 3 );

Can I gate it to my own registered visitors without WordPress accounts?

Yes. Set “Who may ask” to hook and return an identifier from the askmason_asker_id filter. The filter decides for every caller, logged-in WordPress users included, so it can be stricter than a login. To admit WordPress accounts as well, return the user id when someone is logged in:

add_filter( 'askmason_asker_id', function ( $id, $request, $page_id ) {
    if ( is_user_logged_in() ) {
        return (string) get_current_user_id();
    }
    return my_site_visitor_id( $request ); // null when not registered
}, 10, 3 );

Reviews

There are no reviews for this plugin.

Contributors & Developers

“AskMason” is open source software. The following people have contributed to this plugin.

Contributors

Translate “AskMason” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.0.7

  • The “AskMason by Auth/Technic” credit is an Appearance opt-in, off by default; erasure clears every derived field; a fully hidden Elementor design gives an empty snapshot; the monthly token total re-sums from the log; a refused request fires no action or webhook.

1.0.6

  • The free plugin carries none of the paid edition’s code; an External services section in this readme; the translation loader removed.

1.0.5

  • The plugin’s own page as its Plugin URI.

1.0.4

  • The listing’s screenshots and tags; two older upgrade notices shortened.

1.0.3

  • The free build leaves the paid editions’ files out, and the paid build recognizes itself.

1.0.2

  • Uninstall cleanup runs through Freemius’s uninstall hook; nothing else changes.

1.0.1

  • Points at the Freemius product AskMason is sold through; 1.0.0 was never shipped.

1.0.0

  • The first release for sale. Editions: Free, Starter, Pro, and Agency, licensed through Freemius, with a 14-day grace after a license lapses. The free plugin is the whole product for one page with an Anthropic key; see Editions above for what each paid tier adds.
  • A Monthly token budget on the Access & limits tab: when the month’s tokens reach it, the ask box leaves every page until the first of the next month. The header and the Usage & log tab show this month’s tokens.
  • The Model tab saves the provider, its model, and its API key together, with a key field per provider.
  • An “AskMason by Auth/Technic” line at the foot of the box.
  • The assistant writes without em dashes, and a partly covered question no longer shows a raw marker mid-answer.

0.9.0

  • The Pro tier. A Content gaps report above the question log: the questions the assistant could not answer, grouped so the same question in different words counts once, with a weekly (or daily) emailed digest.
  • Per-page overrides in the AskMason box: assistant name, intro, contact, care topics, model, document budget, and daily limit for one page.
  • An askmason_question action after every question, and an outgoing webhook that posts each question and answer as signed JSON to your https URL, with a retry, a failure list, and a Send test control.
  • The site-wide assistant: a page can answer from itself first and then from your other enabled pages, ranked by a Site-wide priority you set per page, with the pages it drew on linked under the answer.

0.8.0

  • Other model providers: a Provider setting on the Model tab for Anthropic, OpenAI, xAI, Google, Mistral, DeepSeek, or a custom OpenAI-compatible endpoint, each with its own key and model list. Nothing changes for a site that never touches it.
  • A second branded base style, “Mason, quiet”: the Mason design with ink in place of the gold, so the widget sits on any site.
  • The Mason fonts ship with the plugin and are served from your site; no request leaves the site for fonts in any setting.
  • Settings export and import on the Privacy tab (a JSON file of every setting, never a key).
  • A one-time notice after activation with the three setup steps, and a translation template.
  • On a host below PHP 8.2 or WordPress 7.0 the plugin declines to activate with a plain message instead of a fatal error.
  • The About tab and the readme say what uninstall removes.

0.7.0

  • A page is enabled by the checkbox in the AskMason box and by nothing else; a shortcode on an unticked page shows nothing to visitors and a reminder to editors. One inline placement per page.
  • Daily limits are counted on the database (no more lost or raced counts), plus two burst caps: questions per minute site-wide and questions in flight with the model. “Behind a proxy” is replaced by a Trusted proxies list. Over-limit entries store no question text.
  • Prompt template 3: the assistant is told never to fill a gap from general knowledge, with a “Take particular care with” list you set on the General tab. Existing snapshots refresh on the next question.
  • The concierge contact is a validated email and a validated phone, with a choice of which the assistant offers.
  • Pages built with the block editor are read from stored content: blocks from other plugins that render at view time are left out with everything inside them; WordPress’s own blocks are read whatever their rendering.
  • Access: the askmason_can_view filter for sites that restrict pages by other means; in Custom hook mode the hook decides for every caller, logged-in users included.
  • A document budget bounds what one page can cost (200,000 characters by default, cut at a paragraph break and shown in the AskMason box); notes are capped at 20,000 characters.
  • WordPress’s privacy tools cover the question log (export and erase by account); each log entry has a Delete control.
  • The question log records the model’s stop reason, retries, and the administrator’s error text, shown in a Diagnostics column; the CSV export is stable while questions arrive.
  • Multisite: network activation, a site added later, deactivation, and uninstall each act on every site; each site stands alone with its own key and settings.
  • An About tab; a post-update check script for after WordPress, Elementor, or PHP updates.
  • On phones the open panel is a modal dialog; a stored conversation is shown only to the account that had it; the widget’s 45-second deadline covers a stalled response; a burst of small fixes from a code review.

0.6.0

  • Pages with the widget can be served from a full-page cache: the security token is fetched when a question is sent, not embedded in the page.
  • Backslashes survive in notes and snapshots; a long answer no longer jams the conversation; New conversation during a pending request abandons it cleanly.
  • The ask bar follows the panel’s pattern; no shadow on the panel.
  • US spelling throughout.

0.5.0

  • The Mason base style: gold and ink, hard shadows, square corners, its own fonts (with a switch to use the theme font). The previous look is the “adopt” base style.
  • Conversation panel as a floating card or a docked sidebar; it minimizes to a tab that pops it back out.
  • Empty state, typing indicator, a status line for reading, failures, and the daily limit; the AskMason logo throughout.
  • Settings screen rebuilt: header, tabs, color pickers with chips and a live sample, copyable shortcodes, a save bar, and the question log with usage cards on its own tab.
  • The concierge contact starts as the site’s admin email on a fresh install.

0.4.0

  • Hybrid display: an ask bar in place, the conversation in a docked panel or a full-screen overlay on phones.
  • Styling in three layers: adopted from the page, Style settings, theme CSS.
  • Plugin readme and changelog.

0.3.0

  • Deflections are logged as such: the prompt marks a “not covered” reply and the log counts it.
  • Settings screen is the primary place to enter the API key; a constant still takes precedence.
  • Settings and Question log links on the Plugins screen.

0.2.0

  • Question log with filters and CSV export, settings screen, retention purge, uninstall.

0.1.0

  • First end-to-end version: page extraction, snapshot and notes, cached prompt, direct Messages API client, REST route with access checks and daily limits, Shadow DOM widget.