MWD AI Assistant – Local Lead Generation

Plugin Banner

MWD AI Assistant – Local Lead Generation

by Arash Khalaj

Download
Description

MWD AI Assistant adds a friendly chat assistant to your WordPress site. It answers visitor questions using the business instructions and approved answers you write, through your own OpenAI API account. There is no MWD account, license key or subscription to manage.

What you get for free

  • One assistant, shown as a floating chat bubble, inline with the [mwd_ai_assistant] shortcode, or both.
  • Business details and location: your name, phone, email and contact page, plus your location’s address, map link and weekly opening hours, which the assistant shares when visitors want to contact you, visit, order or book.
  • Manual Knowledge: write approved questions and answers, with an optional public link the assistant can show.
  • Business instructions that steer tone and scope, plus a language setting (match the visitor, the site language, or a fixed language).
  • Full right-to-left support, automatic text direction, and a widget that inherits your site font.
  • Appearance controls for colors, font sizes, width, height and position.
  • Private visitor sessions: a visitor can start over or erase their own chat at any time.
  • Recent History for administrators, grouped by conversation, with permanent erase.
  • Safety limits you control: a daily token budget and per-visitor and per-IP message rates.
  • Encrypted API key storage, WordPress privacy export and erase support, and automatic cleanup of expired conversations.
  • A setup checklist, a connection test and a diagnostics page to confirm everything works.

Everything above works without payment to MWD. OpenAI bills API usage to your own account.

Optional Pro add-on

MWD AI Assistant Pro is a separate plugin that runs on top of this one. It adds website knowledge import, more AI providers, lead forms and a lead inbox, email delivery, reports, analytics, multiple assistants and white-label options. Core never contains locked Pro code, and it stays fully usable without Pro.

Privacy by design

  • Your API key is encrypted on your server and never sent to the browser.
  • Common email addresses, North American phone numbers and Canadian postal codes are masked in visitor messages before they are stored or sent to the AI service. Replies can include your own business contact details. This reduces exposure; it is not complete anonymization.
  • Conversations expire after seven days by default (one to seven days, your choice).
  • The browser keeps only a session token, never the transcript.
  • No tracking, fonts or marketing calls load from third-party servers.

External services

This plugin connects to the following services only in the situations described.

OpenAI API

Used to generate chat replies. Requests go to https://api.openai.com/v1/responses only after you save an API key and enable the assistant, when a visitor sends a message, or when you click Test saved provider connection. Each request contains your business instructions, your site name and address, the business details and primary location you entered (such as phone, email, address and opening hours), up to five relevant approved answers, up to twelve recent messages of that conversation (with common contact details masked), the visitor’s message, and the definitions and results of available tools. The API key is sent as an authorization header from your server. A request that OpenAI answers with a rate limit or a temporary server error is sent again, at most twice. Requests set store: false; OpenAI’s own abuse-monitoring retention may still apply. You are responsible for your OpenAI account, billing, and any notice or consent your visitors need.

  • Terms of use: https://openai.com/policies/services-agreement/
  • Privacy policy: https://openai.com/policies/privacy-policy/
  • API data controls: https://developers.openai.com/api/docs/guides/your-data

Freemius (optional price lookup)

The Upgrade page can show current Pro add-on prices. Only when an administrator clicks View current Pro prices, the server sends one request to https://api.freemius.com/v1/plugins/38266/pricing.json using the product’s public key. No API key, conversation, email address, site account or license is sent; Freemius receives your server IP address and standard request details. Choosing an offer opens the Freemius checkout in a new tab.

  • Terms of use: https://freemius.com/terms/
  • Privacy policy: https://freemius.com/privacy/

Maple Web Design support email

Only when an administrator submits the Help & Support form and ticks the consent box, WordPress sends an email to info@maplewebdesign.ca containing the reply address, site URL, WordPress and plugin versions, subject and message. Ordinary chat never contacts Maple Web Design.

  1. Install and activate the plugin from Plugins > Add New, or upload the ZIP file.
  2. Open MWD AI Assistant > Setup and paste your OpenAI API key. You can create one at https://platform.openai.com/api-keys. A ChatGPT subscription does not include API credits.
  3. Click Test saved provider connection to confirm your key and model work.
  4. Write your business instructions under Assistant and add your business details, location and approved answers under Manual Knowledge.
  5. Turn on Enable assistant and choose Floating widget, Shortcode only, or both.
  6. For inline placement, add [mwd_ai_assistant] to a Shortcode block or a page builder shortcode widget.
  7. Review Privacy & Usage, then clear any page cache so visitors see the assistant.

Network-wide activation on multisite is not supported; activate the plugin on each site separately.

Do I need an account with MWD?

