Web chat widget
Embed the CoPhrase agent on your website with a script tag — the fastest channel to connect and the only one with no account risk.
The web chat widget is a chat bubble on your own website, backed by the same agent that runs every other channel. It's a <script> tag that loads an iframe.
It is the recommended first channel: there's no account to link, no platform approval to wait for, and nothing that can be banned or restricted.
What the widget does
Anonymous text conversations, buffered agent replies, wake-and-refetch SSE recovery when a connection drops, and human takeover from the inbox.
What makes it different
The widget is an owned channel, so it can recover live conversation changes without a provider webhook or account session. The agent generates a complete reply, the widget's authenticated SSE stream sends an identity-only wake event, and the client replays durable items after its last offset. Replies land whole rather than token by token — the connection carries a nudge, not the text.
It's also the only channel where the visitor may be anonymous. Someone browsing your pricing page has no phone number, no Instagram handle, nothing. The widget creates an anonymous contact and intentionally discards caller-supplied identity hints: an unsigned claim from a browser isn't identity, so it isn't treated as one.
Setup
Create the widget connection
Add a web chat channel and attach it to the agent you want answering. CoPhrase gives you a snippet and a public key for your organization.
Drop the snippet on your site
Paste the script tag into your site's HTML — the same place you'd put an analytics snippet. It loads the widget into an iframe, so the widget's CSS and JavaScript can never collide with your site's.
Put it on every page you want the agent reachable from, or just the pages where it matters (pricing, support, checkout).
Restrict where it can run
Configure the exact origins allowed to load your widget. The public key in the snippet is visible to anyone who views your page source — it identifies your organization, it does not authenticate anyone. The origin allow-list is what stops someone embedding your agent on their own site and consuming your usage budget.
Per-organization and per-IP admission limits are enforced on top of that.
Capabilities
| Streaming replies | Buffered — the agent sends a complete reply |
| Message length | No practical limit |
| Inbound media | Text only |
| Anonymous visitors | Yes |
| Ban / restriction risk | None — it's your site |
| Approval required | None |
Things to know
Visitors leave. Conversations don't.
A visitor who closes the tab mid-conversation still has a durable thread in your inbox, and the anonymous contact record survives. It stands on its own, though — an anonymous contact isn't automatically joined to the same person's later email or WhatsApp identity.
Anonymous contacts pile up. Drive-by visitors who ask one question and leave become anonymous contacts. That's intentional — they're the top of your funnel — but expect the contact list to look busier than your lead list.
The widget is a channel, not a separate product. It uses the same knowledge base, the same persona, the same actions, and the same handoff rules as Discord or WhatsApp. You don't configure it twice.
Human takeover works here too. Take over a widget thread from the inbox and the visitor is talking to you, live, in the same bubble. See Handoff.