emfasemfas
Webhooks

Retries & delivery history

How Emfas retries failed webhook deliveries, coalesces redundant events, and lets you replay deliveries.

Successful delivery

A delivery succeeds when your endpoint responds with any 2xx status within 15 seconds. Respond fast and do heavier processing asynchronously.

Retries

If your endpoint returns a non-2xx status, times out, or is unreachable, Emfas retries with exponential backoff — roughly doubling the wait each attempt, up to 8 attempts spread over several hours. After the final attempt the delivery is marked failed.

This gives a temporarily-down endpoint plenty of time to recover without you losing events, as long as it comes back within the retry window.

Coalescing

If the same entity changes several times in quick succession — common during bulk imports or syncs — Emfas collapses the redundant events into a single pending delivery per (endpoint, entity, event) rather than sending one per change.

This is safe because payloads are thin: every product.updated for the same product carries the same information, and you re-fetch the latest state anyway. Once a pending delivery is sent, the next change to that entity produces a fresh delivery.

The delivery list shows how many events were coalesced into a delivery, so a "5× coalesced" delivery means five rapid changes were absorbed into one notification.

Delivery history & replay

Open a webhook in Settings → Emfas API → Webhooks to see its recent deliveries — the event, the affected identifier, the response status, the attempt count, and any error.

Each delivery has a replay action that re-sends the original payload. Use it to recover after fixing an outage or a bug on your side. Replays always go through, even if a newer pending delivery exists for the same entity.

Disabling an endpoint

You can disable an endpoint without deleting it. A disabled endpoint receives no new deliveries; re-enable it at any time. Deleting an endpoint removes it and its delivery history permanently.