Allowed domains
Restrict the widget to load only on hosts you own. Stops someone copying your snippet onto an unrelated site.
The widget's embed key (ek_…) is visible in your site's HTML — there's no way to keep it private. Anyone who views the source can copy it and embed your widget on their own page, then start chats that land in your inbox.
Allowed domains is the defense: a whitelist of hostnames where your widget is allowed to load.
Configuring the list
Settings → Chat → Allowed domains. Add one hostname per line:
acme.com
support.acme.com
acme.io
Save. New visitors get the widget; anyone embedding your snippet on a different host gets active: false from the init endpoint, and the bubble simply doesn't render.
Matching rules
- Exact host or subdomain match.
acme.comin the list matchesacme.comandwww.acme.comandblog.acme.com. It does not matchacme.ioornotacme.com. - No wildcards or regex. If you have multiple top-level domains, list each one.
- Case-insensitive.
Acme.comandacme.comare the same.
The check runs against the Origin header (and falls back to Referer). Visitors who block both headers — rare — fall through to "not allowed" rather than the other way around.
Leaving it empty
An empty list means allow any origin. This is the default for new workspaces because we want the widget to work right out of the box during setup. Add at least your own production domain before going live. Forgetting this is the most common pre-launch oversight.
Local development
During development the widget runs on localhost, which won't match a real domain. Either:
- Leave the allowlist empty until you ship.
- Add
localhostto the list temporarily, remove it before launch.
We never auto-allow localhost in production.