功能介紹 使用流程 方案定價 常見問題 推廣合作 實用工具 開發者中心
免費試用 客戶登入
Common Issues

10 Common Issues and Fixes

Curated from real cases: widget not showing, CORS blocked, SPA route disappearance, popup conflicts, messages not sending, and more. Every entry comes with concrete fix steps — no hand-waving.

Chat button doesn't appear in the corner?
Check in order:
  1. F12 Network: is loader.js 200 OK? If 404 / CORS error → verify the embed URL wasn't modified
  2. F12 Console: any red errors (CSP / cross-origin / token format)?
  3. Confirm the snippet sits right before </body>, not inside <head>
  4. Check whether your site has a CSP blocking external scripts — see the "CSP Configuration" section of the Widget Embed Guide
  5. Open Dashboard → "🔍 Connection Debug" → click "⚡ Test Connection" to actively verify
Updated primary color / text but the site still shows the old style?
Hard-refresh the visitor's browser (Ctrl/Cmd + Shift + R). The widget pulls the latest config on every load, no re-paste needed. If still old, check the /api/widget/config response in F12 Network to see what values are being returned.
Messages won't send / shows "network error"?
Verify the token wasn't edited; verify the bot isn't disabled in the dashboard (enabled=false returns 200 + "Service paused"); if you're behind a corporate firewall, allow the aibot.chungtair.com domain. The POST /api/widget/message response in the Debug Panel will tell you the exact failure mode.
I see CSP errors in F12, now what?
The error looks like Refused to load the script ... violates the following Content Security Policy directive. Fix: add to your site's CSP: script-src https://aibot.chungtair.com; frame-src https://aibot.chungtair.com; connect-src https://aibot.chungtair.com; img-src https://aibot.chungtair.com data:;. Full lookup table at CSP section of the Widget Embed Guide.
Widget disappears after Next.js / Vue Router page change?
Usually the SPA framework re-renders the entire <body>, wiping out the widget's injected DOM. Fix: put the embed snippet in the root layout instead of individual pages (Next.js app/layout.tsx, Nuxt nuxt.config.ts). The root layout doesn't re-render on SPA navigation, so the widget persists.
Widget overlaps with my site's popup / floating button?
Switch the button position (bottom-right / bottom-left) in Dashboard → Widget Settings. If still overlapping, check your own popup's z-index — the widget's iframe defaults to z-index 999999, raising your own element above it isn't practical. Better to reposition your element or hide it when the widget is open.
WordPress mangled my token into weird characters?
WordPress runs wpautop / wptexturize filters by default on HTML pasted into footer.php, which can convert " into smart quotes. Fix: use the "Insert Headers and Footers" plugin and paste into the Footer Scripts field, which is exempt from filters.
Shopify: I pasted into theme.liquid but nothing happens?
Make sure it's before </body> (not before </html>). Some Shopify themes use their own footer.liquid — find the file that actually renders the final </body>. View-source on your site to locate it.
Visitors don't see the widget but the Debug Panel shows ping records?
That means the widget loaded (ping arrived) but the UI is being hidden on the visitor side. Common causes:
  1. Site CSS has a global rule like iframe { display: none } or * { pointer-events: none }
  2. A cookie-consent popup fills the screen and covers the widget
  3. The visitor has an ad-blocker (uBlock etc.) that strips third-party iframes
Fix: F12 on the visitor's browser and check if the chungtair-widget container is being hidden.
I want to embed the same bot on multiple sites — how?
Paste the same snippet onto every site. Widget tokens aren't domain-locked, so multi-domain sharing works. The Debug Panel's "Last successful ping" shows the most recent pinging domain (not all of them). If you want to track conversations per domain, create separate bots with their own tokens.