I have an app that signs up for the order_create webhook when installed. This works almost all of the time but I have just discovered an instance where an order was created but no webhook was received. The webhook has worked for orders previous and after this missing order. What is the reliability of webhooks and what are the workarounds developers can take to proactively discover when a webhook has not been received.
Solved! Go to the solution
This is an accepted solution.
Generally speaking, the Webhooks delivery system is very reliable. However, like any massive-scale operation, issues can arise in many different parts of the system. Maybe there was a temporary issue with:
We do have retries in-place: so if for some reason we can't reach an app to deliver an event, it will be retried several times (with exponential backoff up to over a day later) before we give up trying.
One interesting point to note is that there is a size limit for event payloads. When delivered via EventBridge, we still send the event out just with an error message instead of the payload. However, for HTTPS delivery, we have no such mechanism.
As for workarounds, if an app absolutely requires peace-of-mind that they have 100% of the information they need at all times (even through system failures), they can consider using the Admin API to periodically poll for data and make sure nothing is missed. However, doing so isn't expected of all apps, and is definitely much harder to do properly.