W Wiretalk Docs
Developer documentation

Troubleshooting

Fix common Wiretalk widget, iframe embed, CORS, and API integration issues with step-by-step guides.

Widget not showing

Chat bubble does not appear
  • Confirm snippet is before </body> and widgetKey is correct
  • Add your domain under Widget Settings → Allowed domains
  • Open browser DevTools → Console for errors
  • Ensure embed.js URL loads (check Network tab)
CORS or script load error

apiBase must match your Wiretalk server. Production: https://wiretalk.tech/api. Embed script: https://wiretalk.tech/build/assets/embed.js

Widget shows on localhost but not production

Add your production domain to allowed domains. Clear browser cache after deploy.

Agent embed / iframe issues

CSP: frame-ancestors blocked

Error: violates Content Security Policy directive "frame-ancestors 'self'"

  • Use URL https://www.wiretalk.tech/agent/embed — not homepage or /dashboard
  • Confirm your parent site domain is approved for agent embed (contact admin@wiretalk.tech with the exact URLs you embed from)
  • Hard-refresh the parent page after any domain allowlist change
  • If the inbox looks squeezed to the left with empty space on the right, hard-refresh the iframe — embed layout now sizes from the iframe width, not the browser window
  • Set iframe width to 100% (or at least 900px) for side-by-side chat list + conversation
CSRF / 419 on login inside iframe

Deploy latest code with CSRF exemptions for bearer-token API calls. Hard-refresh the iframe (Ctrl+Shift+R).

Real-time / messages not syncing

  • Confirm the visitor page and agent dashboard both have a stable internet connection
  • Hard-refresh the chat widget and agent inbox (Ctrl+Shift+R)
  • Check browser DevTools → Console for blocked scripts or WebSocket errors
  • Try an incognito window with extensions disabled to rule out ad blockers
  • If delays persist, email admin@wiretalk.tech with your widget key, domain, and a short screen recording

Webhooks never sent

  • Open Dashboard → Integrations → Webhooks and confirm the endpoint URL is correct HTTPS
  • Click Send test — your server must return HTTP 2xx within 30 seconds
  • Verify your endpoint accepts POST with JSON and responds quickly (no long-running work in the request)
  • Check firewall / WAF rules — Wiretalk delivery IPs must reach your URL
  • Still failing? Email admin@wiretalk.tech with the webhook ID and recent delivery attempts

API errors

CodeFix
401Invalid or missing API key / Bearer token
403API key missing required ability scope
422Validation error — check request body
429Rate limit — slow down requests

Pre-chat form

Pre-chat fields are empty for logged-in users
  • Pass visitor: { name, email, phone } in window.wiretalkConfig — see the embed identity guide
  • Ensure field keys match what you pass (built-in keys are name, email, phone)
  • For data lookup login, confirm your parent row includes recognizable column names such as email or full_name
  • Pre-filled identity should also appear in the Book a demo slot picker — enable Appointments under Widget Settings first
Pre-chat form shows immediately but I set a delay

The delay applies per visitor from their first visit timestamp. Returning visitors who already submitted the form are skipped. Clear site data or use an incognito window to test the delay window as a new visitor.

Data lookup & filter record

“Search your data” button does not appear
  • Enable Data lookup and configure a read-only database connection — see the Data lookup guide
  • Turn on Visitor account login and configure the parent resolver table/column
  • Map at least one table under Filter record search with a valid link_column to the parent account
  • The visitor must be logged in — the button appears in follow-up suggestions after login
Filter search returns “login required” or empty results
  • Confirm the visitor completed account login (account_login.logged_in on their profile)
  • Verify link_column on filter tables matches the parent account key used at login
  • Check filter presets (txn, UTR, status, date range) match your column names in the dashboard
  • Review execution logs under Dashboard → Data lookup → Logs
Search results show raw HTML in chat

Filter record responses are HTML tables rendered by the widget. If you see literal tags, hard-refresh the widget (Ctrl+Shift+R) to load the latest embed script. Agent inbox messages use the same trusted embed renderer.

Duplicate “Search your data” buttons in chat

This was fixed in recent widget builds — ensure your site loads the latest embed bundle (clear CDN/cache if you proxy static assets). Bot follow-up suggestions dedupe by label; only one button should appear per conversation turn.

API reference: Widget data lookup endpoints.

Mobile WebView

Widget blocked in my Android/iOS app
  • Add app:your.bundle.id to Allowed Domains — not a website URL
  • Pass platform and app_id query params on the popout URL
  • See the mobile WebView guide
Visitor session does not persist between app launches

Enable DOM storage in your WebView (domStorageEnabled on Android, default on iOS). Persist visitor_uid from the widget:ready bridge event and pass it as ?visitor_uid=… on the next load, or use bridge storage:set messages.

Unread badge not updating in native tab bar

Listen for unread:count bridge events from the WebView. On Android, register a WiretalkAndroid JavaScript interface. On iOS, add a wiretalk WKScriptMessageHandler.

Still stuck?

Email support with: your widget key, domain URL, browser console screenshot, and steps to reproduce.