The widget is not showing
Five gates in order — plan, activation, the snippet, allowed domains, the browser — before you touch your theme.
Browse topics
What it is
A missing chat bubble is almost never a CSS problem. It is nearly always one of a small number of gates, and they fail in a predictable order. Work down this list rather than rewriting your theme.
The gates, in the order they are checked:
- Plan — Free workspaces cannot use the widget at all.
- Activation — a draft or paused chatbot refuses to serve it.
- The snippet — present on the published page, with its attributes intact.
- Allowed domains — the page's host must be on the list.
- The browser — blockers, caching, and mixed content.
Most reports are gate 3 (the snippet is in an unpublished draft) or gate 4 (the live host was never added).
When you would use it
The launcher is missing, the chat never opens, or the browser console shows a blocked request from your site.
Where to find it
Open Dashboard → Chatbots → your chatbot → Integrations → Web widget.
Step 1 — Is the chatbot active?
Open Playground. The badge must read Active, not draft or inactive. A chatbot that has never been activated will not serve the widget anywhere, no matter how perfect your snippet is.
Fix: activate it from the note on the Playground tab or from Settings → Danger zone. See Activate or pause a chatbot.
Step 2 — Does your plan include the widget?
Open Integrations → Web widget. If you see an upgrade wall instead of a snippet, you are on Free. The widget, iframe embed, plugins, and messaging channels all need a paid plan.
Fix: upgrade, or use the hosted link, which works on every plan — Integrations → Messaging → Direct link. See Integrations and plans.
Step 3 — Is the snippet actually on the live page?
This is the one people are most confident about and most often wrong about.
- Open your live site — the real address a visitor uses, not a preview URL.
- View the page source (not the inspector's rendered DOM, which can hide the difference).
- Search for
chatbot-widget.
If it is not there: you saved the snippet into a draft, a different template, or a page type your visitors never reach. Republish.
If it is there, check it is intact:
data-widget-tokenpresent, with a real value.data-api-base-urlpresent.- The tag not mangled by your CMS — some editors strip attributes or escape the tag into plain text.
- The snippet appearing exactly once. Twice gives you two bubbles.
Recopy from Integrations → Web widget if anything looks off. See Embed the website widget.
Step 4 — Is your host on the allowed-domains list?
The single most common production failure. In production the widget is blocked on any host that is not listed, and an empty list blocks it everywhere — an empty list means "not configured", not "allow everyone".
Compare the address bar on the failing page with the list, character by character:
- Is it
www.example.comwhile you only listedexample.com? Different hosts. Add both. - Is it a subdomain like
shop.example.com? Add it, or use*.example.com. - Is it a staging or preview domain? Add it too.
- Did you paste a full URL with
https://or a path? Save the bare hostname instead.
Fix and save, then hard-refresh. See Allow the widget on your domains.
Step 5 — Is it the browser?
If gates 1–4 all pass:
- Try a private window with extensions disabled. Content and ad blockers sometimes hide chat launchers by heuristic.
- Hard-refresh. Your CDN or the browser may be serving a cached copy of the page from before you pasted the snippet.
- Check your site is served over HTTPS. A secure script on an insecure page is blocked as mixed content.
- Look at the browser console for a blocked request or a content-security-policy error. A strict CSP on your site can refuse to load third-party scripts — you would need to allow the widget's origin.
- Try a second device. A single stubborn browser profile is a different problem from a broken embed.
Step 6 — Prove the chatbot itself works
Open Test Chatbot from the chatbot header and send a message. If it answers, the chatbot is fine and the problem is purely in the delivery path — keep working the gates above.
Note that Test Chatbot proves nothing about the widget: it is the owner's private door and uses no widget token, no allowlist, and no plan gate. A working Test Chatbot with a broken widget is completely normal. See Try Test Chatbot.
Telling the failures apart
Different symptoms mean different causes. Do not treat them as one problem:
| Symptom | Cause |
|---|---|
| No bubble at all on your site | Plan, activation, snippet, or allowed domains — this page |
| Bubble appears, chat says "not ready yet" | Untrained. See Untrained mode |
| Bubble appears, chat stopped answering | Out of credits. See Out of credits |
| Hosted link shows a not-found page | Activation or a stale handle. See Hosted page 404 |
| Two bubbles | The snippet is on the page twice |
| Bubble in the wrong place | Configurator. See Change the widget look and position |
What you will see
The Playground tab shows Active or a draft note. The Web widget tab shows either a live snippet with usage statistics or an upgrade wall. The allowed-domains box warns you when the list is empty.
Limits and plan notes
The widget needs a paid plan with integrations and an active chatbot. In production the allowlist is required.
Widget requests are also rate-limited per minute and per day, with the current limits shown on the Web widget tab. A visitor who trips the limit is asked to retry shortly — that shows as a message inside a working chat, never as a missing bubble.
Messaging channels showing as unavailable or coming soon are unrelated to the website widget; they are a different tab.
Common problems
The script is on the page and still nothing happens.
Allowed domains in production, nine times out of ten. Add the exact host visitors use, including www, save, and hard-refresh.
It works in Test Chatbot but not on the site.
Expected — Test Chatbot bypasses every gate the widget has to pass. Fix the live script attributes and the allowlist.
It worked yesterday.
Ask what changed: a site deploy that dropped the snippet, a new domain, a plan downgrade, or exhausted credits. Check the credits meter in the sidebar first, since it is the fastest to rule out.
It works for me but not for a colleague.
An extension or a cached page on their side. Have them try a private window on another device.
The bubble flashes and disappears.
Usually two instances fighting, or a single-page app re-initialising on navigation. Remove the duplicate snippet, and tear instances down on route changes in an SPA.
Common questions
It works in Test Chatbot but not on my site.
Expected. Test Chatbot is the owner's private door and bypasses the plan gate, the widget token, and the allowlist. Fix the live script attributes and the allowed domains.
The script is on the page and still nothing happens.
Allowed domains in production, nine times out of ten. Add the exact hostname visitors use, including www, save, and hard-refresh.
Will a content blocker hide the widget?
Sometimes. Test in a private window with extensions disabled — but only after you have confirmed the plan, activation, snippet, and allowlist.
It worked yesterday and stopped today.
Ask what changed: a site deploy that dropped the snippet, a new domain, a plan downgrade, or exhausted message credits. Check the credits meter first.
Does a messaging channel showing as unavailable break the widget?
No. Messaging apps are a different tab entirely and have no bearing on the website bubble.
Was this article helpful?
Related articles
Embed the website widget
Copy one script tag from Integrations → Web widget, paste it on your published pages, then allow your domain and verify.
Allow the widget on your domains
Only listed hostnames may load your widget. An empty list means "not configured", so live sites are blocked.
The widget is blocked
Six causes: no integrations on your plan, a paused chatbot, a missing token, an unlisted host, an empty allowlist, or a non-HTTPS page.
Activate or pause a chatbot
Turn the chatbot on for visitors, or pause it without losing anything. Training is an entirely separate status.
Ready to try it on your own content?
Create a free workspace, add a document, and ask the questions your team is tired of answering.