Hey! Yes there's a built-in field for this.
In your webhook's end-of-call report payload, look for the endedReason field.
It tells you exactly why the call ended — values like no-answer, customer-did-not-pick-up, invalid-number, call-rejected and more.
Here's a quick example of what the payload looks like:
json{
"message": {
"type": "end-of-call-report",
"endedReason": "customer-did-not-pick-up",
"call": { ... }
}
}
You can store this endedReason value directly in your database on every call.
Full list of ended reasons here:
https://docs.vapi.ai/calls/call-ended-reason
For setting up the webhook to receive end-of-call reports, check assistant hooks:
https://docs.vapi.ai/assistants/assistant-hooks