# Test webhook

> Sent when someone clicks Send test on an endpoint in the dashboard.

`eventType` is `webhook.test`.

Clicking **Send test** on an endpoint on the [Webhooks page in the dashboard](https://dashboard.mothership.com/developers/webhooks) posts one `webhook.test` to that endpoint, whatever events it subscribes to. Use it to check your endpoint answers and verifies signatures before real events arrive.

It is signed and carries `X-Mothership-Delivery-Id` like every other event. It is sent once without retries, so `pendingRetries` is `0`. No configuration can subscribe to it. Answer it with any `2xx` and ignore it in your event handling.

## Subscribing

No configuration subscribes to it. It goes only to the endpoint you test.

## Event data

- `webhookConfigId` (string): The ID of the webhook configuration the test went to.
- `message` (string): A fixed message. It names no shipment, so it can't be mistaken for a real event.

## Envelope

Mothership sends a `POST` with this JSON body. The envelope is the same on every event, and `data` holds the keys above.

- `eventType` (string): The event. Always `webhook.test` here. Route on it, and answer `2xx` to types you don't handle.
- `sentAt` (string): When Mothership queued the event to send, as an ISO 8601 string in UTC. Every retry and resend carries the same value, so it does not say when this attempt went out.
- `deliveryAttempt` (integer): Which send of this event this is, starting at `1`. Resends from the dashboard count too.
- `pendingRetries` (integer): How many automatic attempts are left if this one fails. `0` on the last one.

## Example request

```json Example body
{
  "eventType": "webhook.test",
  "data": {
    "webhookConfigId": "-OB3xk2Yq9mFv1aZ7Lw0",
    "message": "A test webhook from Mothership. Answer with any 2xx status to show this endpoint works."
  },
  "sentAt": "2026-10-08T15:04:05.000Z",
  "deliveryAttempt": 1,
  "pendingRetries": 0
}
```