Reliable Webhook DeliveryNov 3, 2022
How to reliably deliver webhooks
When building a webhook delivery process it can sometimes be hard to know where to start or if you are making the best decisions. With a few tips you can get start strong and make it easier to maintaining the integration and develop new features.
Most people send webhooks over http(s) because it is so widely supported, however its not the best for reliable delivery. You will need to a few features to ensure reliable message delivery.
Http requests can randomly fail depending on the network or if the server is having a problem. Also, Http doesnt have very strong security out of the box to meets todays demands.
When delivering webhooks over http its important to replay any messages that dont get successfully received. You can use the returned http status codes to check it was successful.
You should retry any messages with a 500-599 error code. These are likely when the receiver had an error processing the message. It could have been an intemitent error so they will expect you to retry.
400's errors are usually a variant of a bad requests, so the receiver has received it but they cant process it. Its fair to drop the request and move on. However some 400 status codes indicate a transient error that should be retried. A request timeout (408) error and a too many requests (429) error should be retried after some delay.
When retrying messages its important not to retry too soon and that any other pending messages should be delayed until successful delivery has resumed.
If there is a transient error, you dont know how long it will last, so you dont know how long to delay for. Thats why you should use increasing delay intervals, or exponentially increasing delay intervals. You should have a maximum dalay. If there is a maximum processing rate, they increasing delays will eventually find it.
Another way to deliver webhooks is via a message queue like Kafka, MQTT, SQS or Google Pub/Sub. Message queues take care of the hardest parts of message delivery providing great security and retry semantics. However they are less widely used because they are not standard. Many webhook consumers prefere the simplicity of receiving webhooks via http.
Reliable delivery with Webhook Wizard
Now that your reliably sending webhooks, see tips for reliable webhook processing for more tips.
Webhook Wizard helps you deliver webhooks reliably and give your users the choices and features they want.Learn more about Webhook Wizard