# Custom webhook events (https://www.shipfox.io/docs/integrations/webhooks/events)

Description: See how a custom webhook starts a workflow and what the event contains.

Shipfox accepts JSON, form, and plain-text bodies. Each accepted request gets a
`202 Accepted` response with a `delivery_id`. Give retries the same
`X-Delivery-ID` header. Shipfox creates an ID when the header is missing.

## Event catalog [#event-catalog]

Custom webhook triggers use only `source`. Use your custom webhook integration
connection slug instead of `deploy_hook`.

### Requests

Requests sent to your custom webhook URL. Your workflow receives the method, headers, query, and body.

**Payload:** Fields listed below.

| Field | Type | Required | Description |
|---|---|---|---|
| `method` | string | Required | HTTP method used for the delivery. |
| `headers` | object | Required | Request headers. Shipfox keeps content-type, user-agent, x-delivery-id, x-request-id and replaces every other value with [redacted]. |
| `query` | object | Required | Parsed query parameters. A repeated parameter becomes an array. |
| `body` | any JSON value | Required | Parsed JSON, form data, or plain-text body. |

#### `received`

A custom webhook request is accepted.

```yaml
triggers:
  on_webhook:
    source: deploy_hook
```