Aglet

Triage a webhook receiver timeout

A receiver can finish work after the sender has timed out and retried it. Freeze one slow delivery and record arrival, verification, receipt, acknowledgement, downstream work, and retry identity. Keep database delay, downstream latency, process interruption, and response policy separate.

Establish what is happening

  1. Capture the timing path

    Record endpoint, event and delivery IDs, arrival, verification, durable receipt, response status, response time, and processing completion. Redact payload and secret. Note whether the timeout occurred before or after a durable receipt.

  2. Compare fast and slow cases

    Run a fast handler, slow downstream call, storage delay, and interruption fixture. Compare acknowledgement timing and receipt state. A long business operation should not be confused with an endpoint that never recorded the event.

  3. Bound retry effects

    Group timeouts by endpoint, dependency, handler revision, response class, event identity, and attempt. Separate sender retry after receipt from loss before receipt. Preserve pending work and side-effect count for each case.

What to carry forward

Triage ends with one timeout timeline, durable receipt boundary, retry identity, affected cohort, and evidence gap. Stop inline work that can repeat effects. Route receipt, downstream, and sender retry questions separately. Keep the event pending when receipt is uncertain before resuming delivery. Assign the next evidence owner.

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