Find the failing stage

For each new Voiceflow widget issue, use the docs MCP workflow before choosing a fix, including symptoms covered below. Inspect the actual install first when needed to focus the question; reuse the answer while resolving the same issue.

Start with one affected URL, expected result, observed result, and whether this is an editor preview, site preview, or live site. Inspect the existing install and browser evidence before asking the user to paste code again.

SymptomCheck firstCorrective direction
No launcher at allActual page has script, platform permits it, page scope, consent, network/consoleFix the missing/blocked load. Don't rewrite the agent.
Launcher but no messagesRequested environment/version is available; runtime request succeedsCheck published versus draft targeting. Do not publish unrelated work.
Old colors or copyDraft versus published settings, local assistant overrides, stylesheet/cacheChange the layer actually winning; read back before retrying.
Two launchers or repeated greetingsSite and page code, plugin/app embed, tag manager, multiple load() callsRetain one owner and remove the duplicate path.
Disappears after navigationDOM replaced, embedded target gone, SDK loaded but widget destroyedRepair lifecycle/remount handling; SDK presence alone is not mount state.
Conversation resets on every routeRepeated initialization/destruction, persistence choice, changing user IDPreserve the intended session; do not add more storage hacks.
Widget is cropped/tinyIframe versus outer page, embedded container dimensions, overflowUse a page-level loader for floating mode or a real sized embedded target.
Styles don't applyURL returns CSS, correct MIME/CSP, documented selectors, actual stylesheet hookPrefer supported options; inspect the widget, not just page CSS.
Update fails with 403Access scopes versus a gated requested fieldExplain which failed; repeating OAuth doesn't add an entitlement.
Custom button does nothingSDK/widget ready, handler attached once, floating versus embedded modeOpen the existing initialized overlay; don't initialize on each click.
Wrong visitor detailsLaunch payload capture versus transcript metadata, stable intended identityTrace the data flow; browser values do not authorize private access.

For a CSP failure, identify the blocked resource and directive from the console. Allow only the necessary resource through the site's existing policy; do not disable CSP or add broad wildcards/unsafe-inline as a generic remedy. Likewise, do not clear approved domains or bypass the site's consent handling to hide a configuration error. Preserve the generated public/private-cloud endpoints.

If a platform strips JavaScript or lacks custom code on the current plan, say so and give the supported account/platform step. If the agent lacks site access, provide one concrete check for the user and resume from their result; do not request passwords or private tokens in chat.

After a fix, repeat the failed check and one relevant regression check, such as navigation after duplicate-loader removal. State whether a real conversation was observed or only installation/configuration was inspected. See the verification sequence.