Processed and unprocessed webhook events

Learn how to manage the lifecycle of webhook events, including marking them as processed, understanding retry logic, and retrieving missed events.

When FastSpring sends a webhook, your server must acknowledge receipt to prevent the system from resending it. This guide explains how to confirm successful delivery, how FastSpring handles failures (retries), and how to recover events that were missed.

Mark events as processed

You can mark your webhook events as processed in bulk or individually.

Bulk Processing

Return HTTP 200
Consider all received events in the payload as successfully processed.

Individual Processing

Return HTTP 202
Apply specific requirements to individual orders. In the response body, list the ID number of the event you processed. On a new line, repeat for other IDs 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

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.

Retry AttemptTime until next retry
01 hour after last attempt
12 hours after last attempt
24 hours after last attempt
3, 4, 56 hours after last attempt
6 +24 hours after last attempt

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

  • Failed but will be retried: Displayed while additional retries are scheduled.
  • Permanently Failed: Displayed after the 7-day window expires without a successful process.

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.

Failed webhook event

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 retrieve missed webhook events automatically. After parsing the events, the script should mark them as processed.