Never Lose a Webhook: Signed, Durable Delivery in .NET
A server restart between your database commit and your HTTP POST drops the event forever. The fix is the transactional outbox pattern — persist the event in the same transaction as your data, relay it asynchronously, retry on failure. Here is how Granit.Webhooks implements it end-to-end.