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

# Retries & Debugging

> What happens when your server doesn't respond — and how to fix it.

# Retries & Debugging 🔄

Sometimes your server is down, or it takes too long to respond, or something just goes wrong. That's fine — Mailofly doesn't give up after one try.

***

## How retries work

If your server doesn't respond with a `2xx` status code within **10 seconds**, Mailofly will try again automatically. It backs off gradually so it doesn't spam you:

| Attempt | When it happens |
| :- | :- |
| 1st try | Right away |
| 2nd try | 5 minutes later |
| 3rd try | 30 minutes later |
| 4th try | 2 hours later |
| 5th try | 6 hours later |
| 6th try | 24 hours later |

After 6 failed attempts with no success — the event is dropped. So make sure your webhook URL is reliable!

***

## Debugging failed webhooks

If something's going wrong with your webhook, check the logs:

1. Go to **Settings** → **Webhooks**
2. Click on your webhook
3. Open the **Delivery Logs** tab

You'll see every delivery attempt with:

* The HTTP status your server returned (or the error if it timed out)
* The exact request body that was sent
* Timestamps for each retry

***

## Manual replay

See a failed event you want to try again right now? Hit **Replay Event** next to any log entry. It resends that exact webhook payload to your server immediately — great for testing your handler code without having to trigger a real email.

***

## Common issues

| Problem | Likely cause |
| :- | :- |
| Signature verification fails | You're parsing JSON before checking the signature — use the raw body |
| Getting duplicate events | Your server is taking >10s to respond, triggering retries even though it processed the first one |
| 401 / 403 responses | Your webhook route requires authentication — make the route public or add Mailofly's IP to your allowlist |
| Timeout errors | Your handler is doing heavy work synchronously — process async, return `200` immediately |


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