The issues below are real problems we've encountered working with self-hosted and DIY deployments. Each fix is verified. If you hit something not on this page, contact support — we will add it.

Twilio error 22105 — Invalid VoiceUrl

Symptom: Twilio rejects your webhook URL with: Twilio API 400: {"code":22105,"message":"Invalid URL provided for VoiceUrl: http://api:8000/api/v1/telephony/inbound/run"}

Cause: the BACKEND_API_ENDPOINT env var on your self-hosted deployment is set to http://api:8000 (internal Docker hostname). Twilio cannot reach internal Docker hostnames.

Fix: SSH to your server. Open /root/aiwebcall/.env. Delete the line BACKEND_API_ENDPOINT=.... Delete the line BACKEND_URL=.... Verify PUBLIC_BASE_URL=https://[your-public-domain]. Run cd /root/aiwebcall && docker compose up -d --force-recreate api. Then in Shopbell dashboard, re-attach the Twilio number to the telephony configuration so the corrected webhook URL is pushed to Twilio.

'Dograh API is not reachable at http://localhost:8000'

Symptom: When you test a Web Call, you see this error in the workflow editor.

Cause: Your browser cannot reach the API. On self-hosted deployments, this means the API container is not running OR the Caddy / nginx reverse proxy is misconfigured OR the BACKEND_API_ENDPOINT is set to localhost:8000 (which only works on the server itself, not in your browser).

Fix: Check docker ps on your server — the API container must show 'Up'. Check your Caddyfile / nginx config — the API must be reverse-proxied under /api/v1/* on your public domain. Check the BACKEND_API_ENDPOINT env var. For full troubleshooting, see the Connecting a Twilio Number guide which covers the env-var fix in detail.

Browser microphone blocked

Symptom: Web Call button is disabled, or you click it and nothing happens, or you see 'Permission denied' in the browser console.

Fix: Click the site permissions icon (left of the URL in Chrome, Firefox). Find app.shopbell.ai. Allow microphone. Hard refresh. Click Test Call again. In Chrome, you can also go to chrome://settings/content/microphone and remove app.shopbell.ai from the blocked list.

Call connects but no audio / silent calls

Symptom: Twilio shows the call connected, the agent ran, the transcript says 'AI: [greeting]' — but the caller heard nothing.

Cause: WebSocket audio stream is not reaching Twilio. Either TURN server is disabled, or the firewall is blocking UDP media ports, or the agent's TTS is misconfigured (e.g., used a retired voice like Nicole).

Fix 1 (TTS): Check your workflow's TTS configuration. Nicole is retired — switch to Bella, Adam, or Sky. Save. Test.

Fix 2 (TURN): In your server's .env, verify TURN_HOST is set to your coturn server (default: TURN_HOST=coturn for the Docker coturn container). TURN_ENABLED should be true.

Fix 3 (Firewall): Open UDP ports 49152-65535 on your server's firewall (the RTP media port range). Twilio sends audio media over UDP — if these are blocked, the call connects but is silent. ufw allow 49152:65535/udp on Ubuntu.

Post-call webhook not firing

Symptom: Calls work fine but you never see the summary in Zapier / Google Sheets.

Fix: Check the Webhook node URL in the workflow. Click the Webhook node, verify URL is reachable (curl it from your laptop). Check Shopbell Recordsings page — the call should show 'webhook fired' or 'webhook failed' status. If failed, the destination URL was unreachable or returned non-2xx. The webhook retries 3 times with exponential backoff.

Call recording missing

Symptom: A call appears in Recordings but no audio link.

Fix: Check that call recording is enabled for your Twilio account. Check that your inbound workflow has a recording-enabled telephony configuration. Recording is on by default for Twilio configurations — verify under Telephony Configurations → [your config] → 'Recording Enabled' is checked.

Frequently Asked Questions

Where do I find the full logs?

Self-hosted: docker logs aiwebcall-api-1 (for API issues) or docker logs aiwebcall-ui-1 (for UI/Web Call issues). Hosted: contact support — we can pull logs from our monitoring stack for your account.

How do I report a bug?

Email admin@shopbell.ai with: the call ID (visible in Recordings), what happened, what you expected. Always include your Shopbell organization name and the approximate timestamp.

What's the fastest way to test if my server is healthy?

Runcurl -s https://app.shopbell.ai/api/v1/health — should return {"status":"ok","backend_api_endpoint":"https://app.shopbell.ai"}. If this fails or shows http://api:8000 in the endpoint, your .env is wrong — see the Twilio 22105 fix above.