Skip to main content
Each event is one JSON body with the envelope described in What Darwin sends. data.object is the thing the event is about.

Events

data.object has the same shape as the REST API’s answer for that object, so code that reads GET /conversations/{id} also reads the webhook. Webhooks always include names and emails: an endpoint exists to get the lead into your CRM.

Example payloads

The conversation here is shortened; it carries every field of a conversation, without the transcript.
conversation.completed has the same shape. Its evaluation is filled in: intent, buying_stage, qualification_score and meeting_intent (0 to 10), understood, failure_category, abandonment_reason and recommended_improvement. conversation.started carries the conversation without messages.
The conversation here is shortened; it carries every field of a conversation, with its transcript in messages. Each answer’s key comes from its question and stays the same while the question does; GET /outcomes lists every form’s keys. fit is false when an answer matched the form’s fit rules, and fit_reasons names those questions. billing is counted, not_billable, voided or none.
verified is true when the calendar provider confirmed the booking. On meeting.rescheduled, start_at, end_at and reschedules change; on meeting.canceled, status is canceled.
Shortened. The experiment has the shape of GET /experiments/{id}.
A page that fails keeps its last good content, so the agent keeps answering from it until you fix or remove it.
Sent only by Send test event. It is signed like a real event, sent once and not retried, and does not appear in GET /events.
If the object no longer exists when Darwin builds the payload, data.object is null. If the person was erased, data is { "erased": true }.