DEV Community

Nalagatla Vinay
Nalagatla Vinay

Posted on

Webhook Dispatcher: a Rust library for reliable webhooks (retries, DLQ, signatures, durability)

When I was building webhook features, I kept hitting the same wall: either build an entire internal webhook platform or use a hosted service. For a small team, both options are heavy.

So I built the middle path: Webhook Dispatcher, a Rust library you embed in your app to deliver webhooks reliably.

Why this exists
Webhooks sound simple until you need production reliability. You end up dealing with:

backpressure
retries + jitter
delivery status
dead‑letter queues
signing + verification
rate limits
storage for durability
This library gives you all of that in a single crate.

Features
Fair scheduling with sharded queues
Retries + jitter + DLQ
HMAC signing with timestamps
Per‑endpoint + per‑tenant rate limits
Optional Redis/Postgres durability
Delivery status + replay helpers
Quickstart
use webhook_dispatcher::{Dispatcher, DispatcherConfig, Endpoint, Event};

[tokio::main]

async fn main() {
let dispatcher = Dispatcher::new(DispatcherConfig::default());

let endpoint = Endpoint::new("orders", "https://example.com/webhook")
    .with_secret(b"supersecret")
    .with_rate_limit(100, 200);

dispatcher.register_endpoint(endpoint).await;

let event = Event::new("evt_123", r#"{"id":123}"#.as_bytes());
let _ = dispatcher.dispatch(event, vec!["orders".into()]).await;
Enter fullscreen mode Exit fullscreen mode

}
Repo + Crate
Crate: webhook-dispatcher (crates.io)
GitHub: https://github.com/webhook-labs/webhook-dispatcher
Feedback welcome
I’d love feedback from anyone who’s built webhook systems or reliability tooling. What would you expect in v1? What’s missing?

Top comments (0)