Assume delivery is unreliable
Webhooks arrive twice, out of order, or not at all. Idempotency keys and a persisted event log turn all three from incidents into non-events.
Retry with intent
Exponential backoff with jitter, a maximum attempt count and a dead-letter queue. Anything that lands in the dead-letter queue needs an alert and a replay tool.
Reconcile on a schedule
A nightly job comparing both systems catches the silent divergence that retries cannot. It is the single highest-value piece of an integration.