data per type. Payload objects are the same shapes the pull endpoints return, so the endpoint reference is the field-level source of truth.
engagement.recorded
Fires: every time a prospect action is recorded — a trailer view, a document open, a Decision Room visit, an action-plan check-off, a message, a forward.
data: one engagement event.
/decision-rooms/{id}/metrics instead.
Engagement type values and their metadata:
New types may be added without notice; store what you do not recognise.
call.summary.created
Fires: when an AI summary is generated for a call, and again if it is regenerated (for example after the call is re-tagged from meeting to discovery call).
data: one Call, including summary, participants, and owner.
Upsert on data.id. A regenerated summary arrives with the same call id and a newer updatedAt.
decision_room.updated
Fires: when a room’s deal-relevant fields change — status, dealValueCents, expectedCloseDate, primaryContactEmail, or name. Both a rep editing the room and the automatic flip to won when a tracked contract completes produce this event. Content-only edits (welcome copy, section visibility) do not.
data:
decision_room.esign.updated
Fires: when a tracked eSignature envelope attached to a room changes status (sent → delivered → viewed → signed → completed / declined / voided).
data:
esign.status (highest-ranked envelope) is on /decision-rooms/{id}/metrics.
integration.ping
Fires: only when an admin clicks Send test on an endpoint.
data: { "message": "Hello from TrailerCast. …" }
Respond 2xx. Nothing to store.
Not events (yet)
Creating a Decision Room, adding a person to its committee, or uploading a document does not emit a webhook today. Those changes reach you on the next incremental pull of/decision-rooms and its metrics, which is another reason to keep the poll running alongside webhooks.