Process webhook events and retrieve failed events.
Mark events as processed
You can mark your webhook events as processed in bulk or individually.
- Bulk: Return HTTP status code 200 to consider all received events as successfully processed.
- Individual: Return HTTP status code 202 to apply an additional requirement for processed orders. Add the ID number of the event you would like to process. On a new line, repeat as necessary.
All other HTTP status codes are marked as failures. We recommend returning failed status codes in the 50X range, depending on the cause of the failure.
Retry behavior
When a webhook event is not marked as processed, FastSpring automatically retries delivery for up to 7 days from the original attempt.
Retry schedule
retryAttempts = 0
: next retry is 1 hour after the last attemptretryAttempts = 1
: next retry is 2 hours after the last attemptretryAttempts = 2
: next retry is 4 hours after the last attemptretryAttempts = 3, 4, 5
: next retry is 6 hours after the last attempt for each attemptretryAttempts >= 6
: next retry is 24 hours after the last attempt for each attempt
This pattern typically results in up to 6 retries within the first 24 hours. After the first 24 hours, the system schedules 1 retry per day, for a maximum of 12 retries within the 7-day window. If the event is not processed within 7 days from the original attempt, FastSpring stops retrying and marks the event as permanently failed.
Webhook log status
- While additional retries are scheduled: Failed but will be retried
- After the 7-day window expires without a successful process: Permanently Failed
View failed events
You can still retrieve permanently failed events from the /events
API endpoint. A red Failed in last 24 hours tag appears on the card of the affected webhook event when applicable. The tag disappears when there are no failed events in the past 24 hours.

Retrieve missed or unprocessed events
If your server does not process an event successfully, you can retrieve it in any one of these ways:
- Resend it manually from the Webhook Log. Go to Developer Tools > Webhooks > Log.
- Resend it manually from the order’s details page.
- Resend it manually from the subscription’s details page.
- Make a GET call to the /events/unprocessed endpoint.
After you process the missed events, mark the events as processed with a POST to the /events
endpoint. This prevents them from returning with future unprocessed events.
Note: We recommend setting up a scheduled task to automatically retrieve missed webhook events. After parsing the events, the script should mark them as processed.