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

---
title: "Events"
description: "Every event type a webhook can subscribe to"
---

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}`.

| Type                         | When                                                  | Extra `data` fields                                                              |
| ---------------------------- | ----------------------------------------------------- | -------------------------------------------------------------------------------- |
| `prospect.added`             | A record became a prospect, from any surface          |                                                                                  |
| `prospect.lifecycle_changed` | Moved between `active`, `opportunity`, and `archived` | `previous_lifecycle`                                                             |
| `prospect.favorited`         | A team member starred it                              |                                                                                  |
| `prospect.unfavorited`       | A team member removed their star                      |                                                                                  |
| `prospect.note_added`        | A note was added                                      | `note` (id, body, author, created\_at)                                           |
| `prospect.note_edited`       | A note was edited                                     | `note`                                                                           |
| `prospect.note_removed`      | A note was removed                                    | `note_id`                                                                        |
| `prospect.file_added`        | A file was attached                                   | `file` (id, file\_name, file\_size, content\_type, download\_url valid 24 hours) |
| `prospect.file_removed`      | A file was removed                                    | `file_id`                                                                        |
| `prospect.photo_added`       | A photo was added to the property                     | `photo` (id, url, photo\_type, caption, location)                                |
| `prospect.photo_removed`     | A photo was removed                                   | `photo_id`                                                                       |
| `prospect.tags_changed`      | Tags were added or removed                            | `added`, `removed` (id and name each)                                            |

## List events

| Type                | When                                         | `data` fields  |
| ------------------- | -------------------------------------------- | -------------- |
| `list.item_added`   | A property or person was added to a list     | `list`, `item` |
| `list.item_removed` | A property or person was removed from a list | `list`, `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.
