workspaceId and integrationId.
Select which events you receive in Integrations → Custom Integrations → Configure → Settings.
Shared entity references
Several events embed the same nested objects.externalId is present when the record was linked through contact.upserted or company.upserted. Use it as your primary join key and fall back to phoneNumber.
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.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 who handled the call.
call.outcome.updated
A user recorded or changed the outcome of a call. 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.
string
Free-text note attached to the outcome.
object
Contact reference.
object
Company reference.
object
User who recorded the outcome.
Update the existing activity — never create a second one. 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
Carrier-provided reason.
object
Contact reference.
object
Company reference.
object
User reference.
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
Carrier error code, for example
USER_BUSY.string
Human-readable description.
object
Contact reference.
object
Company reference.
object
User reference.
note.created
Required: data.noteId, data.contact, data.content, data.createdAt
object
User who wrote the note.
callback.created
Required: data.callbackId, data.contact, data.scheduledAt, data.status, data.createdAt
object
Originating call reference.
string
Free-text note.
object
User who scheduled it.
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
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.
object
Originating call reference.
object
User reference.
recording.ready
The recording has been processed and is downloadable.
Required: data.recordingId, data.callId, data.url, data.createdAt
string
required
Signed URL to the recording.
string
Audio container, for example
mp3 or wav.number
Duration in seconds.
string
Plain-text transcript, when available.
dnc.created
A phone number or contact was added to the Do Not Call list.
Required: data.phoneNumber, data.createdAt
string
Free-text reason.
string
Channel that triggered the addition.
object
Contact reference.
object
User reference.
test.ping
Sent when you click Test webhook. Use it to validate signature verification end to end.
200 with:
Machine-readable spec
The same definitions are available at runtime:requiredFields, optionalFields, examplePayload and notes — useful for generating types or validating your handler in CI.
