Skip to main content
Before debugging, have these ready: the page where the widget is embedded, the widget mode you are using (HTML, React, or headless), the identity model you chose, and one recent conversation if possible.
Looking for setup guidance? See Install Widget, Authentication, and Conversation Sessions.

Common Troubleshooting Scenarios

SymptomLikely causeWhat to do
Widget does not appearMissing script, wrong widget token, or the widget is mounted in the wrong placeRe-check the embed snippet, confirm the widget token from your OpenCX dashboard, and verify whether you intended a floating or inline embed.
Visitor is asked for details again or cannot see earlier chatsThe widget is using an anonymous or non-verified identity, or browser storage was resetDecide whether the visitor should stay anonymous, use collectUserData, or receive a verified user.token. If history must work across devices, use server-side authentication.
Signed-in customer still cannot see the right historyThe widget is using user.data instead of user.token, or history should be scoped with externalIdVerify that your backend is calling /widget/authenticate-user, then pass the returned token as user.token. If the same email can belong to multiple accounts, add externalId.
Custom action result shows as plain text instead of your UIThe component key does not match the action operation_id, or your headless renderer is not branching on the right action nameRe-check the component mapping, confirm the action name, and make sure your component has a fallback state for missing payload data.
Most widget issues come from one of three places: the embed path, the visitor identity model, or custom rendering logic. Start there before assuming the problem is in the AI itself.

Identity And History Checklist

Work through these in order if history is the problem:
  1. Check whether the visitor is anonymous, non-verified, or verified.
  2. Confirm whether your app is passing user.data or user.token.
  3. Decide whether cross-device history is actually required.
  4. Add externalId if one person can belong to multiple accounts or workspaces.
  5. Retest with the same browser and then with a second device.

Expectations And Limits

AreaDetail
Returning historyNewest conversations appear first when history is available for that identity.
Resolved sessionsResolved sessions remain in history, but they are not active chat threads.
File uploadsFiles larger than 5 MB are rejected.
Custom UIIf your custom renderer does not match the action name or payload, the widget falls back to normal message rendering or your own fallback logic.

Install Widget

Re-check your embed path, token, and launcher mode.

Authentication

Fix identity mismatches and cross-device history problems.

Conversation Sessions

Re-check how history, resolution, and handoff should behave.

Custom Components

Re-check action mapping and advanced widget UI behavior.