No. You only need your own OpenAI API key. The plugin never contacts MWD during normal use.

How much does it cost to run?

The plugin is free. OpenAI charges your API account for each reply. The daily token safety limit (500,000 tokens by default) caps how much the assistant can use per day. Provider invoices are the authoritative record of your usage.

Why does the chat say it is unavailable?

Check that the assistant is enabled, that a readable API key is saved, that your OpenAI account has billing and access to the selected model, and that today’s safety limit has not been reached. The Diagnostics page shows the last provider status without exposing the key.

How is my API key stored?

It is encrypted with AES-256-GCM using keys derived from your WordPress salts. Leaving the field blank keeps the saved key; Clear saved key removes it. If your salts change, enter the key again. You can also define MWDAI_CORE_OPENAI_API_KEY in wp-config.php to manage the key outside the dashboard.

How long are conversations kept?

Seven days by default, adjustable from one to seven days. Expired conversations become inaccessible immediately, and an hourly task deletes them. Deletion can be delayed while WordPress cron is disabled or the plugin is inactive, and your backups may keep older copies.

Does it work with page caching?

Yes. The widget loads its settings and a fresh session from the server, so cached pages stay correct. After changing appearance or display mode, clear your page cache.

Can many visitors chat at the same time?

Yes. The whole-site limits (3,000 new chats and 6,000 messages a minute) are far above what real visitors reach, and visitors behind one shared address (an office or a mobile network) are not refused in normal use. Each message keeps one PHP worker busy while the AI replies, so the host must have enough workers: 5 to 10 are enough for about ten people chatting at once, 20 to 30 for about a hundred active chats, and around 50 if hundreds of visitors may send at the same moment. The bundled documentation explains how to size them.

My site is behind a CDN or reverse proxy. Are rate limits shared?

Core uses the address PHP receives and does not trust forwarding headers, so visitors can share a per-IP limit behind a proxy. If you control the proxy, return the verified visitor address with the mwdai_core_client_ip filter, or raise the per-IP limit.

Can the assistant take actions or submit forms?

Core answers questions and can show approved public links. It cannot submit forms or perform actions on its own. Extensions such as the Pro add-on can register confirmed actions, which always require the visitor to confirm first.

What happens when I uninstall?

By default all data is kept. If you tick Permanently delete Core data on uninstall under Privacy & Usage, uninstalling removes this plugin’s tables and settings on a single-site installation. On multisite, data is always kept. Other plugins, including the Pro add-on and its license, are not changed. Deactivating only stops the scheduled cleanup.

Useful addition to my website

By innoplay on October 2, 2026

We run an indoor playground, and parents often have questions before they visit, especially about age groups, drop in play, parties, and our hours. This plugin has been a helpful way to make that information easier to find on our website.

What we like most is that we can write and review the answers ourselves, so the assistant reflects how our business actually works. The chat is easy for visitors to use, and it gives them a place to start when they are not sure which page to look at.

2.12.3

  • The chat window keeps one direction for the whole visit: the one set in Appearance, or with “auto” your site’s direction. A visitor writing in another language no longer turns the whole chat around.
  • Every message, button, link and suggestion shows in its own direction, so English reads left to right and Persian or Arabic right to left in the same chat, with punctuation at the correct end.
  • In a right-to-left chat the whole layout is mirrored: the assistant’s messages now sit on the right and the visitor’s on the left (before, they kept the left-to-right sides).
  • Only the send arrow is mirrored in a right-to-left chat; the buttons of other forms inside the chat (an add-on’s request form) are never mirrored.
  • The buttons under the messages line up with the messages and wrap evenly on small screens, in both directions.
  • On dark pages the chat shows no light line at its rounded corners and no light outline around the shortcode chat.
  • Persian and Arabic letters fall back to a Persian/Arabic system font after your site’s own fonts. Nothing is downloaded from other sites.
  • Developers: skins can colour the header buttons with --mwdai-core-control-background, --mwdai-core-control-hover and --mwdai-core-control-icon, replace the Persian and Arabic fallback with --mwdai-core-script-font, and choose close_icon (cross, chevron, minus) and erase_icon (trash, eraser) in their widget presentation. Extension API 1.10 and widget API 1.2 are unchanged.

2.12.2

  • Chat buttons that start a conversation (such as conversation starters from an add-on) can now hide themselves once the visitor has sent a message, also when a page is reloaded during a conversation, and come back when the conversation is reset. Developers: the widget script’s registerControl() accepts before_message: true (widget API 1.2).

