Website widgets
Put an agent on your own website with one script tag, as a chat panel, a call pill, or both.
One loader script installs either of two drop-in widgets on your website:
- Chat is a launcher bubble that opens a chat panel. Visitors type, the agent answers on screen.
- Voice is a floating call pill. Visitors click it and talk to the agent in the browser, no phone call and no sign-in.
Both run the agent's published version with the same prompt, tools and knowledge. Set both up from the agent's Widget section. The chat widget is one script tag:
<script src="https://app.meddle.sh/embed/widget.js" data-key="pk_live_…" async></script>Install a widget covers the key, the voice tag and every attribute the loader accepts.
How the pieces fit
Three things have to line up before a widget answers.
- A publishable key identifies the agent. It is a
pk_live_…orpk_test_…string that ships in your page source, so it is public by design. - The key's allowed sites decide which websites may use it. A request from any other site is refused before the agent runs.
- The agent's surface switch decides whether that widget answers at all. Chat and voice are separate switches, and both start off.
The key and the switch are separate so revoking a key never silently changes what the agent does, and switching a surface off never invalidates a key.
Turn a surface on or off
Each surface card in the Widget section shows Live or Off and a toggle. Both directions ask for confirmation.
- Turning chat off leaves the widget installed but tells visitors chat is not available.
- Turning voice off stops the pill appearing. Anyone already on a call keeps it until they hang up.
Each card also offers Preview (opens the widget at full size inside the app) and Get the code (the install snippet).
Which version a widget reaches
A widget runs the published version. Draft edits do not reach visitors until you publish. An archived or deactivated agent reports itself as unavailable.
How the origin check works
The origin allowlist is enforced on the server before any billable work. A request from a site not on the key's list is refused, whether the call comes from your page directly or from inside the Meddle iframe.
The key is not a secret: it sits in your page source. Its protection is the allowed-sites list, so keep that list tight and use a separate test key for staging and local work.
What gets recorded
- Chat conversations are not saved as calls. They do not appear in the call list, and nothing that runs after a call runs for them: no analysis, no scoring, no alerts, no webhooks.
- Voice widget calls are ordinary production calls. They are recorded in the call list alongside phone calls and go through the same post-call analysis.
Limits
Voice widget calls apply the caps set in the agent's Share section: call length, turn limit, and per-visitor rate limit (defaults: three minutes, thirty turns, ten starts per visitor every ten minutes). The rate limit is counted separately per publishable key.
Chat is capped separately: sixty visitor turns per conversation plus a per-visitor rate limit.
Billing
Installing the script costs nothing. Chat is metered per turn; voice is billed as call time on the same rail as a phone call. Both charge the workspace that owns the agent. If the workspace cannot be billed, the widget reports itself as temporarily unavailable.
The public share link
To let someone try the agent without touching your website, use a share link instead. A share link suits a demonstration to one person; a widget suits your own site at scale.