Skip to main content
All outbound events share the envelope described in Outbound webhooks and add workspaceId and integrationId. Select which events you receive in Integrations → Custom Integrations → Configure → Settings.

Shared fields

Ringee enriches outbound payloads with actor and correlation data before it queues them. These fields are optional so a lookup failure never drops the event. data.externalId is the caller-supplied correlation id for AI Voice Agent calls. It is independent from data.contact.externalId, which identifies a CRM contact linked through contact.upserted. Prefer the top-level data.externalId when present, then a linked contact id, then a normalized phone number.
data.user is omitted only when that user can no longer be resolved. data.agent and data.externalId are ownership-checked against the event’s workspace before Ringee adds them.

call.completed

A call has technically ended, regardless of whether anyone recorded an outcome yet. Required: data.callId, data.fromNumber, data.toNumber, data.status, data.direction, data.endedAt
string
required
Ringee call UUID. Use it as the unique key for the activity in your CRM.
string
required
Originating E.164 number.
string
required
Destination E.164 number.
string
required
Final call status reported by the carrier.
string
required
inbound or outbound; legacy call records may use incoming or outgoing.
string (ISO-8601)
required
When the call ended.
string (ISO-8601)
When the call was initiated.
string (ISO-8601)
When the call was answered.
number
Total billed duration.
string
pending, ready or unavailable.
object
Contact reference.
object
Company reference.
object
Ringee user the event belongs to, including the primary email when available.
object
AI Voice Agent reference with id and name when one placed the call. Absent for a human call.
string
Your correlation id from the AI Voice Agent call’s metadata.external_id or metadata.externalId.
This event does not include the outcome. Outcomes arrive separately via call.outcome.updated, and may never arrive if the user never records one.

call.outcome.updated

A person recorded or changed an outcome, or an AI Voice Agent produced its post-call outcome. This can happen well after call.completed. Required: data.callId, data.outcome, data.updatedAt
string
required
Ringee call UUID — match it against an existing activity.
string
required
The CallOutcome value, for example sale, interested, meeting_booked, voicemail, no_answer.
string (ISO-8601)
required
When the outcome was set.
object
Telephony detail for the call: callId, fromNumber, toNumber, status, direction, startedAt, answeredAt, endedAt and durationSeconds. Omitted only when the call row can no longer be resolved.
string
Free-text note attached to the outcome.
object
Contact reference.
object
Company reference.
object
Ringee user the event belongs to.
object
AI Voice Agent reference with id and name when the outcome came from an agent call.
string
Your correlation id from the originating AI Voice Agent call.
string
AI Voice Agent call UUID.
string
AI Voice Agent UUID.
object
Caller-supplied metadata stored on the AI Voice Agent call.
Update or create the activity by callId — never create a second activity for the outcome. AI Voice Agent results and webhooks use Ringee’s canonical public names meeting_booked and callback_scheduled; historical stored names are normalized before they leave Ringee. When the outcome is meeting_booked, a separate meeting.created event also fires.

call.missed

An inbound call arrived but nobody picked up. Required: data.callId, data.fromNumber, data.toNumber, data.occurredAt
string
required
Ringee call UUID.
string
required
Originating number; normally the contact for a missed inbound call.
string
required
Workspace number that received the call.
string (ISO-8601)
required
When the missed call was recorded.
string
Carrier-provided reason.
object
Contact reference.
object
Company reference.
object
Ringee user the event belongs to.
object
AI Voice Agent reference with id and name when the event belongs to an agent call.
string
Your correlation id from the originating AI Voice Agent call.
For missed calls, resolve the contact primarily from fromNumber.

call.failed

The telephony stack reported a hard failure — busy, invalid number, network error. Required: data.callId, data.fromNumber, data.toNumber, data.occurredAt
string
required
Ringee call UUID.
string
required
Originating number.
string
required
Destination number.
string (ISO-8601)
required
When the failure was recorded.
string
Carrier error code, for example USER_BUSY.
string
Human-readable description.
object
Contact reference.
object
Company reference.
object
Ringee user the event belongs to.
object
AI Voice Agent reference with id and name when one placed the failed call.
string
Your correlation id from the originating AI Voice Agent call.

note.created

Required: data.noteId, data.contact, data.content, data.createdAt
string
required
Ringee note UUID.
object
required
Contact the note belongs to.
string
required
Note text.
string (ISO-8601)
required
When the note was created.
object
User who wrote the note.
object
Ringee user the event belongs to.
object
AI Voice Agent reference with id and name when one produced the event.

callback.created

Required: data.callbackId, data.contact, data.scheduledAt, data.status, data.createdAt
string
required
Ringee callback UUID.
object
required
Contact to call back.
string (ISO-8601)
required
Scheduled callback time.
string
required
Current callback status.
string (ISO-8601)
required
When the callback was created.
string
Originating Ringee call UUID.
string
Free-text note.
object
Ringee user the event belongs to.
object
AI Voice Agent reference with id and name when the callback came from an agent call.
string
Your correlation id from the originating AI Voice Agent call.

meeting.created

Fires when a user schedules a meeting. Independent of outcomes — if the outcome is meeting_booked, both call.outcome.updated and meeting.created fire. Required: data.meetingId, data.contact, data.scheduledAt, data.status, data.createdAt
string
required
Ringee meeting UUID.
object
required
Contact invited to the meeting.
string (ISO-8601)
required
Scheduled meeting time.
string
required
Current meeting status.
string (ISO-8601)
required
When the meeting was created.
string
Meeting title.
number
Duration in minutes.
string
Physical location or video link.
string
Notes.
string
Calendar provider event id, when synced to Google or Microsoft.
string
Originating Ringee call UUID.
object
Ringee user the event belongs to.
object
AI Voice Agent reference with id and name when the meeting came from an agent call.
string
Your correlation id from the originating AI Voice Agent call.

recording.ready

The recording has been processed and is downloadable. Required: data.recordingId, data.callId, data.url, data.createdAt
string
required
Ringee recording UUID.
string
required
Call UUID used to attach the recording to an activity.
string
required
Signed URL to the recording.
string (ISO-8601)
required
When the recording became available.
string
Audio container, for example mp3 or wav.
number
Duration in seconds.
string
Plain-text transcript, when available.
object
Ringee user the event belongs to.
object
AI Voice Agent reference with id and name when the recording belongs to an agent call.
string
Your correlation id from the originating AI Voice Agent call.
Attach the recording to the activity matched by callId, and protect the URL behind your CRM’s existing access policies. Never expose recordings across organizations.

dnc.created

A phone number or contact was added to the Do Not Call list. Required: data.phoneNumber, data.createdAt
string
required
Number added to the Do Not Call list.
string (ISO-8601)
required
When the DNC entry was created.
string
Free-text reason.
string
Channel that triggered the addition.
object
Contact reference.
object
Ringee user the event belongs to.
object
AI Voice Agent reference with id and name when one produced the event.
On receipt, mark the contact as Do Not Call and disable your Call with Ringee button for it.

test.ping

Sent when you click Test webhook. Use it to validate signature verification end to end.
Return any 2xx response. Ringee ignores the response body; for example:

Machine-readable spec

The same definitions are available at runtime:
It returns each event’s requiredFields, optionalFields, examplePayload and notes — useful for generating types or validating your handler in CI.
This is a management endpoint. It requires a signed-in Ringee admin session, not X-Ringee-Api-Key.