← Back to blog
·5 min·The SwyDex team

Webhook reliability is a tax on every integration

If you process payments — crypto or otherwise — your most-stressed code path is “notify the customer that something happened.” Webhooks are how you do that, and most webhooks are subtly broken. Three patterns we see often:

1. Best-effort delivery

The platform sends the webhook once. If your endpoint is down, you don't get it. Your reconciliation cron the next morning catches it, but for the duration of the gap your customer's state is stale. SwyDex retries with exponential backoff (1m, 5m, 15m, 1h, 6h, 24h) and stops only after we've tried for ~30h.

2. Signing without raw-body verification

Some platforms HMAC-sign the parsed JSON. The receiver re-stringifies and gets a different signature. SwyDex signs the exact bytes we send and recommends our customers verify against the raw body. Express middleware reorder is a common foot-gun here.

3. No idempotency

Retries happen. If your webhook side-effect creates a database row each time, you'll have duplicates. We send a stable event_id on every payload; we recommend customers store the most-recent set and skip duplicates server-side.

None of this is novel. We just bake it in by default so you don't have to debug it.


More posts