> ## Documentation Index
> Fetch the complete documentation index at: https://docs.spott.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks

> Get notified by Spott when events happen: configure endpoints, subscribe to events, and build event-driven integrations.

**Webhooks** notify your systems when something happens in Spott: the inverse of the
API, where you ask Spott for data. Spott's webhook delivery is powered by **Svix**,
which handles retries, signing, and idempotency for reliable delivery.

## Configure webhooks

1. Go to **Settings → Webhooks** (admin permissions required).
2. Add your **endpoint URL** and select the events to subscribe to.
3. Save. Spott starts delivering events to your endpoint as they occur.

<Frame>
  <img src="https://mintcdn.com/spott-docs/p014P0_PfappR2TU/images/developers/webhooks-endpoints.webp?fit=max&auto=format&n=p014P0_PfappR2TU&q=85&s=757d2bc53f88d14999ef8b79165f0715" alt="The Webhooks page with the Endpoints, Event Catalog, Logs, and Activity tabs" width="1600" height="773" data-path="images/developers/webhooks-endpoints.webp" />
</Frame>

## Available events

Every event has its own page in the **sidebar**, grouped by record type, with the
full payload schema and an example. The live, current catalog is also shown in
**Settings → Webhooks** when you add an endpoint, where you pick exactly which events
to subscribe to. The events cover the lifecycle of the core records:

<Frame>
  <img src="https://mintcdn.com/spott-docs/TiuVDIGlbmvRMipI/images/developers/webhooks-catalog.webp?fit=max&auto=format&n=TiuVDIGlbmvRMipI&q=85&s=086dfa3a3b307a686135bd3b14689377" alt="Subscribing to events from the webhook event catalog" width="997" height="840" data-path="images/developers/webhooks-catalog.webp" />
</Frame>

* **Applications**: `application.created`, `application.updated`,
  `application.deleted`, `application.stage.moved`, `application.rejection.created`
* **Candidates**: `candidate.created`, `candidate.updated`, `candidate.deleted`,
  `candidate.merged`, `candidate.education.updated`,
  `candidate.certifications.updated`, `candidate.workExperiences.updated`,
  `candidate.contactInformation.updated`
* **Companies**: `client.created`, `client.updated`, `client.deleted`,
  `client.merged`, `client.hierarchy.updated`
* **Jobs**: `vacancy.created`, `vacancy.updated`, `vacancy.deleted`,
  `vacancy.merged`, `vacancy.stage.moved`
* **Job board postings**: `jobBoardPosting.created`, `jobBoardPosting.updated`,
  `jobBoardPosting.deleted`
* **Placements**: `placement.created`, `placement.updated`, `placement.deleted`
* **Notes**: `note.created`, `note.updated`, `note.deleted`
* **Users**: `user.created`, `user.updated`, `user.invited`, `user.deactivated`

<Tip>
  Handle the **`.merged` events** (`candidate.merged`, `client.merged`,
  `vacancy.merged`) from the start. When two records are merged in Spott, one ID stops
  being the live record. An integration that ignores these keeps both copies on its
  side, and the duplicates are awkward to unpick later.
</Tip>

## Common integration patterns

* **Invoicing automation**: subscribe to `placement.created`, then fetch the
  placement details (candidate, job, fee) via the
  [API](/docs/developers/api-overview) and push them to your finance system.
* **CRM sync**: subscribe to candidate and contact lifecycle events and mirror
  updates to an external CRM.
* **Custom analytics**: log events of interest into your data warehouse for
  downstream analysis.

## Webhooks vs the API

* **Webhooks**: Spott pushes a notification when an event occurs.
* **API**: you ask Spott for data on demand.

Most integrations use both: the webhook tells you *that* something happened; the API
tells you *what* exactly.
