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>andwidgetKeyis correct - Add your domain under Widget Settings → Allowed domains
- Open browser DevTools → Console for errors
- Ensure
embed.jsURL 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
2xxwithin 30 seconds - Verify your endpoint accepts
POSTwith 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
| Code | Fix |
|---|---|
401 | Invalid or missing API key / Bearer token |
403 | API key missing required ability scope |
422 | Validation error — check request body |
429 | Rate limit — slow down requests |
Pre-chat form
Pre-chat fields are empty for logged-in users
- Pass
visitor: { name, email, phone }inwindow.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
emailorfull_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_columnto 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_inon their profile) - Verify
link_columnon 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.idto Allowed Domains — not a website URL - Pass
platformandapp_idquery 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.