Self-Hosted · Open Source · .NET 10

Self-Hosted Webhook
Delivery that arrives.

At-least-once delivery with exponential backoff, per-endpoint circuit breakers, HMAC signing, and a real-time dashboard. One Docker command.

your-service
endpoint-A
delivered
your-service
endpoint-B
retry #2
your-service
endpoint-C
circuit open
REAL-TIME DELIVERY FEED — SIGNALR LIVE UPDATES
7
Retry attempts with exponential backoff
5
Consecutive failures to open circuit
1cmd
Docker Compose to run everything
0dep
No Redis, no RabbitMQ, just PostgreSQL

Built for reliability,
not just delivery.

Every feature exists because webhook delivery fails in production—and your subscribers need guarantees.

Exponential Backoff Retries
7 automatic retry attempts: 5s → 30s → 2m → 15m → 1h → 6h → 24h. Messages are never silently dropped.
at-least-once
Per-Endpoint Circuit Breaker
Opens after 5 consecutive failures with a 5-minute cooldown. Protects your infrastructure from cascading failures.
auto-recovery
HMAC-SHA256 Signing
Standard Webhooks spec: webhook-id, webhook-timestamp, webhook-signature headers on every request.
svix-compatible
Real-Time Dashboard
React SPA with live delivery feed over SignalR. Monitor attempts, view payloads, filter by status — all in one place.
signalr live
Idempotency Keys
Prevent duplicate deliveries across retries or replay. Optionally include an idempotencyKey per message.
dedup
Prometheus Metrics
OpenTelemetry instrumentation with Prometheus exporter. Plug straight into your Grafana stack.
observability

Up in
60 seconds.

PostgreSQL included. No Redis, no message broker, no extra infrastructure.

01
Start the stack
Docker Compose pulls the image and spins up WebhookEngine + PostgreSQL.
docker compose up -d
02
Open the dashboard
Navigate to localhost:5100 and log in with the default credentials.
admin@example.com / changeme
03
Create an app & send webhooks
Create an application, register endpoints, and start publishing messages via API or the .NET SDK.
dotnet add package WebhookEngine.Sdk
docker-compose.yml
# Clone and start git clone https://github.com/voyvodka/webhook-engine cd webhook-engine docker compose -f docker/docker-compose.yml up -d # Or pull and use your own compose services: webhook-engine: image: voyvodka/webhook-engine:latest ports: - "5100:8080" environment: - ADMIN_EMAIL=admin@example.com - ADMIN_PASSWORD=changeme

One process.
Everything included.

API, background workers, and the React dashboard all run inside a single ASP.NET Core host. No sidecar services, no coordination overhead.

ASP.NET Core API REST endpoints, auth, SignalR hub
DeliveryWorker Queue polling, HTTP delivery, retries
CircuitBreakerWorker Endpoint health monitoring & cooldown
StaleLockRecovery Crash recovery, orphaned message cleanup
PostgreSQL Queue + persistence, FOR UPDATE SKIP LOCKED
React Dashboard Served as static files from wwwroot/