> ## 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.

## 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`
* 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


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.