Webhook Events
Complete catalog of all 21 webhook event types with payload examples.
Common payload structure
All webhook payloads include a type field identifying the event and a data object containing the event-specific fields. Timestamps are ISO 8601 UTC.
Deal Room Events
deal_room.created
Fired when a new deal room is created.
{
"type": "deal_room.created",
"data": {
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"name": "Series A Fundraising"
}
}| Field | Type | Description |
|---|---|---|
dealRoomId | string | Deal room UUID |
name | string | Deal room name |
deal_room.updated
Fired when deal room metadata changes (name, description, branding, settings, or sidebar order).
{
"type": "deal_room.updated",
"data": {
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"name": "Series A Fundraising",
"changes": ["name", "description"]
}
}| Field | Type | Description |
|---|---|---|
dealRoomId | string | Deal room UUID |
name | string | Current deal room name |
changes | string[] | Fields that changed. Values: name, description, branding, settings, sidebar_order |
deal_room.published
Fired when a deal room is published (pushed to live).
{
"type": "deal_room.published",
"data": {
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"name": "Series A Fundraising",
"version": 3,
"documentCount": 5
}
}| Field | Type | Description |
|---|---|---|
dealRoomId | string | Deal room UUID |
name | string | Deal room name |
version | number | Published version number |
documentCount | number | Number of documents in this version |
deal_room.archived
Fired when a deal room is archived.
{
"type": "deal_room.archived",
"data": {
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"name": "Series A Fundraising"
}
}| Field | Type | Description |
|---|---|---|
dealRoomId | string | Deal room UUID |
name | string | Deal room name |
deal_room.viewed
Fired when someone views a deal room. This is the most commonly used event for sales follow-up.
{
"type": "deal_room.viewed",
"data": {
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"linkId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"viewerId": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
"viewerEmail": "jane@acme.com",
"pageCount": 15,
"duration": 300,
"timestamp": "2026-04-08T12:34:56Z"
}
}| Field | Type | Description |
|---|---|---|
dealRoomId | string | Deal room UUID |
linkId | string | Share link used to access |
viewerId | string? | Viewer account ID (null if anonymous) |
viewerEmail | string? | Viewer email (null if not captured) |
pageCount | number | Pages viewed in this session |
duration | number? | View duration in seconds (null if still viewing) |
timestamp | string | ISO 8601 timestamp of the view |
Document Events
document.added
Fired when a document is added to a deal room.
{
"type": "document.added",
"data": {
"documentId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"name": "Pitch Deck Q4",
"type": "pdf"
}
}| Field | Type | Description |
|---|---|---|
documentId | string | Document UUID |
dealRoomId | string | Parent deal room UUID |
name | string | Document display name |
type | string | Document type (e.g., pdf, slide, notion, video) |
document.removed
Fired when a document is removed from a deal room.
{
"type": "document.removed",
"data": {
"documentId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"name": "Pitch Deck Q4"
}
}| Field | Type | Description |
|---|---|---|
documentId | string | Document UUID |
dealRoomId | string | Parent deal room UUID |
name | string | Document display name |
document.published
Fired when a document's staged changes are published to live.
{
"type": "document.published",
"data": {
"documentId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"name": "Pitch Deck Q4",
"version": 2
}
}| Field | Type | Description |
|---|---|---|
documentId | string | Document UUID |
dealRoomId | string | Parent deal room UUID |
name | string | Document display name |
version | number | Published version number |
document.viewed
Fired when a specific document is viewed. Includes per-document engagement metrics.
{
"type": "document.viewed",
"data": {
"documentId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"linkId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"viewerId": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
"viewerEmail": "jane@acme.com",
"pagesViewed": 8,
"duration": 120,
"timestamp": "2026-04-08T12:36:00Z"
}
}| Field | Type | Description |
|---|---|---|
documentId | string | Document UUID |
dealRoomId | string | Parent deal room UUID |
linkId | string | Share link used to access |
viewerId | string? | Viewer account ID (null if anonymous) |
viewerEmail | string? | Viewer email (null if not captured) |
pagesViewed | number | Number of pages viewed in this session |
duration | number? | View duration in seconds |
timestamp | string | ISO 8601 timestamp |
document.downloaded
Fired when a viewer downloads a document.
{
"type": "document.downloaded",
"data": {
"documentId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"linkId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"viewerId": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
"viewerEmail": "jane@acme.com",
"timestamp": "2026-04-08T12:40:00Z"
}
}| Field | Type | Description |
|---|---|---|
documentId | string | Document UUID |
dealRoomId | string | Parent deal room UUID |
linkId | string | Share link used to access |
viewerId | string? | Viewer account ID (null if anonymous) |
viewerEmail | string? | Viewer email (null if not captured) |
timestamp | string | ISO 8601 timestamp |
Viewer Events
viewer.identified
Fired when a viewer is identified by email or name (e.g., from an email gate or login).
{
"type": "viewer.identified",
"data": {
"viewerId": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"linkId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"email": "jane@acme.com",
"name": "Jane Smith"
}
}| Field | Type | Description |
|---|---|---|
viewerId | string | Viewer account UUID |
dealRoomId | string | Deal room UUID where identification occurred |
linkId | string | Share link used to access |
email | string | Viewer's email address |
name | string? | Viewer's display name (null if not provided) |
viewer.email_captured
Fired when a viewer enters their email through an email gate.
{
"type": "viewer.email_captured",
"data": {
"viewerId": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"linkId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"email": "jane@acme.com"
}
}| Field | Type | Description |
|---|---|---|
viewerId | string | Viewer account UUID |
dealRoomId | string | Deal room UUID |
linkId | string | Share link used to access |
email | string | Captured email address |
Agreement Events
agreement.signed
Fired when a viewer signs an NDA or agreement.
{
"type": "agreement.signed",
"data": {
"agreementId": "e5f6a7b8-c9d0-1234-5678-9abcdef01234",
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"linkId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"viewerId": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
"viewerEmail": "jane@acme.com",
"agreementName": "Mutual NDA"
}
}| Field | Type | Description |
|---|---|---|
agreementId | string | Agreement UUID |
dealRoomId | string | Deal room UUID |
linkId | string | Share link used to access |
viewerId | string | Viewer who signed |
viewerEmail | string | Viewer's email |
agreementName | string | Name of the agreement |
agreement.declined
Fired when a viewer explicitly declines an agreement.
{
"type": "agreement.declined",
"data": {
"agreementId": "e5f6a7b8-c9d0-1234-5678-9abcdef01234",
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"linkId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"viewerId": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
"agreementName": "Mutual NDA"
}
}| Field | Type | Description |
|---|---|---|
agreementId | string | Agreement UUID |
dealRoomId | string | Deal room UUID |
linkId | string | Share link used to access |
viewerId | string | Viewer who declined |
agreementName | string | Name of the agreement |
agreement.expired
Fired when an agreement's signing deadline passes without a signature.
{
"type": "agreement.expired",
"data": {
"agreementId": "e5f6a7b8-c9d0-1234-5678-9abcdef01234",
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"agreementName": "Mutual NDA"
}
}| Field | Type | Description |
|---|---|---|
agreementId | string | Agreement UUID |
dealRoomId | string | Deal room UUID |
agreementName | string | Name of the agreement |
Link Events
link.created
Fired when a new share link is created.
{
"type": "link.created",
"data": {
"linkId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"name": "Investor Link",
"slug": "series-a-deck"
}
}| Field | Type | Description |
|---|---|---|
linkId | string | Share link UUID |
dealRoomId | string | Parent deal room UUID |
name | string | Link display name |
slug | string | URL slug for the share link |
link.updated
Fired when a share link's settings change.
{
"type": "link.updated",
"data": {
"linkId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"name": "Investor Link",
"changes": ["expiration", "password"]
}
}| Field | Type | Description |
|---|---|---|
linkId | string | Share link UUID |
dealRoomId | string | Parent deal room UUID |
name | string | Link display name |
changes | string[] | Fields that changed. Values: name, expiration, password, allowList, settings, slug, embed_enabled |
link.clicked
Fired when a share link is accessed by a viewer.
{
"type": "link.clicked",
"data": {
"linkId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"viewerId": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
"referrer": "https://mail.google.com",
"timestamp": "2026-04-08T12:30:00Z"
}
}| Field | Type | Description |
|---|---|---|
linkId | string | Share link UUID |
dealRoomId | string | Parent deal room UUID |
viewerId | string? | Viewer account ID (null if anonymous) |
referrer | string? | HTTP referrer URL (null if direct access) |
timestamp | string | ISO 8601 timestamp |
link.expired
Fired when a share link's expiration date passes.
{
"type": "link.expired",
"data": {
"linkId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"dealRoomId": "550e8400-e29b-41d4-a716-446655440000",
"name": "Investor Link"
}
}| Field | Type | Description |
|---|---|---|
linkId | string | Share link UUID |
dealRoomId | string | Parent deal room UUID |
name | string | Link display name |
Team Events
team.member_joined
Fired when a new member joins the team.
{
"type": "team.member_joined",
"data": {
"userId": "f6a7b8c9-d0e1-2345-6789-abcdef012345",
"email": "bob@yourcompany.com",
"role": "member"
}
}| Field | Type | Description |
|---|---|---|
userId | string | User UUID |
email | string | User's email address |
role | string | Role assigned. Values: owner, admin, member |
team.member_removed
Fired when a member is removed from the team.
{
"type": "team.member_removed",
"data": {
"userId": "f6a7b8c9-d0e1-2345-6789-abcdef012345",
"email": "bob@yourcompany.com",
"removedBy": "a7b8c9d0-e1f2-3456-789a-bcdef0123456"
}
}| Field | Type | Description |
|---|---|---|
userId | string | Removed user's UUID |
email | string | Removed user's email |
removedBy | string | UUID of the user who performed the removal |