I have recently moved all received webhooks to a job queue and have been very happy. you can retry the processing on your own terms.
Previous devs were doing expensive things whenever we received webhooks. This meant we DoS'd ourselves every time a sizable amount of webhooks came our way.
Set up a tiny server on Heroku that received the webhooks and put them on a queue. A worker with a configurable concurrency level later forwards the events on the queue .
Dropped from four digit 502s and 504s weekly to virtually none.
It also allows you to do testing by injecting pre-cooked payloads into your queue system.