Stripe webhooks, without the lost events
Record every Stripe event, verify the Stripe-Signature on arrival, and deliver it to your app with retries, replay and alerts.
Common problems, solved
- A deploy or an outage makes your endpoint fail, and payments go unprocessed.
- HookStead answers Stripe as soon as the event is stored, then keeps retrying your endpoint with backoff until it recovers. Nothing waits on your uptime.
- “No signatures found matching the expected signature.”
- Usually a framework parsed the body before verification. HookStead verifies Stripe's signature on the raw bytes, and your app verifies one Standard Webhooks signature instead.
- You fixed a bug, but the failed events from last night are gone.
- Every event is kept for your plan's retention. Replay one, or bulk-retry every failed delivery at once.
- Duplicate events trigger double emails or double provisioning.
- Each delivery carries a stable webhook-id, the same on every retry and replay, ready for an idempotency table.
Set up in five minutes
- 01Create a source in HookStead with the “Stripe signature” option and copy its URL.
- 02In Stripe, add a webhook endpoint with that URL and paste Stripe's signing secret (whsec_…) into the source.
- 03Add your app as a destination, connect it to the source, and verify HookStead's signature in your handler.
- 04Send a test event from Stripe and watch it arrive and deliver in the dashboard.
| Source option | Stripe signature |
|---|---|
| Signature header | Stripe-Signature |
| Scheme | HMAC-SHA256 over “{timestamp}.{raw body}”, hex-encoded, with a timestamp tolerance |