The current webhook behavior for a failed request is to log the failed request in the history, and continue with future requests.
For services that have an intermittent issue, or an outage, this is certainly desired.
However, for services that become deprecated or for some other reason are no longer a valid request, the webhook will continue with these failed attempts indefinitely. This not only causes an unnecessary load on the GitHub server making the request, but also on the receiving service which must continually reject the request.
This is especially common for third-party services which may no longer have a GitHub user as an active account, but the GitHub user doesn’t bother to remove the webhook from their repository.
Propose a solution (not uncommon with other service hook providers) whereby after a certain number and/or time period of failed requests (401, 403, 404, 500, etc), the webhook automatically switches to a “disabled” state. This would save resources on both the GitHub side as well as the intended webhook target.