If your chat widget is not showing, the cause is almost always one of six things: the snippet never reached the page, a cache is serving an old copy, an optimisation plugin is holding the script back, a Content Security Policy is blocking it, the website isn't on the chatbot's license, or a browser extension is hiding it. Check them in that order. Before any of it, open the browser console, because in most of these cases SpideyChat writes down exactly what went wrong.
The basics are also in our short troubleshooting doc. This checklist goes further, covering the license and caching cases that the doc doesn't explain in depth.
Step zero: read the console
Open the page where the chat should appear. Press F12 (or right-click, Inspect) and switch to the Console tab. Type "SpideyChat" into the filter box. Then reload.
Here is what each message means:
| Console line | What it means | Where to look |
|---|---|---|
[SpideyChat] Missing data-bot-id on the script tag. |
The script loaded but has no bot ID | Recopy the snippet, see check 1 |
[SpideyChat] Could not locate the widget <script> tag. |
Something rewrote or moved the tag | An optimisation plugin, see check 3 |
[SpideyChat] This chatbot isn't licensed for yoursite.com (not_registered)... |
This website isn't on the license | See check 5 |
| A "Refused to load" or "violates the following Content Security Policy" error | Your site's security policy blocked it | See check 4 |
| Nothing at all | The script never ran | Checks 1, 2 and 3 |
Silence is a clue too. If the filter shows nothing, the browser never ran the widget script, so the problem sits before SpideyChat: the page, the cache, or a plugin.
Check 1: is the snippet actually on the page?
Right-click the page, choose View Page Source and search for widget.js. You are looking for one script tag that loads widget.js from spideychat.com with a data-bot-id attribute. It belongs just before the closing </body> tag, on a template shared by every page.
If it's missing, the code was saved somewhere that doesn't output to the live site. Common culprits are a page builder block on a single page, a draft theme, or a header box that strips scripts. The install guide lists the right box for each platform.
If it's there, compare the bot ID with the one on your chatbot's page (where to find your bot ID). One wrong character loads nothing useful. Two copies of the snippet are harmless, because the widget mounts once per bot and ignores the second.
On WordPress with the SpideyChat plugin, the script tag only prints when the license is active. Open Settings > SpideyChat. If it says "The chatbot is off on this site" the message underneath explains why. Also confirm "Show chatbot" is ticked and that the page you're testing isn't covered by a path in the "Hide on" box.
Check 2: are you looking at a cached copy?
You pasted the code, saved, reloaded, and nothing changed. That is often a cache, not a broken install. Caching plugins, hosting caches and CDNs store a finished copy of each page and keep serving it until it's purged.
Purge every layer you have: the caching plugin, any host-level cache in your hosting panel, and your CDN. Then test in a private window, which skips your own browser's stored copy and any extensions. If the snippet now appears in View Page Source, you're done.
Check 3: is a performance feature holding the script back?
The classic symptom is a chat button that only appears after you scroll, move the mouse or tap the screen. Several speed tools deliberately hold JavaScript until the visitor interacts. That keeps test scores tidy, and it also keeps your chat hidden from anyone who reads without scrolling.
The fix is to exclude the widget from that delay feature. The official SpideyChat plugin already marks its script so the common optimisers leave it alone, but some tools only respect their own exclusion list. We cover each one in fixing WordPress cache plugin delays.
Check 4: is a Content Security Policy blocking it?
Some sites send a Content Security Policy header that lists which outside sources the browser may use. If yours has one, the console shows a red error naming the directive that refused SpideyChat. The widget needs spideychat.com allowed in four places:
script-src, to load widget.jsconnect-src, so it can fetch your chatbot's colour, greeting and license statusframe-src, because the chat panel is an iframe served from spideychat.comimg-src, if you gave your chatbot a custom icon
One more detail. The widget positions its button with inline styles. A policy whose style-src forbids inline styles leaves the button unstyled, so it can end up as a plain element at the very bottom of the page instead of floating in the corner. If you see that, the style rule is the reason.
If you don't run a CSP, skip this check. Most small business sites don't.
Check 5: is this website on the chatbot's license?
Every SpideyChat chatbot has a license with a list of websites. The first website it loads on is added automatically. After that, any other website has to be added on purpose. On a website that isn't listed, the widget takes itself back off the page and writes the "isn't licensed for" warning from step zero. Visitors see nothing, which is why this one surprises people.
It catches you out in three situations: you moved to a new domain, you're testing on a staging copy, or you installed the same snippet on a second business site. To fix it, open your chatbot in the dashboard and go to License & websites. Add the address under "Websites on this license", or find it in the "Turned away" list and click Allow.
A few rules worth knowing:
- Subdomains of a listed website are included, so listing your main domain covers shop.yourdomain.com too.
- localhost is always allowed, so local development never uses a slot.
- Free covers 1 website per chatbot, Starter 3, Pro 10 and Enterprise unlimited. The pricing page has the details.
There is a full walkthrough in chatbot not loading on a new domain or staging site.
Check 6: is a browser extension hiding it?
Some ad and privacy blockers hide chat launchers on every site. If the widget works in a private window with extensions off but not in your everyday browser, an extension is the cause. Most of your visitors won't run aggressive blocklists, so this usually needs no fix. It's worth knowing before you spend an hour on the other five checks.
If the button appears but the panel is blank
When the launcher shows and opens to an empty white box, the button loaded but the chat frame didn't. Recheck frame-src in your security policy, then the license list, since the chat frame runs the same website check. A paused license, set with "Pause everywhere" on the License & websites panel, also stops the chat on every site until you resume it.
Still stuck?
Note your website address, your bot ID and the exact console line, and email support@spideychat.com. Those three things usually settle it in one reply.
If you haven't installed anything yet and want to see the chat working first, paste your website address and test it. It builds a working assistant from your public pages in about a minute. On WordPress, the SpideyChat plugin handles placement, caching attributes and the license for you.