ai_agent.call_completed event occurs. It fires once when an AI agent call reaches a terminal state. This webhook is in alpha: the payload shape may still change without a deprecation cycle.
Event Info
string
required
Always
"ai_agent.call_completed".string
required
Unique identifier for this call. Use this as the dedup key for idempotent processing — in rare cases the same call may be delivered more than once. A delivery that fails is not retried.
Agent
string
required
UUID of the AI agent that handled the call.
string | null
Display name of the AI agent.
Call
string
required
"inbound" (caller reached the agent) or "outbound" (agent dialled out).string
required
Terminal outcome of the call attempt:
"answered", "voicemail", "not_answered", "busy", or "unknown".boolean
required
true when the interaction was a real phone call; false for non-call interactions such as chat.string | null
ISO 8601 UTC timestamp when the call started.
string | null
ISO 8601 UTC timestamp when the call ended.
integer | null
Total call duration in seconds.
string | null
The external party’s (contact/lead) phone number in E.164 format, regardless of call direction.
null for test/widget calls or blocked caller ID.string | null
The contact’s name. It is the name the caller stated on this call, else the full name sent to the outbound call API, else the name of the matched CRM contact.
null when none is known.string | null
The contact’s email address. It is the address the caller stated on this call, else the email sent to the outbound call API, else the email of the matched CRM contact.
null when none is known.string | null
The agent’s phone line that the call used, in E.164 format. If the call never connected, this is the agent’s current provisioned number.
null when neither is known.string | null
The agent’s primary language code, for example
de or en.string | null
The language code the conversation was held in, as detected on the call, for example
de. It can differ from agentLanguage on a multilingual agent. null when no language was detected.Transcript
array
required
Ordered conversation turns. Tool-only turns with no spoken message are omitted — the actions the agent took are in
actions.Conversation Analysis
object
AI-generated analysis of the conversation.
System notes
array
required
Notes Zeeg adds about the call, beside what the agent collected. An empty array when there is nothing to note. New notes can be added at any time, so ignore a
code you do not recognize rather than failing on it.Actions
array
required
Ordered list of actions the agent executed during the call.
Booking
object | null
The scheduled event created during the call, in the same shape as the
GET /v2/scheduled-events/{uuid} resource; null if no booking was made. Correlate booking.uuid with invitee.scheduled webhook events for the same booking.CRM
string | null
UUID of the CRM person record linked to this call, if matched.
Outbound Call
object | null
What you sent to the outbound-call API when you started this call.
null for an inbound call and for an outbound call that the outbound-call API did not start.