Missing things omitted from list race condition

In similar situations I’ve had success with scheduling the processing to be done in the future, and randomizing the time by adding a random number of seconds to the current date/time. I record the webhook in the db and then schedule an api to run, passing it the thing I just created in the db. The random number spaces them out enough to prevent most issues. Maybe that would work for you here?