Add an AI support assistant to a Mintlify site
Mintlify includes every .js file in your content directory on every page. That makes this the shortest install on any docs platform: commit one file.
- One JS file
- About two minutes
- No config in your app
// matterchat.js — one file: init, then load the widgetwindow.MatterChat = window.MatterChat || { q: [] };window.MatterChat.q.push(["init", { id: "bot_your_key" }]); var s = document.createElement("script");s.src = "https://app.matterchat.co/widget.js";s.async = true;document.body.appendChild(s);js · save as its own file
The route through your admin
- any folder in your docs repo
- matterchat.js
The snippet lands in matterchat.js.
Commit one file
Add matterchat.js anywhere in your content directory — Mintlify includes every .js file on every page. No docs.json change, no component, no plan requirement documented. The next deploy carries the widget.
- Any folder works
- Mintlify picks up .js files across the content directory; a js/ folder keeps it tidy.
- Runs after the page is interactive
- Custom JS loads post-hydration, which is exactly when a widget should mount.
- Removed by deleting the file
- The uninstall is a one-line git revert.
Mintlify includes every .js file in the content directory on every page — no docs.json change at all. Commit the file and the next deploy carries the widget.
What the crawler sees on Mintlify
Mintlify serves rendered HTML for every doc page, so the crawler reads complete pages without executing JavaScript — MDX components included, as their rendered output.
Citations back into the docs
Answers cite the exact page, so the assistant routes readers deeper into docs you already maintain — and logs what the docs never covered as a ranked to-write list.
Checking it actually worked
Four things, in order. The third is the one people skip, and it is the one that tells you whether the answers are grounded.
- 1Hard refresh the page — the launcher appears bottom-right.
- 2Ask it something your site answers, and check the reply cites a page.
- 3Ask it something your site does not cover, and check it declines.
- 4Open Conversations in the dashboard; both should be there.
On a different stack?
The snippet is the same everywhere. Only the place you paste it changes.
What Mintlify users ask
Short answers. If yours is not here, the assistant on this page will try it — and tell you honestly if it cannot.
Do I need to change docs.json or mint.json?
No. Custom scripts on Mintlify are file-convention based: any .js file in the content directory ships on every page.
How does this differ from Mintlify's built-in AI?
Mintlify's assistant answers from your docs inside their UI. Matter Chat answers from any set of sources — docs, marketing site, uploads — cites pages, refuses honestly, captures leads and hands off to your team, and the same bot can also run on your main site.
Will it slow the docs down?
The file queues an async load after the page is interactive; nothing render-blocking is added.
From the blog
All posts- BuildingDomain locks and why “works on localhost” isn’t enoughDomain allowlists exist so your bot answers only where you installed it. Testing on localhost proves the script loads; it does not prove production embeds are locked down.Read
- EvaluatingThe best AI chatbot for a Webflow site, compared honestly (2026)Matter Chat, Social Intents, Ultimo Bots, Chatling, WeblyChat and Chatbase on a Webflow site: Apps marketplace or custom code, the paid-site-plan gate, CMS coverage, citations, handoff and pricing. Checked on the vendors' own pages.Read
- BuildingWhat to index first when your site is a messStart with the pages that already resolve real support questions. Noise, archives, and unfinished docs can wait — indexing them first makes answers worse.Read
Answer honestly. Capture the rest.
Point Matter Chat at your site and see what it can — and can't — answer. It's honest about both.
No credit card. 2 minute setup.
Every answer cites the source it came from. When there isn't one, it says so — and hands the visitor to you.
Installs on the tools you already run.