2.12.1

  • Many visitors can chat at the same time: the whole-site limits of 120 messages and 120 new chats a minute are now 6,000 messages and 3,000 new chats, far above what real visitors reach, so busy moments are no longer refused. An IPv6 visitor is counted by its /64 network. The per-visitor and per-IP limits and the daily token limit still protect the site.
  • Visitors behind one shared address (an office, a school, a mobile network) are no longer refused: one IP may now start 300 new chats a minute (was 15) and send 600 messages a minute by default (was 30). A per-IP message limit still at the old default of 30 is raised to 600 once; any other value you chose is kept.
  • The daily token limit now counts real use: each reply reserves a realistic estimate and then counts the usage OpenAI reports, so many replies can run at once without reaching the limit early.
  • When OpenAI is briefly overloaded or rate-limits a request, Core tries again (at most twice, within a few seconds) before giving up, and the visitor sees a clear “please send again in a moment” message. When the OpenAI account is out of credit, the chat stops at once with its own message and Diagnostics shows “quota”.

2.12.0

  • Manual Knowledge answers can have link text, other ways visitors ask (keywords, never shown to visitors), up to three follow-up suggestions, a priority and up to two more links. Links may now carry a query string or a fragment, such as a booking link.
  • Import and export Manual Knowledge as JSON, with a preview of new, updated, unchanged and invalid rows before anything is saved; also from WP-CLI (wp mwdai knowledge import and export).
  • Search, filter by visibility and publish, draft or delete several answers at once.
  • Better matching: Persian and Arabic letter variants and digits, non-English capital letters, two-letter words in non-Latin scripts, and words matched from their start, so “son” no longer finds “season”. A short follow-up such as “yes, send the link” still finds the answer asked about before.
  • Links are shown as separate link buttons below the reply and stay after a reload; web addresses the assistant did not get from your approved answers are removed from replies.
  • After a reply, the follow-up suggestions of the answer appear as buttons the visitor can tap.
  • A reply can show an approved link and open a request form together. Oversized requests are shortened instead of failing, and an add-on’s guidance that breaks a size or format rule is skipped and reported in Diagnostics.

2.11.2

  • On phones and tablets, opening the chat no longer opens the keyboard by itself; the keyboard opens when the visitor taps the message field.
  • On phones the open chat keeps its usual size and place, and when the keyboard leaves too little room it fills the visible part of the screen, so the chat’s name and the close button always stay in view.
  • The page behind the open chat no longer scrolls on phones, and it returns to the same place when the chat is closed.

2.11.1

  • The chat header keeps its layout (logo, name and buttons) on pages built with Elementor and other page builders or themes that style images, in both the floating chat and the shortcode.
  • The close button is hidden when the chat is placed on a page with the shortcode.
  • Message bubbles no longer have a border; the assistant’s bubble is slightly darker so it stays distinct.
  • When an add-on provides a request form, the assistant opens it as soon as a visitor asks for a quote, order, booking or to be contacted, instead of asking for contact details in the chat.
  • Admin pages show saved values right away: the Getting started checklist and the location count update after a save without reloading the page.
  • The admin menu icon keeps its size on pages of plugins that remove other plugins’ styles, such as Gravity Forms in No-Conflict Mode.

2.11.0

  • New Business details and Location sections in Manual Knowledge, with weekly opening hours: the assistant always knows your contact details and shares them with visitors who want to visit, order, book or get in touch.
  • The assistant no longer offers a request form this chat cannot send. It says so and points visitors to your contact details, and it uses your site name instead of placeholders.
  • Setup now shows a Getting started checklist and a direct link to create an OpenAI API key.
  • The floating chat keeps the same conversation while a visitor moves between pages.
  • The widget sends its session token in its own header, so it works on sites that use HTTP Basic authentication, JWT or OAuth plugins, or hosts that strip the Authorization header.
  • Expired login nonces in long-open tabs are refreshed automatically instead of failing.
  • Network errors, timeouts and server error pages now show a clear message instead of technical text.
  • Fixed the chat script failing to start on older Safari versions.
  • A visitor can send a new message after an interrupted request without reloading the page.
  • A reply that reaches the maximum output length is shown instead of reported as an error.
  • Manual Knowledge now ranks the best matching answers in the database, ignoring common filler words.
  • Shortcode-only mode loads the chat assets only on pages that show the assistant, and the page no longer makes a background request until a visitor chats.
  • Added GPT-4.1 and GPT-4.1 nano model choices.
  • Added the mwdai_core_client_ip filter for sites behind a trusted proxy.
  • Updated the Upgrade page for the Pro add-on and refreshed the bundled documentation.

2.10.0

  • Extension API 1.9 for the Pro add-on: settings validation, conversation erase and bounded cleanup helpers.

2.0.0

  • Rebuilt as an independent free Core with its own storage, one chat engine and a versioned extension API.
Back to top