docs

Channels

Website widget

Embed a chat widget on your site with one script tag.

Adding the channel

Open an agent's Channels tab and add a Website channel — it's created instantly with no credentials needed. You'll get an embed snippet and a direct test link.

Embedding it

Paste this into your site, right before </body>:

<script src="https://YOUR_APP_DOMAIN/widget.js" data-key="CHANNEL_PUBLIC_KEY" async></script>

Both values are shown for you on the Channels tab — copy the snippet exactly as given.

Customizing it

Two ways to control how the widget looks:

  • From the dashboard — the Channels tab's widget settings: accent color, launcher icon (short text/glyph), header title, and which side the launcher sits on (left or right).
  • From the script tag — optional overrides that take priority over the dashboard settings: data-color="#1a1a19", data-icon="Chat", data-position="left|right".

Allowed origins — read this before you go live

The Channels tab has an Allowed origins field — one domain per line. This is a CORS allowlist: if a site embedding the widget isn't listed, the launcher still renders but with default styling, and — more importantly — actual chat messages are blocked by the server. Leaving it empty allows any site to embed the widget with a live connection; if you set it, make sure every domain you actually embed on (including staging/preview domains) is listed, or the widget will look present but not work.

Testing it

Use the direct test link on the Channels tab to try the widget in isolation before embedding it, or use the ▶ Test drawer on the agent itself for a faster iteration loop while you're still tuning knowledge and prompt — see Playground & execution trace.

Returning visitors

The embed remembers a visitor's identity in their browser's local storage per widget, so a customer who closes and reopens your site picks their conversation back up rather than starting over.