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

# Destinations

> Forward events to your servers automatically

A destination is a URL that Hookdrop forwards [events](/concepts/events) to after they are captured. When a webhook arrives at your [endpoint](/concepts/endpoints), Hookdrop immediately stores it and then delivers a copy to every destination you have configured.

## Multiple destinations per endpoint

Each endpoint can have any number of destinations. Hookdrop delivers to all of them simultaneously, so you can forward the same event to multiple targets at once:

<CardGroup cols={3}>
  <Card title="Local development" icon="laptop">
    Forward to your local tunnel (e.g. ngrok) while you build.
  </Card>

  <Card title="Staging" icon="flask">
    Hit your staging server to test your integration end-to-end.
  </Card>

  <Card title="Production" icon="server">
    Deliver to your live server once you're ready to go.
  </Card>
</CardGroup>

## Adding a destination

```bash theme={null}
POST /api/endpoints/{id}/destinations
Authorization: Bearer TOKEN
Content-Type: application/json

{
  "url": "https://your-server.com/webhooks",
  "secret": "optional-signing-secret"
}
```

The `url` is required. The `secret` is optional but recommended.

## Signing secret

When you set a `secret` on a destination, Hookdrop signs every forwarded request. Your server can use this signature to verify the request genuinely came from Hookdrop and has not been tampered with.

<Note>
  The signing mechanism follows the same HMAC-SHA256 pattern used by providers like Stripe and GitHub. Check the `X-Hookdrop-Signature` header on incoming requests.
</Note>

## Automatic retries

If your server returns a non-2xx response — or does not respond within **10 seconds** — Hookdrop treats the delivery as failed and retries automatically using exponential backoff:

| Attempt         | Delay                        |
| --------------- | ---------------------------- |
| Initial attempt | Immediately on event capture |
| 1st retry       | 5 seconds after failure      |
| 2nd retry       | \~25 seconds after 1st retry |
| 3rd retry       | \~2 minutes after 2nd retry  |
| 4th retry       | \~10 minutes after 3rd retry |

After 4 failed retries, the event moves to the [dead letter queue](/concepts/dead-letter).

<Tip>
  Make your webhook handler respond quickly. Offload any heavy processing to a background job and return a `200 OK` as soon as you receive the request. This prevents unnecessary retries.
</Tip>

## Delivery logs

Every delivery attempt is logged. In the dashboard you can see the response code, response body, and timestamp for each attempt, so you always know exactly what happened between Hookdrop and your server.

## API reference

See [Destinations](/api-reference/destinations) for list, add, and delete operations.
