Complete Call Intelligence: Post-call webhooks deliver detailed reports
including transcripts, call analysis, success metrics, and dynamic variables
for every completed call.
Overview
Post-call webhooks provide comprehensive notifications when calls complete, regardless of success or failure. These webhooks enable you to update your systems, trigger workflows, and analyze call outcomes in real-time.Real-time Notifications
Receive instant notifications when calls end with complete call data and
analysis
Complete Call Data
Get transcripts, summaries, success metrics, and all dynamic variables
from the call
Event Specification
HTTP Method and Headers
Openmic sends aPOST
request to your configured post-call webhook URL with:
- Content-Type:
application/json
- User-Agent:
Openmic-Webhook/1.0
- Expects:
2xx
status code response - Timeout: 10 seconds (no retries for post-call webhooks)
Event Type
All post-call webhooks use the event type"end-of-call-report"
regardless of call outcome.
Request Payload
Successful Call Example
Failed Call Example
Payload Fields Reference
Core Call Information
Field | Type | Description |
---|---|---|
type | string | Always "end-of-call-report" |
sessionId | string | Unique identifier for the call session |
callType | string | Type of call (e.g., "phonecall" ) |
direction | string | Call direction: "inbound" or "outbound" |
fromPhoneNumber | string | Originating phone number in E.164 format |
toPhoneNumber | string | Destination phone number in E.164 format |
Timestamps and Duration
Field | Type | Description |
---|---|---|
createdAt | string | ISO 8601 timestamp when call was initiated |
endedAt | string | ISO 8601 timestamp when call ended |
Calculate Duration: Subtract
createdAt
from endedAt
to get the total
call duration in milliseconds.Call Outcome Data
Field | Type | Description |
---|---|---|
disconnectionReason | string | Reason the call ended (see disconnection reasons below) |
isSuccessful | boolean | Whether the call achieved its intended objective |
summary | string | AI-generated summary of the call content |
transcript | array | Conversation transcript as [speaker, message] pairs |
Context Data
Field | Type | Description |
---|---|---|
dynamicVariables | object | All dynamic variables that were active during the call |
Disconnection Reasons
Understanding why calls end helps you analyze performance and identify issues:Natural Endings
Expected call completions -
user_ended_call
- User hung up -
agent_ended_call
- Agent ended the call - call_completed
- Call
reached natural conclusionConnection Issues
Technical problems -
dial_failed
- Could not establish connectiondial_no_answer
- No one answered the call -dial_busy
- Line was busy -network_error
- Network connectivity issues
System Issues
Platform-related endings -
agent_error
- AI agent encountered an
error - timeout
- Call exceeded maximum duration - system_error
-
Internal system errorCall Transfers
Escalation scenarios -
transferred_to_human
- Escalated to human
agent - transferred_to_external
- Forwarded to external number -
voicemail
- Call went to voicemailTranscript Format
Structure
Transcripts are arrays of conversation turns, where each turn is a two-element array:Speaker Types
Speaker | Description |
---|---|
"assistant" | AI agent responses |
"user" | Human caller input |
"system" | System messages or notifications |
Example Transcript Analysis
Empty Transcripts: Failed calls or very short calls may have empty
transcript arrays. Always check if the transcript exists and has content
before processing.
Success Determination
Understanding isSuccessful
The isSuccessful
field indicates whether the call achieved its intended business objective, not just technical success:
Successful Calls
isSuccessful: true
- Appointment successfully booked - Customer
inquiry fully resolved - Sales lead qualified and interested - Support
issue resolvedUnsuccessful Calls
isSuccessful: false
- Customer declined offer - Unable to resolve
issue - Incorrect number/wrong person - Call ended prematurelyConnected ≠ Successful: A call can connect and have a full conversation
but still be marked as unsuccessful if it didn’t achieve its goal.