Add an AI support assistant to a plain HTML site
No framework, no build step, no platform. Two lines before the closing body tag and the site answers questions.
- Two lines
- About two minutes
- One file
<!-- Matter Chat — paste right before </body> --><script> window.MatterChat = window.MatterChat || { q: [] }; window.MatterChat.q.push(["init", { id: "bot_your_key" }]);</script><script async src="https://app.matterchat.co/widget.js"></script></body>html · paste above the dimmed line
Where the snippet goes
Before the closing body tag of each page. If your site has a shared layout — a Jekyll layout, a Hugo partial, an Eleventy template, an include — put it there once and every page picks it up.
- Shared layout, ideally
- One edit in the template rather than one per page.
- Any generator
- Jekyll, Hugo, Eleventy, Astro, or hand-written — it is only HTML.
- No server required
- The widget talks to our API directly, so your host stays static.
- Works on any host
- GitHub Pages, Netlify, S3, or a directory on a VPS.
If you have a shared layout — a Jekyll layout, a Hugo partial, an Eleventy include — put it there once and every page picks it up.
Dynamic behaviour without a backend
The entire benefit of a static site is that there is nothing to run and nothing to patch. The widget preserves that: it is a client-side script talking to a hosted API, so your deployment stays a folder of files.
Your published pages are the knowledge base
The crawler reads what you publish. On a static site that is usually all of it, so the assistant has complete coverage from the first crawl with nothing extra to maintain.
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 developers 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 add it to every page?
Only if your site has no shared layout. Any static site generator has a template or include where it can go once.
Does it work on GitHub Pages?
Yes. It is client-side JavaScript talking to a hosted API, so a static host with no server-side execution is perfectly adequate.
What if my site is only a few pages?
It still works, and coverage is simply narrower — it answers what those pages say and refuses beyond them. Every question it could not answer is logged, which at this size is a very direct list of which page to write next.
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.