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

# Webhooks overview

> Workspace event names, Svix delivery, signature verification and replay handling.

Configure workspace webhook subscriptions in **Integrations → Webhooks**. SendPilot sends event payloads through Svix, which handles delivery attempts, retries and delivery logs.

## Available events

| Area | Event types |
| - | - |
| Messages | `message.sent`, `reply.received` |
| Connections | `connection_request.sent`, `connection_request.accepted` |
| Leads | `lead.updated`, `lead.tag.updated` |
| Campaigns | `campaign.started`, `campaign.paused`, `campaign.resumed`, `campaign.finished` |
| Sourcing | `lead_database.search.completed`, `lead_extractor.job.completed` |

Use these exact event names. Names such as `message.received`, `connection.sent`, and `lead.status.changed` are not the current subscription event names.

## Payload

```json theme={null}
{
  "eventId": "b4562aa8-e7b9-4881-bbd0-1c4f5f0d2e66",
  "eventType": "campaign.paused",
  "timestamp": "2026-10-01T10:30:00.000Z",
  "workspaceId": "WORKSPACE_ID",
  "data": {
    "campaignId": "CAMPAIGN_ID",
    "campaignName": "Example outreach"
  }
}
```

The envelope identifies the event, workspace and event time. `data` varies by event. Deduplicate handling using `eventId`; do not assume deliveries arrive exactly once or in timestamp order.

## Verify before processing

Workspace deliveries use Svix/Standard Webhooks signatures. Verify the **unaltered raw request body** and the delivery ID, timestamp, and signature headers using the official Svix library and your endpoint signing secret.

Typical header names are `svix-id`, `svix-timestamp`, and `svix-signature`. The library also accepts their Standard Webhooks aliases `webhook-id`, `webhook-timestamp`, and `webhook-signature`. This is not the older custom `v1,t=...,s=...` format; do not implement that parser.

See the [receiver example](https://docs.sendler.ai/webhooks/setup.md) and [Svix verification documentation](https://docs.svix.com/receiving/verifying-payloads/how).

## Delivery and recovery

Respond with a 2xx status after accepting the event into a durable, idempotent processing path. Keep the receiver fast. Svix controls retry timing; use the endpoint's delivery logs for the actual attempts and redelivery controls rather than hardcoding a SendPilot five-attempt schedule.

Sourcing requests can also accept a per-job `webhook_url`. Do not assume a per-job callback uses your workspace subscription's signing secret or delivery configuration. The authenticated job-status/result endpoints remain the source for checking a sourcing outcome.

Webhook subscription management uses the signed-in dashboard and its workspace permissions. It is not an MCP tool or a public API-key `/v1` route.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.