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.com. 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. |
"Chat is unavailable right now"
The browser could not reach the API, or the API refused the request. Open the console and the Network tab.
| You see | Cause | Fix |
|---|---|---|
Refused to connect to 'https://api.justonecx.com/...' because it violates the following Content Security Policy directive: "connect-src ..." | Your site's CSP blocks the SDK. | Add https://api.justonecx.com and wss://api.justonecx.com to connect-src. Reload the proxy or web server that sets the header, then hard-refresh. Check the live header with curl -sI <your site> | grep -i content-security. See Content Security Policy. |
[JustOneCX] The browser could not reach ... | The request never got an answer: CSP, ad blocker, offline or a wrong apiUrl. | Follow the row above. Then try a private window with extensions off. |
A red request with status 403 or a CORS error | The origin is not allowed. | See CORS error. |
A red request with status 401 | The public key is wrong or was rotated. | Copy it again from Settings → Developers. |
| No request at all, no console message | init() never ran. A NEXT_PUBLIC_* or VITE_* key is read at build time, so an empty key means the SDK is skipped. | Rebuild after setting the variable, and make sure your CI build sets it too. |
A CSP set in two places (for example a <meta> tag and a response header) applies both. The browser enforces the strictest combination.
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.
No chat launcher on my site
The launcher shows when chat is on, or when chat is off but the Help center has a published FAQ, article or Learn tour. Check Chat → Settings: "Chat is on" and the Help center switch. With chat off and nothing published, nothing mounts. Also check disableChat in your init() call.
The chat bubble shows for my own team
Pass disableChat: true to init() in the code path your staff use.
A board does not appear
- Call
init()first, or passpublicKeyandapiUrlto themount*function. - Check the console for a blocked request to
justonecx-boards.global.js. A strict CSP must allow that origin, or setboardsUrl. - The board is empty until you publish at least one idea or changelog entry.
- A private board shows nothing to a visitor who is not verified. See Sign-on link.
A custom domain stays pending
The TXT record at _justonecx.<hostname> must match the value in the dashboard. A CNAME alone is not enough. DNS can take a few minutes; we re-check every 5 minutes. See Custom domain.
Still stuck
Contact the JustOneCX team from your dashboard and include the console output and your SDK version.