Skip to main content
Most launch failures come from four places: an origin missing from Allowed clients, a that blocks the CDN, an unpinned CDN version that changes under you, and the wrong bundle on a jQuery page.

Before you start

An installed widget

Run this list on the staging embed before it goes to production.

Set it up well

A webcall agent runs in the visitor’s browser, so what it knows and how it is found depend on the page as much as on the prompt.
  • Paste the snippet before the closing </body> tag. It loads the widget script itself, so it does not block the page. Keep the default bottom-right position unless your page has something there; move it with widgetPosition (configuration).
  • Pass page context, such as the product a visitor is viewing, through variables so the agent can refer to it, and make the agent’s first message say what it can help with.
  • Match the widget to your brand under Appearance in Web widget overview, or with data-ringg styling on a 2.0 version.
  • Some visitors can’t or won’t talk: see Chat mode for chat-first embeds and a prompt written for reading.

Security

  • The snippet uses the agent’s webcall public key, never your workspace API key (why).
  • variables hold no passwords, internal tokens or personal data. Anyone can read them in the page source.
  • Analytics handlers treat callId and any user identifiers according to your privacy policy.
If the key is used from somewhere it shouldn’t be, rotate it and redeploy the new snippet in the same window.

Allowed clients

Add each origin the widget runs on, and nothing you don’t own, for example: Ringg checks each entry when you add it and shows the reason inline if it refuses one. Add staging separately so you can test a new CDN version or CSP change there first.

CSP setup

If your site sends a Content Security Policy, allow jsDelivr:
To pin exact files, match the version and the bundle your loader uses:
When you upgrade, change the loader version and the CSP paths in the same deploy.

Version pinning

Ship the exact version you tested, the same string in loadAgentsCdn and in your CSP:
latest follows the 1.0 line and moves when a new 1.0 release is published. Components and data-ringg styling need a 2.0.0-beta version.

Browser QA

  • The trigger sits where you expect at desktop, tablet and mobile widths.
  • Voice mode asks for the microphone and handles both allow and deny. A call that won’t start is usually a denied microphone or a page not served over HTTPS.
  • A test call connects, the agent is audible, and the call ends cleanly.
  • With defaultTab: "text", chat sends and receives messages. If the widget opens in the wrong mode, check defaultTab and hideTabSelector in the deployed loadAgent object.
  • Components render real data: no ${{…}} visible, required inputs block submit, Send to agent locks the component.
  • Open a link and Page event buttons work, and their listeners survive client-side navigation.
  • Widget events fire once per action, including after client-side navigation.
  • No blocked CDN, CSP or mixed-content errors in the console or network panel.

Launch day

  1. The deployed agentId is the agent you tested, and every production origin is under Allowed clients.
  2. The snippet uses the current webcall key, the pinned CDN version, the right bundle for the page, and the intended defaultTab, variables and styling.
  3. The production CSP headers are tested on the live page, not only in staging.
  4. One real conversation: start and end a call or chat, submit a rating, confirm your event handlers received the payloads, then find the call in Logs under call type Webcall.

Troubleshooting

The production origin is missing from Allowed clients, or the production CSP pins a different version than the loader.
The page loads dv-agent.es.js as a plain <script>. The dashboard snippet does this by default. Switch to dv-agent.umd.js and update the CSP path.
The webcall key was rotated. Copy the new snippet from Install & domains and redeploy.

Next steps

Review conversations in Logs

Each web conversation’s transcript and analysis, under call type Webcall.

Read Analytics

Totals and trends across every conversation.