> ## Documentation Index
> Fetch the complete documentation index at: https://waffo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhook - retries and failure recovery

> Webhook retry mechanism and failure recovery strategy.

## Retry mechanism

When the merchant does not return `{"message": "success"}` (returns failed/unknown, HTTP non-200, request timeout, or unparseable response), Waffo automatically retries.

## Retry strategy

Up to **8 retries** (including the initial notification), with increasing intervals:

| Attempt | Interval   | Cumulative time |
| ------- | ---------- | --------------- |
| 1st     | Immediate  | 0               |
| 2nd     | 30 seconds | 30s             |
| 3rd     | 1 minute   | \~1.5min        |
| 4th     | 4 minutes  | \~5.5min        |
| 5th     | 30 minutes | \~35min         |
| 6th     | 4 hours    | \~4.5h          |
| 7th     | 8 hours    | \~12.5h         |
| 8th     | 8 hours    | \~20.5h         |

<Note>After all 8 attempts fail, the notification is marked as permanently failed and no further retries are made.</Note>

## Failure recovery

If all retries fail:

1. **Proactive query**: Call the order query or subscription query API to get the latest status
2. **Reconciliation**: Periodically query order statuses in batches and compare them with local records
3. **Contact support**: If you continue to not receive Webhooks, check your network configuration or contact Waffo technical support

## Common failure reasons

* Merchant `notifyUrl` is unreachable (network issue, port not 80/443)
* Response body is not `{"message": "success"}` (e.g., typo, extra fields)
* Response Content-Type is not `application/json`
* Response is missing the `X-SIGNATURE` header
* Merchant server processing timeout

## Notes

<Note>
  * Retries may cause events to arrive out of order; always use the terminal status as the source of truth
  * Do not rely solely on Webhooks; use proactive queries as a fallback
  * Ensure your Webhook handling logic is idempotent
</Note>
