> ## Documentation Index
> Fetch the complete documentation index at: https://docs.conversimple.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Embed a voice agent on a website

> Use the script or iframe snippet from an active widget deployment.

This path lets a ConverSimple agent answer visitors. If your SaaS already has a concierge and chat UI, use [Existing Concierge Voice](/use-cases/existing-saas-concierge) instead.

## Prerequisites

* A [published agent](/start/create-an-agent).
* A **widget** deployment whose status is active.
* A website where you can add the embed code and test microphone permission.

## Add the widget

1. Open [Deployments](https://app.conversimple.com/deployments), create a widget deployment for your agent, and activate it.
2. On its detail page, copy the **Script Embed** or **Iframe Embed** code. The snippet identifies the deployment; change behavior later in the deployment editor without redeploying your website.
3. Paste it into a staging page, load that page over HTTPS, start a call through a user gesture, and confirm that the visitor can speak and hear a reply.

A minimal script embed looks like this; use the generated snippet for a real deployment:

```html theme={null}
<script src="https://app.conversimple.com/js/widget.js"
        data-deployment-id="YOUR_DEPLOYMENT_ID"></script>
```

The iframe needs its companion bridge to apply dashboard position changes:

```html theme={null}
<iframe id="conversimple-widget-YOUR_DEPLOYMENT_ID"
        src="https://app.conversimple.com/embed/widget/YOUR_DEPLOYMENT_ID"
        allow="microphone; autoplay"
        title="Voice assistant"></iframe>
<script src="https://app.conversimple.com/js/widget_iframe_bridge.js"
        data-deployment-id="YOUR_DEPLOYMENT_ID"></script>
```

## Engagement settings

The deployment can offer an incoming website call after an auto-call delay, require a prior page interaction, play an offer sound, and respect a visitor's decline preferences. Set these options, position, and page-context controls in the deployment editor. The delay starts when the widget loads. If **Require user interaction first** is enabled, it starts after a real click, key press, or tap in the script host page or inside the iframe widget itself. A host-page click cannot unlock an iframe offer. Interaction does not skip the delay. The offer itself is local to the browser; a voice session starts only when the visitor accepts and grants microphone access. Set the delay to `0` or leave it empty to disable auto-call. The embed accepts only the deployment ID; the iframe also requires its companion bridge.

## Limit widget usage

In the deployment editor, enable **Widget limits** to set a daily admission budget, estimated reservation per conversation, maximum session duration, concurrent conversation count, daily conversation minutes per visitor IP, and allowed HTTPS website origins. These settings apply to both script and iframe widgets. The daily budget is a conservative admission estimate, not an exact cap on the model provider's invoice. The platform checks these limits when a visitor accepts and starts a session, so ringing and declined offers do not reserve usage. Use the actual HTTPS origins of each site that embeds the widget. Limited iframe widgets also verify the host origin when the iframe loads; a host page that suppresses the `Referer` header entirely cannot embed one. A denied origin cannot load the iframe or start a conversation.

## Limits and troubleshooting

An iframe and script embed have distinct browser clients. Test the one you actually ship, including a first user interaction, a decline, and a repeat visit. If the UI connects but audio is silent, follow [Browser voice troubleshooting](/troubleshooting/browser-voice). A website widget is not a Twilio phone call or the customer-owned concierge SDK.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.