Prompt
Why aren't my outbound calls connecting through Twilio Voice?
Latest observation
Outbound calls can fail for a handful of common Twilio Voice reasons. Here’s a practical checklist to narrow it down:
1) Verify the call is actually being created successfully
Check the Twilio Console → Monitor → Logs → Calls and look at the call’s Status and Error Code.
Also inspect the API response from Calls.create(...):
- If you got an HTTP error, the call may never have been accepted.
- If you got a
queued/initiatedcall but it never connects, the issue is usually downstream (number formatting, caller ID, permissions, webhook/TwiML, etc.).
2) Make sure the destination number is valid and in E.164 format
Twilio expects phone numbers like:
+14155552671
Not:
41555526711-415-555-2671
If the number is malformed, Twilio may reject the call or fail to route it.
3) Check your outbound caller ID / “From” number
For outbound calls, the from number must be:
- A Twilio number you own, or
- A verified caller ID (where applicable), depending on your setup and country rules
If the from number is invalid or not allowed, the call won’t connect.
4) Confirm geo permissions and country restrictions
Twilio can block calls to certain destinations unless you enable them:
- Console → Voice → Settings → Geo Permissions
If you’re calling internationally, make sure the destination country is enabled.
5) Look for a webhook/TwiML issue
When Twilio answers the outbound call, it requests TwiML from your url or twiml instructions.
Common problems:
- The webhook URL is unreachable
- It returns non-200 errors
- It returns invalid XML/TwiML
- It times out
If your webhook fails, the call may connect briefly and then drop, or never proceed.
6) Check SIP/VoIP/app-side issues if you’re calling a client or SIP endpoint
If the outbound call is to:
- a browser client,
- a SIP URI,
- Twilio Client,
- or a programmable voice app,
then make sure:
- the client is registered and online
- access tokens are valid and not expired
- the SIP domain is configured correctly
- your TwiML
<Dial>target is correct
7) Inspect the exact error code
The error code usually tells you the root cause:
- 21211: invalid
Tonumber - 21212: invalid
Fromnumber - 21215 / 21216: permission/number issues
- 21219: geo permissions or blocked destination
- 11200: TwiML/webhook fetch problem
- 13224 / 13223: call routing or destination issues
If you share the code, I can usually tell you the issue quickly.
8) Make sure your account isn’t restricted
Outbound calls won’t connect if:
- account is suspended
- you’re out of trial credit
- you haven’t verified destination numbers on a trial account
- your voice service is blocked by compliance/verification requirements
9) Check carrier-level blocking
Even if Twilio accepts the call, the downstream carrier may:
- reject the call
- label it spam
- block certain caller IDs
- require business verification or branded calling in some regions
Fastest way to debug
Send me these three things and I can help pinpoint it:
- The error code from the call log or API response
- The To and From format you’re using
- Whether you’re using a webhook URL, TwiML, SIP, or Twilio Client
If you want, paste your Calls.create(...) code and I’ll review it.