Processed and Unprocessed Webhook Events

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 attempt
  • retryAttempts = 1: next retry is 2 hours after the last attempt
  • retryAttempts = 2: next retry is 4 hours after the last attempt
  • retryAttempts = 3, 4, 5: next retry is 6 hours after the last attempt for each attempt
  • retryAttempts >= 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.

1256

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.

See also: Webhook log activity | List all processed events (API) | List all unprocessed events (API)