Stripe-quality webhooks
for everyone

Start building for free, pay as you grow.

I wish we had webhooks as awesome as Stripe's...

So you want to add webhooks to your app, and after having worked with the webhooks that Stripe provides, you want yours to be as great as theirs. Well, that's more than just sending a JSON payload to your customer's URL and calling it a day, right? You also need to:

  • Guard against SSRF
  • Add a background job so you don't hold up your web requests (and add extra costs for a background worker if you're deploying to Heroku)
  • Deal with slow receiving servers, timeouts, and other errors
  • Retry webhook deliveries with backoffs (up to days later) to work around errors without overwhelming the receiving server
  • Record delivery results so your customers can diagnose what happened when a webhook didn't show up as expected
  • Show what was sent in a webhook
  • Allow a webhook to be re-sent

In other words, it's a little more than "just POST a JSON payload" to get webhooks that your customers will love. The good news is, Hook Relay has done all the hard work for you. 😁 Here's what your implementation looks like if you use Hook Relay to deliver your webhooks:

  1. Send a webhook to Hook Relay endpoint with the request headers and body that you want to send to $USER_URL. You don't even need to do any configuration ahead of time -- you just pass the $USER_URL in a special header when sending the request
  2. Your request is stored in DynamoDB and queued in SQS for immediate delivery
  3. SQS triggers a Lambda function that attempts delivery, and the result is stored in DynamoDB. If the delivery fails, the attempt is retried 64 seconds later, then again 128 seconds later, etc., until the request is successfully delivered or until 3 days have gone by

That's it! You don't need to manage a queue, worry about where you're going to store the webhook results, etc. Hook Relay also provides an API that you can use to get the delivery history and show it to your users.

That's nice, but I wish I had something to help me manage inbound webhooks...

Ah, so you got spoiled by Stripe, and you wish you had a way for webhook deliveries to be retried from other services to your app, in case your app goes down. We've got you covered there, too. 😁 Or maybe you process a a lot of inbound hooks from a variety of sources, and you want some better tracking and visibility into that traffic. Consider it done!

You can use Hook Relay as a proxy to the hook endpoints hosted on your app, and we'll log and send the payloads on to you, retrying if there's any kind of error when receiving a payload. Or if you don't have a public endpoint up yet because you're still building your app, you're adding support for a new webhook, or your app is running on an internal network, you can use Hook Relay to catch webhooks from wherever, then use our UI or poll our API to get at those payloads.


“It feels like the first time I used Papertrail—I can't imagine webhooks without this.”

Keith Perhac
Founder, SegMetrics

Who's behind Hook Relay?

Hook Relay is hand-crafted with the finest artisanal bits by the crew at Honeybadger. One of the challenges they encounted while building Honeybadger was sending webhooks to all kinds of servers—some responsive, and some... not so much. Recognizing that building a reliable webhook delivery system is the kind of complicated and error-prone grunt work that most developers don't really enjoy doing, they set out to build an app that would make that pain go away. And thus, Hook Relay was born.

Feel free to get in touch if you have questions about or need some help with Hook Relay.

Deploy webhooks in minutes, not days.

Start building for free, pay as you grow.

App screenshot
© 2020-2021 Honeybadger Industries, LLC