Troubleshooting
Widget doesn't show
Widget isn't showing on your site, or shows only for logged-in users, or shows blank when you open it. This page is the symptom โ cause โ fix flowchart. Run the checks in order; most installs hit the first one and skip the rest.
Symptom: widget shows for logged-in users only
Cause: page cache. WordPress caching plugins (W3 Total Cache, WP Rocket, LiteSpeed Cache, WP Super Cache), hosting- level page cache (Hostinger, SiteGround, Cloudways, Kinsta), or Cloudflare APO all serve anonymous visitors a cached HTML snapshot taken BEFORE you installed Pitchbar. Logged-in users bypass page cache, so they always hit fresh PHP and see the widget.
Fix:
- WP admin โ your caching plugin โ click Purge All Cache.
- If you're on Hostinger / SiteGround / Cloudways / Kinsta: control panel โ Page Cache โ Purge.
- If Cloudflare is proxying your domain: Cloudflare dashboard โ Caching โ Configuration โ Purge Everything.
- Open your site in incognito (new private window) โ right-click โ View Source โ search for
widget.js. Present = fixed.
Symptom: widget doesn't show at all
Walkthrough:
-
Confirm the Pitchbar WP plugin is configured.
WP admin โ Pitchbar (left sidebar). All three fields must be set:
Base URL,API Token,Agent ID. Missing any one of them = the plugin'sshouldRender()gate returns false and nothing renders. - Confirm the widget is enabled. Same Pitchbar settings page โ checkbox "Widget enabled". Default on, but worth confirming.
-
Confirm post-type scoping. Settings page โ
"Show on these post types". Defaults to
post+page. If your front page is a custom post type (e.g.landing,product) and you haven't ticked it, the widget skips that page. Tick the box. -
Open browser DevTools โ Network tab on your
front-end page. Search for
widget.js:- Present + 200 OK: the script loaded. Check Console for JS errors.
- Present + 404: your
Base URLsetting points at a host that doesn't servewidget.js. Should be your Pitchbar install root (e.g.https://pitchbar.your-domain.com). - Missing entirely: the plugin isn't emitting the tag. Confirm via View Source โ look for
<script async src=โฆwidget.jsโฆ>. Missing tag = theshouldRender()gate failed; re-check the previous 3 items.
Symptom: widget shows but says "Sorry โ something went wrong"
Widget retries the SSE stream 3 times then surfaces this generic bubble. The real error is logged server-side; the bubble is intentionally vague so visitors don't see raw provider errors.
Tail your Laravel logs while reproducing in the widget:
tail -f storage/logs/laravel.log
Common patterns and their fixes:
-
Workers AI 401: ...โ Cloudflare API token rejected. See Cloudflare 401 troubleshooting. -
Vectorize ... expected N dimensions, got Mโ embed model and index dim mismatch. See Vector dim recovery. -
Workers AI timeoutโ Cloudflare flaky. Retry; if persistent, switchCLOUDFLARE_CHAT_MODELto a smaller variant. -
message_quota_exceededโ workspace plan cap reached. Upgrade workspace plan. -
conversation_not_foundโ widget JWT is older than theconversations.cleared_aton its conversation row. Visitor needs to refresh the page so the widget reissues a fresh JWT via the next/api/v1/widget/init.
Symptom: widget shows but the launcher pill never appears
Theme conflict. Some themes set iframe { display: none !important } or use a global
z-index reset. The Pitchbar widget renders inside a Shadow DOM but its mount point is a
<div> on the host page.
Fix: add this CSS to your theme's Additional CSS:
#pitchbar-root,
#pitchbar-root * {
display: revert !important;
visibility: visible !important;
z-index: 2147483647 !important;
}
Still stuck?
Reach out at support@pitchbar.app with:
- One screenshot of the front-end page where the widget isn't showing.
- Output of
tail -200 storage/logs/laravel.log(or browser Console output if the script never reached your server). - The URL of an affected page (if public).