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?
Guard against SSRF
Show what was sent in a webhook
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
Allow a webhook to be re-sent
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)
Record delivery results so your customers can diagnose what happened when a webhook didn't show up as expected
In other words, there's much 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:
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
Your request is stored in DynamoDB and
queued in SQS for immediate delivery
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
If you are debugging a production issue or tracking down a specific webhook request, we provide you with all the details about your webhook interactions.
You have built something absolutely amazing here. This is top-notch work. It's mind-blowingly simple for implementation, and removes so much stress around failing and retrying services.It feels like the first time I used Papertrail -- I can't imagine webhooks without this.
Tacos 4 Life
Hook Relay is one of my favorite tools because it is completely reliable and removes an entire class of potential issues from my plate. Hook Relay is so good that I sometimes completely forget it's there, and that's the best kind of tool possible!
I knew we wanted to add a Zapier integration but I didn't realize that 'Doing Webhooks Right' meant more than just firing off requests. To get everything from retries and logging to performance and security, it just made sense to do it all with Hook Relay. It was extremely easy to get going and we've had zero issues.