1 2s
2 8s
3 32s
...
12 1h cap
Retries that converge
Exponential backoff with jitter, capped at 1 hour, 12 attempts across 72 hours. Per-endpoint overrides when a consumer needs slower pacing.
no route matched : esc to close
arrows move : enter goes : esc closes
Webhook delivery infrastructure
RelayKit sits between your event sources and your endpoints. It queues, signs, and delivers: 12 attempts with exponential backoff over 72 hours, a log of every attempt, replay from any point.
Delivering for event-driven teams
Sample Placeholder wall: swap in your customers, or delete the section.
The delivery problem
What ships in the box
Exponential backoff with jitter, capped at 1 hour, 12 attempts across 72 hours. Per-endpoint overrides when a consumer needs slower pacing.
Every payload is signed with a per-endpoint secret and a timestamp. Verify in 4 lines with the SDK, or 1 with the CLI. Rotation is zero-downtime.
Deliveries persist for 30 days. Replay one event, a time range, or everything an endpoint missed while it was down. Idempotency keys ride along.
Quickstart
These docs compile: type your route and host, every example below rewrites itself.
Point any producer at the ingest endpoint. This curl is the whole integration.
Register consumers with a URL and a route filter. Each gets its own signing secret.
Tail deliveries live, or read the attempt log in the dashboard. That is the whole product.
Numbers, not adjectives
Pricing
Side projects and staging environments.
$0/mo
Production traffic with an SLA conversation.
$29/mo
14-day trial : no card : cancel anytime : export your delivery log on exit
High volume, compliance, self-host option.
$99/mo
Sample Numbers are placeholders: set yours once in this section. Full tier comparison on the pricing page.
Sources in, endpoints out
FAQ
Nothing is lost. Deliveries keep retrying on the backoff curve for 72 hours, then park as failed with the full attempt history. When the endpoint recovers, replay the parked range with one command: relay replay --since 24h.
Per-route ordering is best effort: retries can reorder under failure, which is true of every delivery system that retries. We guarantee at-least-once and attach an idempotency key to every delivery so your consumer can dedupe in one line.
Each request carries an hmac-sha256 signature over the body plus a timestamp header. The SDKs expose verify(payload, sig, secret); reject anything older than your skew window. Secrets are per endpoint and rotate with an overlap period, so verification never breaks mid-rotation.
The Scale tier includes self-hosted relay workers: your events never leave your VPC, while the control plane stays managed. A fully air-gapped build is a conversation: email us with your compliance target.
Typically under a day: point your producer at the ingest URL (step 01 of the quickstart), register your existing consumer URLs, and run both paths in parallel. The dashboard diffs deliveries so you can cut over with evidence instead of hope.
Ingest accepts 1,000 events/s per key on Growth and 10,000 events/s on Scale, with burst headroom of 2x for 60 seconds. Delivery fan-out is not rate limited by us: your endpoints set the pace via response codes and Retry-After.
Changelog
Cmd+K jump palette on every page, quickstart examples that rewrite to your values, a /status route with uptime bars, and this changelog as an RSS feed. These dates are real build notes for this site.
RelayKit ships: streaming terminal hero, pricing digit roll, quickstart, FAQ, API-key form kit.
Hero terminal types 7 lines in CSS, then streams new deliveries every 2.2s in JS. Rests complete without JS and under reduced motion.
Get started
One curl to send, one command to consume. Request a key and you will have deliveries streaming before standup. Questions first? keys@relaykit.example answers within 1 business day.