BillyBumBum
03/08/2026, 10:21 PMAI Evy
03/08/2026, 10:21 PMAI Evy
03/08/2026, 10:22 PMAI Evy
03/08/2026, 10:22 PMwebhook_url field when creating the agent. If set, account-level webhooks will not be triggered for that agent
2. Check if the call actually connected
When a call does not connect (e.g., dial_failed, dial_no_answer, dial_busy) , the call_started webhook will not be triggered. However, call_ended and call_analyzed webhooks will still fire.
3. Review call logs in Retell
You can check the detailed call logs in Retell to see if your webhook has been invoked. [(2) ]()
4. Confirm your endpoint returns a 2xx status
The webhook has a 10-second timeout. If no success status (2xx) is received, it will retry up to 3 times. [(1) ]()
5. Verify event filtering
Check the webhook_events field on your agent—by default for voice agents, only call_started, call_ended, and call_analyzed are sent.AI Evy
03/08/2026, 10:22 PMBillyBumBum
03/08/2026, 10:24 PMBillyBumBum
03/08/2026, 10:24 PMAI Evy
03/08/2026, 10:24 PMAI Evy
03/08/2026, 10:25 PMpublic_log_url field from the call object
After a call ends, you can retrieve the call via the [Get Call API]() or [List Calls API]() . The response includes a public_log_url field containing details about all requests and responses received, which is helpful for debugging and tracing. [(2) ]() , [(3) ]()
2. Test with an external webhook receiver
You can use a service like [) to confirm webhooks are firing from Retell before troubleshooting your Make.com setup. [(4) ]()
3. Programmatically retrieve call data
Use the List Calls API to fetch call records and check their status:
javascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const callResponses = await client.call.list() ;
console.log(callResponses) ;
[(2) ]()
This will return call objects including call_status, disconnection_reason, and other fields that can help you understand what happened with each call.AI Evy
03/08/2026, 10:25 PMAI Evy
03/08/2026, 10:25 PMBillyBumBum
03/08/2026, 11:10 PMAI Evy
03/08/2026, 11:10 PMAI Evy
03/08/2026, 11:11 PMdisconnection_reason field that provides the call disposition you're looking for. [(1) ]()
Here are the relevant disposition values:
Call ended by a party:
- user_hangup – The user/customer hung up
- agent_hangup – The AI agent ended the call
Voicemail:
- voicemail_reached – Call went to voicemail [(2) ]()
Call didn't connect:
- dial_no_answer – The number dialed did not answer [(3) ]()
- dial_busy – The number dialed is busy [(1) ]()
- dial_failed – SIP error or unknown error [(3) ]()
Other dispositions:
- call_transfer – Call was transferred
- inactivity – Call ended due to inactivity
- max_duration_reached – Hit the max call duration limit
- user_declined – User explicitly declined the call
The webhook also includes an in_voicemail boolean in the call_analysis object that indicates whether the call reached a voicemail. [(2) ]()
Sample payload structure:
json
{
"event": "call_ended",
"call": {
"call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6",
"disconnection_reason": "user_hangup",
"call_analysis": {
"in_voicemail": false,
"user_sentiment": "Positive",
"call_successful": true
}
}
}
[(1) ]() , [(2) ]()AI Evy
03/08/2026, 11:11 PMAI Evy
03/08/2026, 11:11 PM