Aglet

Learn from webhook receiver timeouts

The durable lesson is a clear handoff from verified request to durable receipt to asynchronous effect. Preserve the timeout timeline and the crash or retry boundary that mattered. Document sender timing as an external limit and keep event identity through every stage.

Keep the lesson for the next incident

  1. Document the receipt contract

    Record verification order, receipt durability, response condition, timeout handling, queue handoff, retry identity, and processing ownership. Define safe states for before-receipt and after-receipt interruption. Keep sender timing separate from receiver durability.

  2. Keep timing fixtures

    Retain fast, slow, storage delay, crash-before, crash-after, retry-before, retry-after, and duplicate cases. Store expected response, receipt, processing, and effect state. Include the original timeout shape for endpoint changes. Include a redacted receipt marker in every case.

  3. Review latency signals

    Watch response duration, pre-receipt failures, retries after receipt, pending receipts, and side-effect duplicates by endpoint and handler. Assign an owner and threshold. Close the follow-up only when receipt and timeout checks cover shared paths.

What to carry forward

Close learning with receipt and acknowledgement rules, timing fixtures, processing ownership, and timeout signals. Keep sender limits visible. The useful outcome is a recoverable receipt boundary, not a promise that every handler will finish before response. Review the receipt boundary whenever inline work changes.

Technical background: Stripe documentation.

Keep the decision with the work.

Use a Work Item in Aglet to record the problem, the evidence you have, and the next decision. Add an owner and priority, then keep updates in the discussion so the next person can follow the reasoning.

Create an account See the product workflow