Black Friday spike: your webhook returns 503, what Sume retries

If your endpoint sheds load on Black Friday, Sume retries a terminal webhook up to 10 times with doubling backoff. Know the schedule and what to do after.

3 min readSume
All posts

Sume does not drop a terminal webhook on the first failed attempt. It tries up to 10 times, each with a 10 second limit, and the delay starts at 30 seconds, doubles per attempt with jitter and is capped at one hour. A Retry-After header from your endpoint is honored.

What counts as a failed attempt

  • A non-success status such as 503 or 429.
  • No response within 10 seconds.
  • A 3xx redirect. Sume does not follow it.
  • A URL that no longer passes public HTTPS validation.

Shed load on purpose

If you must refuse during a spike, return 503 with Retry-After; Sume will come back. Better: acknowledge fast and queue the work. Because a delivery can repeat, de-duplicate on request_id, which equals the run id.

app.post('/hooks/sume', express.raw({ type: '*/*' }), async (req, res) => {
  // verify x-sume-webhook-signature against req.body first
  const evt = JSON.parse(req.body.toString());
  if (await seen(evt.request_id)) return res.sendStatus(200);
  await enqueue(evt); // do real work later
  res.sendStatus(200);
});

After the last attempt

Delivery status moves through pending and retrying to delivered, or to exhausted. For an exhausted run, read it from GET /v1/format-runs/{run_id} and replay it with POST /v1/format-runs/{run_id}/webhook/redeliver once your endpoint is healthy.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume