Common questions about MxChat. Updated daily based on real customer questions. If you can’t find an answer here, check the documentation or open the chatbot on this page.
Getting started
How do I copy my chatbot’s settings and knowledge base to another WordPress site (e.g. a second Agency site)?
There’s no one-click “clone this bot” button, but each piece moves over cleanly. Settings: MxChat → Settings → Optimization & Diagnostics → Export Settings downloads a JSON of your configuration (API keys are masked for security). There’s no import counterpart, so use that file as a reference and re-enter the settings on the new site. Knowledge base: the simplest reliable path is to re-run your original imports (URL/sitemap, PDFs, Direct Content) on the new site — the KB is just embeddings of that content; alternatively, point both sites at the same Pinecone index so they share one knowledge base, or use the Migration add-on to export and migrate the vectors in bulk. License: on an Agency license you have several activation slots, so just activate the new site with one of your spare keys — you don’t need to contact support (for a single-key move, deactivate on the old site first — see moving a license to a new site). Available in MxChat core; the Migration add-on (Pro) handles bulk knowledge-base export and vector migration.
Can I activate my license on a dev or staging site and then move it to my live URL?
Yes — and you don’t need to contact support to do it. Each license is tied to one domain at a time, but you can move it yourself: on the dev/staging site go to MxChat → Pro, find your License Status, and click Deactivate License to free the activation slot on your account. Then on your live site enter the same email and activation key, activate, and use Link Domain to bind the key to the new URL. The same screen has a Manage Account link to your license dashboard if you’d rather manage activations there. Available in MxChat core (the free plugin).
Can I use one license key on more than one site, and how many sites does each plan cover?
No — each license key activates a single site. Activation binds the key to one domain (along with the email you bought it with), so the same key can’t be reused on a second site. The plans differ only in how many keys you get: MxChat Pro includes 1 key (1 site), Agency includes 5 keys, and Agency Plus includes 10 keys — every tier unlocks the same Pro features and add-ons. Activate each site separately under MxChat → License with its own key (your Agency keys may be labelled “MxChatPRO Version 1” — that’s normal). If you bought a multi-site plan but didn’t receive all your keys, retrieve them from the lost-license page or open a Support Ticket. Available in MxChat core (the free plugin); the License screen appears once a Pro/Agency add-on is installed.
What is the MxChat onboarding wizard, and do I have to complete it?
When you first open MxChat in your WordPress admin you land on a six-step setup wizard that walks you through it one step at a time: pick a chat model and paste its API key, set the bot’s behavior, choose an embedding model for the knowledge base, optionally seed your first content, optionally enable Actions, and a final “you’re set up” step to test the bot and turn it on. Only the first step (a chat model + key) is essential — behavior, knowledge base, and Actions are all skippable and can be set later. You can reopen the guide any time from MxChat → Settings → Tutorials. Available in MxChat core (the free plugin).
What privacy disclaimer should I add to my site if I use MxChat?
MxChat ships with a built-in privacy notice you can enable at MxChat → Settings → Privacy Notice: toggle it on and edit the textarea (default: “By chatting, you agree to our privacy policy.”). Update your own privacy policy page to disclose three things grounded in how MxChat actually behaves: (1) chat transcripts are stored in your WordPress database (table {prefix}mxchat_transcripts), not on MxChat servers; (2) chat messages are sent to whichever LLM provider you configured (OpenAI, Anthropic, Google, etc.) for response generation, subject to that provider’s terms; (3) the IP address and page URL of each chat are recorded for analytics. Linking your standard privacy page from the Privacy Notice setting is enough — no special MxChat-only clause is required. Available in MxChat core (the free plugin).
How do I activate my MxChat Pro license?
Go to MxChat → License in your WordPress admin and enter both your license key and the exact email address you used to buy the license. Activation calls the WooCommerce Software API at mxchat.ai with your domain, your key, and that email; if any of the three don’t match the original order, the response is “Invalid license”. If you mistyped the purchase email at checkout, the only fix is to email [email protected] with the order number so it can be corrected on the order. Available in MxChat core (the free plugin); the License screen is only shown after a Pro/Agency add-on is installed.
Can I open the chatbot from a custom link or button instead of the floating bubble?
Yes. The cleanest way is the Trigger add-on, which turns any element on your page into a chat opener via two data attributes: add data-mxchat-open to a button or link to open the widget on click, or add data-mxchat-trigger="Your prefilled message" to open the widget AND auto-send that message — perfect for CTAs like “Ask about pricing” or “Get a quote”. With Multi-Bot active, add data-mxchat-bot-id="support" to target a specific bot. Without the add-on, you can still trigger the widget from JavaScript by simulating a click on the rendered floating button: document.querySelector('.floating-chatbot-button').click() — wire that to any element’s onclick handler. For an anchor element, remember to call event.preventDefault() first so the browser doesn’t follow the # href and scroll the page to the top. Available in MxChat core (the free plugin); the Trigger add-on adds the simple data-attribute API plus built-in button styles, hover animations (shake, pulse, bounce), and Multi-Bot targeting.
How do I add the chatbot to a specific page or post? What shortcode does MxChat use?
MxChat registers one shortcode — — and it lives in the page/post editor, not in a separate admin menu (a common confusion). Paste anywhere in a page or post to render the floating widget on that page only, or to embed the chatbot inline at that exact spot in the content. If you’re running the Multi-Bot add-on, add bot_id="your-bot-slug" to pick which bot renders (e.g. ). If you’d rather have the chatbot appear on every page automatically with no shortcode, turn on MxChat → Settings → Display → Append to Body instead. Available in MxChat core (the free plugin).
Where are my API keys stored — locally or in the cloud? Does MxChat see them?
Locally, on your own server. Every API key you paste under MxChat → Settings → API Keys (OpenAI, Anthropic Claude, Google Gemini, xAI Grok, DeepSeek, OpenRouter, Voyage, Loops, Brave) is saved as a field inside the mxchat_options row of your WordPress wp_options table — the same database that holds the rest of your site’s settings. The keys never leave your server except when MxChat uses them to call the provider you configured them for (e.g. the OpenAI key is sent to api.openai.com when generating a reply); they are not transmitted to mxchat.ai, not synced to any MxChat-hosted service, and not visible to MxChat staff. If you want extra defense-in-depth, restrict database access at the host level and use the providers’ own usage-limit / IP-allowlist controls — those run on the provider side, not in MxChat. Available in MxChat core (the free plugin).
Do I need my own AI API keys, or are language models included with MxChat?
MxChat is bring-your-own-keys — the plugin doesn’t bundle access to any AI provider. Open accounts at the providers you want to use (OpenAI, Anthropic, Google Gemini, xAI Grok, DeepSeek, or OpenRouter), then paste each key under MxChat → Settings → API Keys; without a key, that provider’s models won’t load and you’ll see a “No API key detected” warning on the model picker. The provider bills you directly for usage — MxChat doesn’t proxy, meter, or mark up the API calls. If you only want to manage one account, OpenRouter gives you a single key that unlocks 100+ models from many providers. Available in MxChat core (the free plugin).
AI models & providers
Does MxChat support Azure OpenAI?
Not currently. MxChat connects to OpenAI, Anthropic (Claude), Google Gemini, xAI Grok, DeepSeek, and OpenRouter using each provider’s standard API endpoint, with keys added under MxChat → Settings → API Keys — there is no field for an Azure OpenAI resource or a custom base URL. Azure serves its models from deployment-specific URLs with a different auth header, so an Azure OpenAI deployment can’t be plugged in today. If you need OpenAI’s models, add an openai.com API key directly, or reach 100+ models (including GPT) through a single OpenRouter key. Available in MxChat core (the free plugin).
Which embedding models can I use, and why isn’t Claude an option for embeddings?
Your chat model and your embedding model are two separate settings, so the embedding step in setup only lists providers that actually offer embeddings: OpenAI (Ada 2, Text-Embedding-3 Small, Text-Embedding-3 Large), Voyage AI (Voyage-3 Large), and Google Gemini. Anthropic (Claude) doesn’t publish an embedding model, which is why it never appears at that step — but you can still use Claude as your chat model. The catch: picking Claude for chat doesn’t cover embeddings. If your knowledge base is set to a Voyage or Gemini embedding model, the bot will fail with an error like “Voyage AI API key is not configured” (or “Google Gemini API key is not configured”) until you add that provider’s key under MxChat → Settings → API Keys — or switch the embedding model (Chatbot Setting #6) to a provider whose key you already have. When the chat and embedding providers match (for example, both OpenAI), MxChat reuses the same key automatically. Available in MxChat core (the free plugin).
Why isn’t GPT-4.1 in the model dropdown anymore?
OpenAI deprecated the GPT-4.1, GPT-4o, GPT-4-turbo and GPT-3.5-turbo families on 2026-02-17, so MxChat removed them from the model picker. MxChat 3.0.55+ migrates any saved chat-model setting on those families to GPT-5.1 Chat Latest (or GPT-5 Mini for the mini variants) the next time the plugin loads, and shows a one-time admin notice describing the swap. The list you see now (GPT-5, 5 Mini, 5 Nano, 5.1, 5.1 Chat, 5.2, 5.3 Chat, 5.4, 5.4 Mini, 5.4 Nano) is OpenAI’s current GPT-5 lineup; pick any of those under MxChat → Settings → Chat Model. Available in MxChat core (the free plugin).
Which OpenRouter models can I use with MxChat — including the free ones?
The full OpenRouter catalog. Paste your OpenRouter API key under MxChat → Settings → API Keys, then in MxChat → Chatbot → Settings click Load OpenRouter Models; MxChat pulls the live list directly from OpenRouter’s /api/v1/models endpoint and shows every model OpenRouter exposes — paid and free — as a selectable card with pricing and context length. Free models (the ones OpenRouter suffixes with :free, e.g. deepseek/deepseek-chat-v3-0324:free) work the same as any paid model; pick one and save. There is no curated allow-list inside MxChat. Available in MxChat core (the free plugin).
What AI models does MxChat support?
MxChat supports 100+ models across six providers: OpenAI (GPT-5.2, 5.1, 5, 5 Mini), Anthropic (Claude Opus 4.6/4.5, Sonnet 4.6/4.5, Haiku 4.5), Google Gemini (2.0 Flash, 1.5 Pro), xAI Grok (4 and 3), DeepSeek, and OpenRouter. Add the OpenRouter API key under MxChat → Settings → API Keys to access models from Meta, Mistral, and others through a single key. Qwen is reachable via OpenRouter; native Qwen support is not built in.
Knowledge base & training
What is “Direct URL” import and where do I find it?
Direct URL pulls the content of a single web page into your knowledge base by its address. Find it at MxChat → Knowledge → Import Options → Direct URL — it’s one of the import cards there, alongside Sitemap Import and Direct Content (it is not under a tab called “Knowledge Import,” a common mislabel). Use Direct URL for one page, Sitemap Import to pull many pages at once, and Direct Content to paste text you don’t have a URL for. Available in MxChat core (the free plugin).
Can I index only a small set of content (or a JSON file) instead of my whole site?
Yes — you decide exactly what goes into the knowledge base and are never forced to index every post. Post-type syncing is opt-in per content type, so leave it off and add only what you want through MxChat → Knowledge → Import Options: Direct Content to paste a limited block of text, Direct URL for a single page, or a PDF / sitemap. There’s no JSON-file import type, so to load structured data, paste it as text via Direct Content. See also what you can use to train the chatbot. Available in MxChat core (the free plugin).
Can the chatbot read content inside accordions, tabs, popups, or hidden/toggled sections (e.g. in Elementor)?
For the knowledge base, yes — as long as the text is in the page’s HTML. When you index a page by its URL, MxChat fetches the server-rendered HTML and pulls the body content (it has dedicated handling for Elementor widgets), so text inside accordions, tabs, and toggle sections is captured even though it renders collapsed — it’s still present in the page markup. What it won’t pick up: content injected by JavaScript after load, and Elementor popups (separate templates that aren’t part of the page’s HTML) — index those on their own, for example by pasting the text via Knowledge → Import Options → Direct Content. This is separate from the live page scan (Contextual Awareness), which only reads what is currently visible, so collapsed content can be missed there. Available in MxChat core (the free plugin).
How do I re-index or rebuild my knowledge base embeddings without the Pro Migration tool?
The free version has no one-click rebuild button — bulk re-embedding (for switching embedding models or vector databases) is what the Migration add-on does. To re-index in free, re-import the content: submit the same URL or text again and MxChat replaces that source in place — it deletes the old vectors for that URL and re-embeds with your current embedding model. You can also delete an entry from the Knowledge Database table and add it back, and any post type you’ve enabled under Sync Post Types re-embeds automatically when you edit and update the post. This is the fix after changing your Embedding Model (Chatbot Setting #6): existing content keeps its old embeddings until you re-import it. Available in MxChat core; the Migration add-on extends it with one-click bulk re-indexing across models and vector DBs.
Does MxChat index Toolset Types fields (or other non-ACF custom fields) in the knowledge base?
Yes. ACF fields are pulled in automatically, but Toolset Types stores its custom field values as ordinary post meta (keys prefixed wpcf-), which ACF does not manage — so add those keys to the whitelist at MxChat → Knowledge → Custom Meta, in the Meta Key Whitelist box, one meta key per line (for example wpcf-price). Each whitelisted field value is appended to the post text when it is embedded, and only plain string values are included, so re-index the post after adding keys. The same whitelist also covers other non-ACF post meta, such as OptionTree fields or theme meta boxes. Available in MxChat core (the free plugin).
How do I teach the chatbot the correct answer to a question it got wrong?
Add the corrected question and answer to your knowledge base as plain text. Go to MxChat → Knowledge → Import Options, click the Direct Content box (“Submit content to be vectorized”), paste the question and the right answer, then submit — the bot pulls it in the next time someone asks something similar. There is no separate “Add New” or “Add Content” button; Direct Content is the manual-entry method, and it works in the free version (it is not Pro-only). Available in MxChat core (the free plugin).
What do the RAG Sources Limit and RAG Chunks Limit settings do?
They cap how much of your knowledge base is fed to the AI on each reply. RAG Sources Limit (in Chatbot settings; default 3, range 3–10) is the maximum number of distinct source documents the bot draws from for one answer. RAG Chunks Limit (default 15, range 8–20) is the maximum number of individual text passages (chunks) injected into the prompt across those sources. Raise them if answers miss details that exist in your content; lower them to cut token cost and keep replies tighter. Both behave the same whether your vectors live in the WordPress database or Pinecone. Available in MxChat core (the free plugin).
What does “Sync Post Types” mean, and will MxChat re-index a page automatically after I edit it?
In MxChat → Knowledge → Auto-Sync you can switch on automatic syncing per content type — Posts, Pages, and any public custom post type (WooCommerce products sync when the WooCommerce integration is enabled). With a type’s toggle on, MxChat re-indexes that content into the knowledge base every time you publish or update an item of that type, so you don’t have to re-import it by hand. One exception: anything you added by pasting a URL into the manual importer is stored under an internal mxchat://manual-content/ identifier rather than the page’s URL, so editing the live page won’t re-sync it — re-import that URL to refresh the entry. Available in MxChat core (the free plugin).
Can MxChat automatically sync course content from LMS plugins like LearnDash, LifterLMS, or Tutor LMS?
Yes. MxChat auto-syncs any public custom post type, which includes courses, lessons, and quizzes from the major LMS plugins as long as they’re registered as public CPTs. Open MxChat → Knowledge, expand Sync Custom Post Types, and toggle on the post types you want indexed (e.g. sfwd-courses for LearnDash, course for LifterLMS, courses for Tutor LMS). Whenever a course is published or updated — including ones added by users on the front end — the content is re-indexed automatically. Available in MxChat core (the free plugin).
How do I set up Pinecone for MxChat?
Create the index in your Pinecone dashboard first at app.pinecone.io, then connect it under MxChat → Knowledge → Pinecone. You’ll need four values: API Key, Region (e.g. gcp-starter), Index Name, and Host (the hostname from your index URL, without https://). Toggle Enable Pinecone Database on, paste the values, and save — new knowledge entries will then be stored in Pinecone instead of the WordPress database. Available in MxChat core (the free plugin).
Is Pinecone required? Where is the chatbot’s knowledge stored?
No. MxChat ships with free, unlimited local vector storage in your WordPress database — that is the default and is sufficient for most sites. Pinecone is optional and only recommended for enterprise-scale knowledge bases with thousands of entries that need faster search. If you do connect Pinecone, configure it under MxChat → Settings → Pinecone.
Can I include ACF fields or taxonomy data in the knowledge base?
Yes. ACF field data is automatically included when you import posts, pages, or products into the knowledge base — use ACF Field Settings to control which fields are exposed or hidden. For taxonomy-level ACF fields (e.g. fields attached to a custom term), use the mxchat_before_process_post filter to append the term’s ACF values to the post content before indexing. The filter receives the WP_Post object and the bot ID.
What can I upload to train the chatbot?
MxChat trains via RAG on WordPress pages, posts, WooCommerce products, custom post types, PDFs, Word documents, plain text files, XML sitemaps (including PDF URLs in sitemaps), and manual Q&A entries. Imports are unlimited. Enable auto-sync per content type so updates propagate without manual re-importing.
Customization & themes
How do I change or translate the chat widget’s interface text (welcome message, placeholder, buttons) into my language?
The bot’s replies already match the visitor’s language automatically, but the widget’s fixed text comes from settings you type in — so set each one in your language under MxChat → Chatbot: Top Bar Title, Introductory Message (the “Hello! How can I assist you today?” greeting), Input Placeholder, AI Agent Text, Chat Teaser Pop-up, the Satisfaction Rating Prompt, the email/name gate fields (Email Form Content, Submit Button Text, Name Field Placeholder), and the Rate Limit Message. For any remaining built-in strings, translate the plugin with a .mo language pack — see translating MxChat. Available in MxChat core (the free plugin).
Can I customize the chatbot’s satisfaction rating prompt (the 👍/👎 “Was this helpful?” survey)?
Yes. Go to MxChat → Settings → Chatbot → Behavior and switch on Satisfaction Rating Prompt — it shows a 👍/👎 prompt after the conversation has had a couple of bot replies and the visitor has gone idle (it’s off by default, and turning it off hides the prompt site-wide). With it on, the “Customize the prompt (optional)” panel lets you set the Idle Timeout (5–600 seconds of inactivity before it appears, default 60), the Prompt Question (default “Was this helpful?”), the Thank-You Message, the Feedback Placeholder, and the Saved Confirmation text — leave any field blank to keep its default. Ratings and any written feedback are stored per session and rolled up in the Satisfaction card under MxChat → Transcripts. Available in MxChat core (the free plugin).
Does MxChat support Hebrew, Arabic, or other right-to-left (RTL) languages?
Yes. The chatbot automatically replies in whatever language a visitor writes in — the AI model translates on the fly, with nothing to configure. For right-to-left scripts like Hebrew and Arabic, every chat bubble is rendered with automatic text-direction detection (dir="auto"), so the text lays out right-to-left correctly, and the widget ships RTL-aware styling for its header menu. Just write to the bot in Hebrew or Arabic and it answers in the same language, properly aligned — there is no language or direction setting to flip. Available in MxChat core (the free plugin).
Where are the Toolbar settings? I can’t find where to turn on the PDF or Word upload buttons.
Open MxChat → Settings, then in the settings sidebar expand Integrations and click Toolbar — the screen is titled “Toolbar Settings.” The chat toolbar is hidden by default, so enable it there first; that adds a row of buttons below the chat input where you can then toggle the PDF upload and Word document upload buttons on or off. If a guide or the chatbot pointed you to a “Toolbar & Components” tab, that’s just the old name for this same screen (the Live Agent, Brave Search, and Perplexity buttons live here too). Available in MxChat core (the free plugin).
How do I hide (or force-show) the chatbot on one specific page or post?
Edit the page or post and find the MxChat Settings box in the editor sidebar. Under Chatbot Visibility, choose Hide Chatbot on this page to switch it off there, Show Chatbot on this page to force it on even when the site-wide auto-show is off, or leave it on Use Global Setting to follow your default. Save or update the page for the change to take effect — the setting is per-page and doesn’t change the chatbot anywhere else. Available in MxChat core (the free plugin).
How do I stop the chatbot from asking visitors for their name and email before they can chat?
MxChat can gate the conversation behind an email-capture form, but it’s a single toggle you can switch off. Go to MxChat → Chatbot and turn off “Require Email to Chat” (Setting #10) — visitors can then start chatting immediately without entering a name or email. The same setting controls the prompt wording shown when the gate is left on. Available in MxChat core (the free plugin).
Are there size limits for the custom chatbot icon or title icon?
There’s no hard size cap inside MxChat — the two icon fields under MxChat → AI Theme Customizer → Icons just store an image URL, so any image WordPress’s Media Library accepts (limited by your host’s PHP upload_max_filesize, typically 2–64 MB) will work. The recommended uploads are a 48×48 px PNG for the floating launcher (the custom_icon field) and a 24×24 px PNG for the header badge (the title_icon field). The widget renders both at those exact pixel dimensions with object-fit: contain, so larger images scale down without distortion — but uploading a multi‐MB photo just to display it at 48 px wastes bandwidth on every page load. Use a transparent PNG sized to the recommendation for the sharpest result. Requires the Theme Customizer add-on.
How do I resize or restyle the chat widget? What CSS selectors and default dimensions does it use?
There’s no admin field for the chat window’s width or height today, but every visual layer has a stable class hook you can override from your theme’s Customize → Additional CSS. Useful selectors: .mxchat-chatbot-wrapper (outer floating shell), .mxchat-chatbot (main container), .chat-container (flex interior), .chat-box (scrollable message area), .bot-message / .user-message / .agent-message (bubbles), .chatbot-top-bar, and .chatbot-footer. Defaults in chat-style.css: floating widget is 375×625 px (capped to 100vh − 50px on short screens); the embedded shortcode renders at a fixed 500 px height. To resize the floating window, target .mxchat-chatbot-wrapper { width: …; height: …; }. Available in MxChat core (the free plugin).
How do I shorten the bot’s responses or set a lower max-tokens?
There is no max-tokens slider in the admin UI; the chat-reply path hard-caps each response at 1000 output tokens server-side, and the model can return fewer. The supported way to make answers shorter is to add a behavior rule under MxChat → Settings → AI Instructions (Behavior) — for example, Answer in 1–2 sentences. or Keep responses under 60 words. That works across every provider without code changes. Available in MxChat core (the free plugin).
Does MxChat have a REST API I can use from external tools?
Yes — MxChat exposes a bearer-token-authenticated REST API at /wp-json/mxchat/v1/ with three endpoints: GET /health for a connectivity check, GET /transcripts (and DELETE) for reading or pruning chat history with filters for date range, role, session, and whether the answer used RAG context, and POST /knowledge for pushing content into the knowledge base from external tools like n8n, Zapier, Make, custom dashboards, or your own agents. The API is disabled by default — generate a token from MxChat → API Access, then send it on each request as Authorization: Bearer <token>. This is separate from the chat widget itself, which still uses WordPress’s admin-ajax.php path internally. Available in MxChat core (the free plugin).
Can I stop the chatbot from answering certain topics (legal, medical, etc.) and have it return a link instead?
Yes, via the system prompt. Go to MxChat → Settings → Chatbot tab → AI Instructions (Behavior) and add a directive such as Do not provide legal advice. If asked about legal matters, respond only with a link to https://example.com/legal-disclaimer. The model treats AI Instructions as a hard rule on top of the default behavior, so it will redirect the user rather than answer. This is the right tool for topic-level steering — the Moderation add-on is for banning specific users by email or IP, not for restricting subjects. Available in MxChat core (the free plugin).
How do I hide or unpublish the chatbot? It went live before I tested it.
Three layers of visibility control, broadest to narrowest. Site-wide: MxChat → Settings → Chatbot tab → toggle off Auto-Display Chatbot; the widget disappears from every page, and you can still embed it manually with the shortcode when you’re ready to test. Per post type: under the same Chatbot tab, Post Type Visibility lets you switch to Include or Exclude mode and pick which post types (pages, products, posts, custom) get the widget. Per page: open the post in the editor, find the MxChat Visibility meta box in the sidebar, and choose Hide. Available in MxChat core (the free plugin).
Does MxChat offer a white-label option? Can I remove the MxChat branding from the chatbot?
The chat widget is effectively white-label out of the box — visitors never see the MxChat name. You set your own bot name, avatar, welcome message, theme colors, and (optional) custom CSS under MxChat → Chatbot, and that’s what visitors see. There is no “Powered by MxChat” footer to remove, no MxChat logo embedded in the widget, and no required outbound link. What MxChat does not offer is reseller white-labelling of the plugin itself — the WordPress admin pages still read “MxChat”, and the Pro / Agency / Agency Plus licenses are for using the plugin on multiple sites you control, not for rebranding and selling it as your own product. If full plugin-level white-label or reseller licensing is what you need, that’s a conversation for support, not a built-in feature. Available in MxChat core (the free plugin).
Is MxChat translated into other languages? How do I translate it into Polish, Spanish, etc.?
The chatbot itself already replies in the visitor’s language automatically — the underlying AI model translates on the fly with no configuration. The plugin’s admin UI is translation-ready (text domain mxchat, .pot file under /languages/) and registered on translate.wordpress.org, so any locale the community has translated will load automatically once your WordPress site language is set under Settings → General. To contribute a translation (Polish, Spanish, or anything else), sign in at translate.wordpress.org and submit strings; once approved, they ship as a language pack to every MxChat install. For a private translation, drop a compiled .mo file into /wp-content/languages/plugins/mxchat-pl_PL.mo — WordPress picks it up automatically. Available in MxChat core (the free plugin).
What’s the difference between AI Theme Customizer and AI Theme Generator?
They’re the same product. “AI Theme Customizer” is the marketing name (the page at mxchat.ai/ai-theme-customizer and the WordPress plugin slug); “AI Theme Generator” is the in-admin UI label you see at MxChat → AI Theme Generator after activating the plugin. There’s no separate download — a Pro license unlocks the Theme Customizer plugin, and chatbot themes are created inside the AI Theme Generator screen rather than downloaded as files. Requires the Theme Customizer add-on.
Add-ons & integrations
How do I collect a visitor’s name and email during the conversation instead of with a pre-chat form?
Use the Forms add-on. Create a form under MxChat → Form Collection with name and email fields, then give it Trigger Phrases (e.g. “contact support,” “more info”) or set Trigger After X Messages so it appears mid-chat when the visitor shows intent — not before the chat starts. To explain the form before the inputs show, add a Static Text field as the first field. Submissions are saved under Form Collection → Submissions (with CSV export) and can email an address you choose, so the data is captured without the pre-chat gate. This is different from core’s Require Email to Chat (Setting #10), which forces name and email before the chat begins. Requires the Forms add-on; the pre-chat email gate is in MxChat core.
Does MxChat integrate with HubSpot or another CRM? How do I send captured leads to my CRM?
There’s no built-in HubSpot (or other CRM) connector, but three supported paths get your lead and chat data out. (1) Use the Forms add-on with a webhook or Zapier/Make on submission to post each captured lead straight into HubSpot or any CRM. (2) Pull lead and conversation data programmatically with the REST API’s GET /transcripts endpoint. (3) For plain email-list capture, the core Loops email-capture Action adds a visitor’s email to your Loops list. The REST API and Loops capture are in MxChat core; routing form submissions to a CRM requires the Forms add-on.
Can MxChat tell which orders or sales came from the chatbot?
No — MxChat does not attribute orders or revenue to the chat. With the WooCommerce add-on the bot can look up order status, order details, and a signed-in customer’s order history, but it does not tag which orders began from a chat or from a product the bot recommended. To measure chat-driven sales today, use a general analytics approach such as UTM-tagged links or your store’s analytics. Requires the WooCommerce add-on (for the order lookups the bot performs).
Can MxChat generate descriptions for custom meta boxes or inside the Classic editor?
The Advanced Content add-on’s AI generator writes SEO meta fields — page title, meta description, focus keyword, and excerpt — and you run it from the MxChat → Content screen, not from inside the post or product editor. It does not fill arbitrary custom meta-box fields, and it does not add a generate button to the Classic or block editor or to WooCommerce product description fields. Requires the Advanced Content add-on.
Can I use MxChat on a non-WordPress site (Shopify, React, plain HTML)?
Yes — the MxChat Anywhere add-on embeds your bot on any site via a single <script> tag, no WordPress required on the host page. Configure the bot inside WordPress as usual, then open MxChat → Embed Widget, enable the embed, whitelist the domains you’ll embed on, and copy the snippet — it looks like <script src="https://yoursite.com/wp-json/mxchat-embed/v1/loader.js?key=YOUR_SITE_KEY" async></script>. Drop it into any HTML page (Shopify themes, Next.js / React / Vue apps, a static site, plain vanilla HTML) and the widget renders inside a Shadow DOM, so the host page’s CSS can’t cascade in and the widget’s styles can’t leak out. Chat requests proxy back through your WordPress REST API, so API keys and system prompts never leave your server; only the public site key plus your domain whitelist are visible client-side. One current limitation: Anywhere supports the floating widget only — the inline shortcode/embedded mode isn’t available off WordPress. Requires the Anywhere add-on.
Does MxChat work with WhatsApp Business? Can the bot reply via WhatsApp?
Not as a live-agent channel. MxChat’s built-in human-handoff channels are Telegram and Slack (configured under MxChat → Settings → Integrations) — there is no native WhatsApp Business handoff or webhook integration in the current release. What MxChat does handle on the WhatsApp side is smart contact detection: if a visitor types a WhatsApp-formatted phone number into the chat, MxChat recognizes it and (with “Only send if visitor provided contact info” enabled on the Auto-Email Transcript setting) will trigger the transcript email so your team can follow up on WhatsApp manually. A native WhatsApp channel is on the product roadmap; track contact us for status. Available in MxChat core (the free plugin).
Can MxChat book appointments or schedule meetings inside the chat?
No — MxChat doesn’t have native appointment booking or calendar integration as of v3.2.6. The Forms add-on can capture name, email, phone, and preferred-time text fields and email the submission to you, but it doesn’t talk to Google Calendar, Calendly, Acuity, or any scheduling API. For a real booking flow, embed a Calendly/Acuity widget on your contact page and have the bot deep-link to that page when a visitor asks to book — you can do this with a custom AI Instruction (“If the user asks to book an appointment, send them to /contact/”). Forms capture available with the Forms add-on; native calendar/scheduling is not in MxChat today.
Does MxChat Forms support webhooks, Zapier, or a WordPress action hook on submission?
Yes, as of the Forms add-on v1.2.8. Each form has an optional Webhook URL field — set it and every submission is POSTed as JSON to that URL, ready for Zapier, Make, n8n, Slack, or a custom endpoint. Requests are signed with HMAC-SHA256 in an X-MxChat-Signature: sha256=… header (using a per-form signing secret you can regenerate), and a Webhook Log under Form Collection shows the last 100 delivery attempts per form. For PHP integrations, the add-on also fires a WordPress action hook — do_action('mxchat_forms_submitted', $submission, $form) — after every successful submission, passing the labeled fields plus session metadata. Full details in the Forms documentation. Requires the Forms add-on.
Can the chatbot add products to the cart or place orders directly through the chat?
It can add to cart; it doesn’t place the order. With the WooCommerce add-on, the bot detects “add to cart” intent in any language, resolves which product the user means from the conversation context, and calls WC()->cart->add_to_cart() in-place — the cart icon in the chatbot toolbar updates, and the visitor can keep browsing. The visitor still completes payment through WooCommerce’s standard checkout on your site; MxChat doesn’t take credit cards, process payments, or finalize the order itself. Enable the cart icon under MxChat → Toolbar & Components after activating the add-on. Requires the WooCommerce add-on.
Does the WooCommerce integration include custom product fields and attributes in the AI’s knowledge?
Yes — three layers. WooCommerce native attributes (both taxonomy-based ones like pa_color and the custom product-level attributes you add on a product’s Attributes tab) are pulled into product context automatically when the WooCommerce add-on is active. ACF fields on products are indexed when products are synced to the knowledge base; control which fields are exposed under MxChat → Knowledge → ACF Field Settings. For arbitrary post meta that isn’t ACF, opt individual meta keys into the index using the custom-meta whitelist on the same screen. Available in MxChat core; the WooCommerce add-on extends it with attribute extraction and cart/order/customer-aware responses.
Can MxChat write blog posts or landing pages with AI?
Yes. Open MxChat → Content → Generate, choose Blog Post or Landing Page in the Type dropdown, set Status (Draft, Scheduled, or Publish), pick a layout, and run the generator. Output includes AI-generated images and SEO metadata, with inline editing before saving. Available in MxChat core; the Advanced Content add-on extends it with smart internal linking, an image manager, and a content calendar for scheduling batches.
What is the Multi-Bot add-on and when do I need it?
Multi-Bot is a Pro add-on that lets you run multiple specialized chatbots on the same site, each with its own knowledge base, system prompt, welcome message, quick questions, and per-bot action controls. Deploy them via shortcode () or pick a bot per page in the post editor. Use it when one bot’s persona or content scope shouldn’t bleed into another — e.g. a sales bot on product pages and a technical-support bot in the docs section.
Can MxChat hand off to a live agent?
Yes — built-in handoff is available via Slack and Telegram. Slack posts the conversation into a Slack channel; Telegram sends each visitor’s session into its own forum topic inside a Telegram supergroup (which must have Topics enabled), so your team can reply from their phone. Both are configured under MxChat → Settings → Integrations — Telegram needs a bot token from @BotFather and the webhook URL MxChat shows on that screen registered with Telegram. Direct integrations with Tawk.To, Intercom, Crisp, or LiveAgent are not built in; if you use one of those, the handoff would need a custom workflow. Available in MxChat core (the free plugin).
Troubleshooting
How can a visitor reset the chat and start a brand-new conversation?
There’s no built-in “new chat” button for visitors yet — the chat header’s 3-dot menu currently offers only Download Transcript, and the “Clear Chat Session” control lives in the admin testing panel (admin-only). Whether the previous conversation carries over is governed by Enable Chat Persistence (MxChat → Chatbot, Setting #17): with it off, every fresh page load already starts a new session and nothing is remembered; with it on, the chat is kept for about 24 hours in the visitor’s browser (a mxchat_session_id_<bot> localStorage key plus a cookie), so a visitor starts over by clearing their site cookies/data or waiting out the 24-hour window. The session also resets automatically if the visitor’s IP changes mid-conversation. Available in MxChat core (the free plugin).
The pre-chat form shows “Failed to save email” when a visitor enters their email — how do I fix it?
The usual cause is a stale security nonce served from a full-page cache. The email/name gate submits the nonce baked into the page HTML, and — unlike the chat-send path, which fetches a fresh token per message since 3.2.7 — the gate doesn’t refresh it, so a caching plugin (WP Rocket, LiteSpeed, W3 Total Cache) or Cloudflare full-page caching can hand a visitor an expired nonce and the save is rejected. Exclude the page that hosts the chatbot from full-page caching (or flush your caches) and hard-refresh once. Note the address is stored server-side — in a WordPress option plus the chat transcript row — not in the visitor’s browser, so private/incognito mode isn’t the cause. One more thing to check: if you also enabled Require Name, the visitor must fill both fields — submitting with the name left blank is rejected. Available in MxChat core (the free plugin).
The Order History action returns “API key is not set” — how do I fix it?
The WooCommerce Order History action sends its reply through your main AI model, so it needs your chatbot’s API key configured. Open MxChat → Settings and enter your API Key in the Chatbot tab (the same key the chatbot uses), then save — an empty key is exactly what triggers “API key is not set.” Also confirm the WooCommerce add-on and your Pro license are active and that the Order History action is enabled under MxChat → Actions. Requires the WooCommerce add-on; the API key field lives in MxChat core.
How do I get chat transcripts (or new-chat alerts) emailed to the admin automatically?
Go to MxChat → Transcripts → Notification Settings (the settings icon on the Transcripts screen). Two separate options live there: Enable Chat Notifications emails your Notification Email whenever a new chat session starts, and Auto-Email Full Transcript sends the entire conversation to that address after the chat ends — you pick a 15-, 30-, or 60-minute delay and can choose to send only when the visitor left contact info. Both run automatically, so you don’t need the manual “Export All Chats” button for routine delivery. Available in MxChat core (the free plugin).
Why does the chatbot ignore my knowledge base and answer from general knowledge instead?
The usual cause is an embedding-model mismatch. Your knowledge base is searched by comparing each visitor question against the vectors created when you indexed your content, and both sides must come from the same embedding model. If you change the embedding model (Chatbot → Setting #6) after indexing — or index with one model and query with another — similarity scores collapse and nothing matches, so the bot falls back to its own general knowledge. Fix it by choosing one supported model (OpenAI TE3 Small/Large or Ada 2, Voyage, or Gemini) and re-indexing your entire knowledge base with it from MxChat → Knowledge. If you turned on “Use custom provider for embeddings,” switch back to a built-in model for now — custom OpenAI-compatible endpoints are not yet used when indexing the knowledge base, so your stored content and live queries get embedded by different models and never match. If matches are still sparse, lower the Similarity Threshold (try 20–40). Available in MxChat core (the free plugin).
The chat widget isn’t showing up on my site — what should I check?
The most common cause is that auto-display is off: the floating widget only appears when MxChat → Chatbot → Auto-Display Chatbot is turned on, and it’s off by default — a fresh install shows nothing until you enable it (or finish the onboarding wizard’s Appearance step). If auto-display is on but the widget is still missing, check three things: (1) the page’s MxChat Settings box isn’t set to Hide, (2) your cache — clear W3 Total Cache and Cloudflare after changing settings, and (3) a theme or other plugin isn’t suppressing the wp_footer hook MxChat uses to inject the widget. As an alternative to auto-display, you can drop the bot onto a specific page with the shortcode. Available in MxChat core (the free plugin).
How can I see how many messages have been used, and does the rate limit reset?
The per-visitor message limit resets automatically on the timeframe you set for each role — hourly, daily, weekly, or monthly — under MxChat → Chatbot → Setting #19; a scheduled task clears the counters as each window elapses, so a “monthly” limit gives every visitor a fresh allowance each month. Counts are tracked per individual visitor, not as one running site-wide total. For overall volume, MxChat → Transcripts shows total messages and chats for Today / Last 7 Days / Last 30 Days, and the REST API’s /transcripts endpoint accepts since and until for a custom date range. There is no in-chat counter telling a visitor how many messages they have left. Available in MxChat core (the free plugin).
Can I set a message limit above 100, share one combined limit across all visitors, or show visitors how many messages they have left?
Not today, on all three. Under MxChat → Chatbot → Setting #19 the per-role limit is chosen from a fixed dropdown — 1, 3, 5, 10, 15, 20, 50, 100, or unlimited — so you can’t type a custom number, and 100 is the highest finite option. Limits are always counted per individual visitor (by WordPress user ID, or by IP address for logged-out visitors), never as one shared pool across everyone, so there is no single site-wide cap. There is also no in-chat counter for messages used or remaining — the custom limit message only appears once a visitor hits the cap. You can see the running total of all messages under MxChat → Transcripts. Available in MxChat core (the free plugin).
Is the chatbot rate limit per user, or shared across everyone in a role?
It’s per individual person, not a shared pool. Under MxChat → Chatbot → Setting #19 you set a message limit and timeframe for each WordPress role, but the role only decides which limit applies — each logged-in user is counted by their own user ID and each logged-out visitor by their own IP address. So a “50 messages per day” cap on the Subscriber role means every subscriber gets 50 each, not 50 split between them all. Counters reset automatically once the chosen timeframe (hourly, daily, weekly, or monthly) elapses. Available in MxChat core (the free plugin).
I see an “Access denied” error on the first chat message — how do I fix it?
The usual cause is a stale security nonce served by a full-page cache — a caching plugin (WP Rocket, LiteSpeed Cache, FlyingPress, W3 Total Cache) or Cloudflare APO/full-page caching hands a brand-new visitor cached HTML carrying an expired nonce, the first chat-send POST fails with 403, and the widget surfaces “Access denied: Your session may have expired.” MxChat 3.2.7 fixes this for good: the widget now fetches a fresh security token per message from /wp-json/mxchat/v1/nonce instead of trusting the value baked into cached page HTML, so it works behind full-page caches with no manual exclusion. Confirm under MxChat → About that you are on 3.2.7 or later and hard-refresh the page once. If you are on an older build and cannot update yet, exclude the page hosting the chatbot from your caching plugin’s (or Cloudflare’s) page-cache rules as a stop-gap. A second, distinct cause is the Moderation add-on — if the message reads “Access denied. Your IP address has been banned” or “Your email address has been banned,” remove the matching entry under MxChat → Moderation → Bans. Available in MxChat core; the Moderation add-on extends it with IP/email ban enforcement.
Can visitors talk to the chatbot instead of typing? Is there voice input?
Not currently. MxChat’s chat widget is text-only — the input field accepts typing, paste, and the existing emoji and file-upload buttons (when the Image Analysis add-on is active), but there is no built-in microphone button or speech-to-text capture. If you need voice input today, the workaround is a small custom snippet that uses the browser’s built-in SpeechRecognition API to populate the textarea before the visitor presses Send — outside the plugin’s shipped surface, but doable in a child-theme JS file. A native voice-input button is on the roadmap; track contact us for status. Available in MxChat core (the free plugin).
How do I get MxChat to retry automatically when the AI provider rate-limits or errors out?
MxChat does not auto-retry failed provider calls — a Gemini “model overloaded,” OpenAI 429, or Claude overload error is surfaced to the user verbatim and the chat continues with the next message. The practical workaround is to switch to a less rate-limited provider or model under MxChat → Settings → Chat Model, or paste an OpenRouter key under MxChat → Settings → API Keys so you can move between 100+ backends behind one credential when one provider is busy. Available in MxChat core (the free plugin).
Is MxChat WCAG / ADA accessible? Is the chatbot screen-reader friendly?
The chatbot ships with real accessibility primitives — but no formal audit and no claimed WCAG conformance level. What’s in the box: every interactive control in the chat header (open, close, send, copy, 3-dot menu) has an aria-label, the pre-chat form fields use sr-only labels for screen readers, all buttons are keyboard-focusable, and the 3-dot overflow menu exposes proper role="menu" / role="menuitem" semantics with Escape and arrow-key support. What’s NOT shipped: a third-party WCAG audit, an accessibility statement, or a claimed conformance level (A, AA, or AAA). Color contrast depends on the bot bubble and text colors you choose in MxChat → Chatbot — if your brand palette is low-contrast, the widget will inherit that. If you need formal WCAG-AA or ADA compliance for your site, plan to audit the chatbot in context of your theme and colors before signing off. Available in MxChat core (the free plugin).
Telegram live agent: I get customer messages in the supergroup but my replies don’t reach the customer — why?
This is almost always a webhook misconfiguration. When you reply inside a topic, Telegram POSTs the message to /wp-json/mxchat/v1/telegram-webhook on your site, and that handler routes your reply back into the visitor’s chat session. Three things to verify: (1) Open MxChat → Settings → Integrations → Telegram → Webhook Setup and click the Register Webhook URL link in your browser — you should see {"ok":true,"result":true,"description":"Webhook was set"}. A rest_no_route 404 means the URL you registered with Telegram doesn’t match what WordPress exposes (re-register from this screen). (2) Your supergroup must have Topics enabled (Group → Manage → Topics), and you must reply inside the per-visitor topic — messages posted in the General channel are ignored on purpose. (3) WordPress permalinks must be set to anything other than “Plain” (Settings → Permalinks), otherwise REST routes return 404. Available in MxChat core (the free plugin).
Where does my chat data go — does the AI provider see my visitors’ messages?
Conversation history is stored locally in your WordPress database; nothing is sent to MxChat servers. Each user message is forwarded to the AI provider you configured (OpenAI, Anthropic, Google, xAI, DeepSeek, or OpenRouter) so it can generate a response — those providers see the message in transit and apply their own privacy policies. MxChat is GDPR-friendly: you control retention, can export transcripts, and can delete conversations from the Transcripts dashboard.
Can I export chat transcripts?
Yes. Open MxChat → Transcripts in WP admin to view all conversations with full context (user messages, AI responses, RAG sources used, timestamps). Transcripts can be exported and individual conversations or leads can be deleted from the same screen.