Secure your widget with domain locks
The key in your snippet is not a secret and was never meant to be. Understanding why changes how you secure it.
A public key looks like a leak until you bound it
Anyone can view source and copy the snippet. If the only thing standing between that and your usage allowance is obscurity, you have no control at all — which is why the controls are origin-based rather than secrecy-based.
- A key visible to anyone who opens developer tools
- No restriction on which sites may serve the widget
- No per-visitor bound on message volume
- Nothing stopping a copied snippet from spending your allowance
Understand what the key is
It is a public identifier that tells our API which bot is being addressed. It has to be in the page for the widget to work, so it is designed to be bounded rather than hidden — the same model as a public analytics or maps key.
List every origin that should serve it
Add each domain the widget legitimately runs on. Remember that www and the apex are separate origins, and that a copied snippet on an unlisted domain simply will not answer.

Both www and apex
If you serve both, list both.
Separate bot for staging
Cleaner than widening a production lock to a test host.
Bound a single visitor
Per-visitor rate limits cap how many messages one client can send in a window. Set it well above a normal conversation so real customers never notice, and low enough that a script cannot sit there consuming your allowance.
Cap the day
The hard daily reply cap is the backstop that makes the other two controls survivable if they are somehow bypassed. Once reached the bot stops rather than continuing to spend.
Common questions
- Should I rotate the public key?
- Rotation is not the control here — the key is public by design. If you believe it is being used somewhere it should not be, tighten the domain lock, which is what actually restricts use.
- What happens if someone puts my snippet on their site?
- If their domain is not in your lock list, it will not answer. That is the entire point of the mechanism.
- Is conversation data visible to other bots?
- No. Each bot has its own knowledge sources and its own conversation history, which is what makes the multi-tenant agency model workable.
From the blog
All posts- 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
- EvaluatingThe demo is a bad predictor of AI support qualityA polished demo tells you the product can answer questions it was prepared for. The useful evaluation happens at the edges — outside the script, on your content.Read
- BuildingStaging domains will poison your answers — fix that firstStaging, preview, and leftover demo hosts quietly win retrieval. Remove them from the index before you tune prompts or blame the model.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.