If your endpoint doesn’t return a successful response, StoreKit will retry the webhook multiple times with exponential backoff.
What Counts as a Failure?
A webhook delivery is considered failed if:
- Your endpoint returns a non-2xx status code
- Your endpoint doesn’t respond within 15 seconds
- The connection to your endpoint fails
Retry Schedule
Failed webhooks are retried with exponential backoff over approximately 3 days:
| Attempt | Delay After Previous |
|---|
| 1 | Immediate |
| 2 | 5 seconds |
| 3 | 5 minutes |
| 4 | 30 minutes |
| 5 | 2 hours |
| 6 | 5 hours |
| 7 | 10 hours |
| 8 | 24 hours |
After all retry attempts are exhausted, the webhook is marked as failed.
Endpoint Disabling
If all delivery attempts to a specific endpoint fail for a period of 5 consecutive days, the endpoint will be automatically disabled to prevent further failed deliveries.
To re-enable a disabled endpoint:
- Go to your StoreKit Dashboard
- Navigate to Settings > Webhooks
- Find the disabled endpoint
- Click Enable Endpoint
Manual Retries
You can manually retry failed webhooks from the dashboard:
- Go to your webhook endpoint details
- Find the failed message in the logs
- Click Retry to resend
Recovering from Outages
If your service experiences downtime, you can recover missed webhooks:
- Go to your endpoint in the dashboard
- Click Options > Recover Failed Messages
- Select a time window to replay
Design your webhook handler to be idempotent so that receiving the same webhook multiple times doesn’t cause issues.