Skip to content

Embedding on a website ​

Every tenant is reachable at /t/<slug> - a full-page chat with the tenant's branding. Getting that chat onto the business's own website takes two pieces of configuration and one piece of HTML.

1. Allow the origin ​

In the tenant form, add the website to Allowed origins:

https://www.example-cafe.com
https://example-cafe.com

Scheme and host only, one per line, both www and bare variants if both exist. Requests from pages on other origins are refused.

2. Use the embed key ​

The tenant's public key (Tenant → Embed keys) identifies which bot to serve. It is a selector, not a secret - it is designed to appear in page source.

3. Embed ​

The simplest embed today is an iframe pointing at the tenant page:

html
<iframe
  src="https://chat.your-platform.com/t/example-cafe"
  style="position: fixed; bottom: 16px; right: 16px; width: 380px; height: 560px;
         border: 0; border-radius: 12px; box-shadow: 0 8px 32px rgba(0,0,0,.25);"
  title="Chat with Example Cafe">
</iframe>

A floating-bubble widget script (embed.js) is on the roadmap; the API it needs - CORS per origin, the x-embed-key header, server-issued sessions - is already in place, so custom widgets can also talk to POST /api/chat directly today.

What keeps this safe ​

  • The origin allowlist stops other websites from embedding a bot that isn't theirs (browser-enforced scoping).
  • The daily message cap holds even against direct API calls with curl - origin checks don't apply off-browser, the cap does.
  • Visitor identity is a server-minted session token, not anything the page invents.

For a bot on the public internet, also read Security model - especially the reverse-proxy note.