TROUBLESHOOTING

Diagnose the integration from the outside in

Start with the page hostname and surface key, then check initialization, presentation, browser permission, and network connectivity.

Return to documentation
WIDGET

The launcher does not appear

Confirm the script request returns HTTP 200.

Confirm data-key contains the intended surface key.

Compare the current hostname—not the full URL—with Allowed domains.

Remove duplicate widget scripts.

Check the browser console and the /api/widget/config response.

SDK ERRORS

Common initialization messages

data-key is requiredSupply a publishable surface key to init() or the hosted script.

Widget is not allowed on this domainAdd the exact normalized hostname to Allowed domains and retry from that hostname.

Widget configuration failedConfirm the key exists, the surface is approved, and its product-demo source or video module is configured.

Demoloop is not initializedAwait init() before calling open(). In React, wait until useDemoloop().ready is true.

Module is not availableCheck the module id and its available flag, or use the modules returned by the surface configuration.

Protocol is not supportedUpdate demoloop-widget so its protocol matches the hosted experience.

Modal blocked or empty

Allow the Demoloop origin in your content-security frame rules and avoid sandboxing away scripts, same-origin behavior, camera, or microphone.

Popup does not open

Call open() directly from a user click. Browsers may block popups launched after an unrelated asynchronous delay.

No camera or microphone

Use HTTPS, inspect site permission settings, close competing media apps, and confirm the iframe allows camera and microphone.

VIDEO CONNECTION

The participants cannot connect

Confirm both participants joined the same room before it expired.

Test on current Chrome, Edge, Safari, or Firefox.

Test once without a VPN or restrictive corporate network.

Confirm WebRTC traffic is permitted.

Remember that the beta has no managed TURN relay for networks that block peer-to-peer connectivity.

ACTIONS

An SDK action times out or is rejected

Confirm the action target was registered before the demo opened, the handler returns before its timeout, and the host page observes the provided AbortSignal. String navigation must resolve to the current host origin. A destructive or permission-changing action should remain behind the host application's own confirmation and authorization.

SUPPORT

Collect useful diagnostics

Include the surface id, page hostname, browser and version, approximate timestamp, module id, visible error, and reproduction steps. Never send passwords, access tokens, private API keys, or full production customer data.

Contact Demoloop support