Agent-readable docs index: /llms.txt. Full docs in one file: /llms-full.txt. Download /docs.zip to grep all markdown files locally.

Events

Subscribe to exact types, to a family with prospect.* or list.*, or to everything with *. GET /v1/webhooks/events returns this list with a full example request body for each type.

Prospect events

data.prospect is present on every one of these and matches GET /v1/prospects/{id}.
TypeWhenExtra data fields
prospect.addedA record became a prospect, from any surface
prospect.lifecycle_changedMoved between active, opportunity, and archivedprevious_lifecycle
prospect.favoritedA team member starred it
prospect.unfavoritedA team member removed their star
prospect.note_addedA note was addednote (id, body, author, created_at)
prospect.note_editedA note was editednote
prospect.note_removedA note was removednote_id
prospect.file_addedA file was attachedfile (id, file_name, file_size, content_type, download_url valid 24 hours)
prospect.file_removedA file was removedfile_id
prospect.photo_addedA photo was added to the propertyphoto (id, url, photo_type, caption, location)
prospect.photo_removedA photo was removedphoto_id
prospect.tags_changedTags were added or removedadded, removed (id and name each)

List events

TypeWhendata fields
list.item_addedA property or person was added to a listlist, item
list.item_removedA property or person was removed from a listlist, item

The actor

Who did it: { "type": "user", "user_id": 12, "name": "Jordan Lee" } for a team member, { "type": "api_key", "api_key_id": "key_..." } for an API client, or { "type": "system" } for a background job such as a list build. source says where the change came from: app, api, cli, mcp, zapier, list, and so on.

Ordering and duplicates

Events for one webhook arrive in the order they happened. A delivery can be repeated when your endpoint did not answer 2xx in time, so treat id as the idempotency key: if you have seen evt_10442, skip it.