Your endpoint must respond to successful requests with a 2xx HTTP status code. Response codes outside this range will indicate that you were not able to receive the webhook event.

Any other information returned by your script is ignored. Real-time order webhooks are an exception: a webhook configured for the taxes or shipping event reads the response body and merges it into the cart or order being processed. See Functions and webhooks for the response format.

If a webhook is not acknowledged successfully, Swell retries it after 1 minute and then with an exponential back-off, up to 10 attempts a day. After every 10th failed attempt, the next retry is 12 hours later. The store's admins receive a warning email after every 10 failed attempts, at most once a day. If the endpoint keeps failing for 4 days without a successful delivery, the webhook is disabled until it is re-enabled, and the admins are notified. Re-enabling the webhook retries its pending events.

To stop retries for an event, respond with status 410, or with a non-2xx response whose JSON body includes "retry": false.

Unless otherwise specified, webhook requests have a timeout of 10 seconds. In cases where webhook handlers are long-running or resource-intensive, we recommend implementing a messaging queue to handle incoming webhook requests asynchronously.