Appearance
Troubleshooting
Open your browser's developer console first. The SDK logs every problem with the prefix [JustOneCX].
Nothing shows up
| Check | Fix |
|---|---|
| Is the content Published? | Drafts are never sent to visitors. |
| Is the public key correct? | Copy it again from Settings → Developers. A rotated key stops the old one working at once. |
Is apiUrl set? | Use https://api.justonecx.qd.je. Without it the SDK calls localhost:8000. |
| Does targeting match you? | Test with Everyone targeting first. |
| Has the visitor already seen it? | Finished or dismissed content is not shown again. Clear localStorage for the site, or use a private window. |
| Is the step's element on the page? | Missing elements are skipped. Look for a console warning. |
CORS error in the console
Add your site's origin to Settings → Developers → Domains & CORS. Include http://localhost:<port> for local work. See Allowed origins.
identify() called before init()
Run init() first. With the script tag, put your code after the script element. In a framework, call init() in your top-level component and identify() in an effect that runs after it.
Tours do not change when the page changes (single-page app)
Pass trackRouteChanges: true to init(), or data-track-route-changes="true" on the script tag.
Errors during server-side rendering
You called init() on the server. Move it into useEffect, onMount, a .client plugin, or an isPlatformBrowser check. See Frameworks.
Targeted content does not appear after sign-in
Traits must be saved before targeting can match them. await identify(...), then call init() again.
A second user sees the first user's chat
Call reset() when a user signs out. See reset.
The chat bubble shows for my own team
Pass disableChat: true to init() in the code path your staff use.
Still stuck
Contact the JustOneCX team from your dashboard and include the console output and your SDK version.