Event destinations
A destination defines where events are delivered. Deck supports multiple destination types so you can receive events wherever your infrastructure already lives.Supported destination types
| Type | Identifier | Description |
|---|---|---|
| Webhook | webhook | HTTP endpoint that receives POST requests with Standard Webhooks signatures |
| AWS SQS | aws_sqs | Amazon Simple Queue Service queue |
| AWS Kinesis | aws_kinesis | Amazon Kinesis Data Stream |
| AWS S3 | aws_s3 | Amazon S3 bucket (events stored as JSON objects) |
| GCP Pub/Sub | gcp_pubsub | Google Cloud Pub/Sub topic |
| Azure Service Bus | azure_servicebus | Azure Service Bus queue or topic |
| RabbitMQ | rabbitmq | AMQP-compatible message broker exchange |
| Hookdeck | hookdeck | Hookdeck Event Gateway for routing, filtering, and transforming events |
Creating a destination
To create a destination, send aPOST to /v2/event-destinations with the destination type, a type-specific object (keyed by the type name) containing both config fields and credentials, and the events you want to receive.
"events": ["*"] to subscribe to everything.
Credential fields go inside the type-keyed object alongside config fields. There is no separate top-level credentials block.
Destination configuration reference
Each destination type requires specific configuration fields and credentials.- Webhook
- AWS SQS
- AWS Kinesis
- AWS S3
- GCP Pub/Sub
- Azure Service Bus
- RabbitMQ
- Hookdeck
Delivers events as HTTP
POST requests to a URL endpoint. Signed using the Standard Webhooks specification.| Field | Type | Required | Description |
|---|---|---|---|
webhook.url | string | Yes | Absolute endpoint URL. HTTP is accepted; use HTTPS for production. |
webhook.custom_headers | string | No | JSON-encoded object of additional headers to include on every request |
webhook.secret | string | No | Signing secret (whsec_ prefix). Auto-generated if not provided. |
Verifying webhook signatures
Deck uses the Standard Webhooks specification for webhook signatures. Every delivery includes headers for verification, and awhsec_ signing secret is generated automatically when you create a webhook destination. You can retrieve it from the Console.
Headers sent with each delivery
| Header | Description |
|---|---|
webhook-id | Unique event identifier |
webhook-timestamp | Unix timestamp of when the delivery was sent |
webhook-signature | Base64-encoded HMAC-SHA256 signature in v1,<signature> format |
Verification
Use the official Standard Webhooks SDK to verify signatures. SDKs are available for JavaScript, Python, Go, Ruby, Java, Rust, and more.Secret rotation
When you rotate your signing secret, Deck keeps the previous secret valid for 24 hours. During this window, verify against both secrets so you can roll over without downtime.Destination statuses
| Status | Meaning |
|---|---|
pending_verification | Deck is waiting for a successful response from your endpoint |
active | Receiving deliveries |
inactive | Disabled. Set via PATCH /v2/event-destinations/{id} with status: "active" to resume deliveries. |
Deliveries
Each delivery is tracked independently. For webhooks, a delivery fails when the destination does not return a2xx response within 5 seconds.
Failed deliveries are retried up to 10 times with exponential backoff (base 2, starting at 30 seconds).
Persistent failures don’t auto-disable a destination. List failed deliveries with GET /v2/event-destinations/{id}/event-deliveries?status=failure to inspect them.
Delivery statuses
| Status | Meaning |
|---|---|
success | Delivered and acknowledged |
failure | All retry attempts exhausted |