Aglet

Triage duplicate webhook event application

Duplicate delivery becomes duplicate work when identity is missing, claims race, or the check occurs after the side effect. Freeze one repeated event and compare receipt, claim, handler, and result state. Separate sender retry from two distinct events with similar payloads.

Establish what is happening

  1. Capture the duplicate effect

    Record event ID, delivery ID, resource, attempt, worker, claim result, side-effect count, and final state. Redact payload and secrets. Note whether the duplicate came from retry, concurrent workers, or a local requeue.

  2. Trace claim before effect

    Follow identity extraction, deduplication lookup, durable claim, handler start, side effect, and acknowledgement. Compare timing for two workers. A hash or resource key may be insufficient if distinct events share a representation.

  3. Bound duplicate cohorts

    Group repeats by event ID, endpoint, worker, operation, claim age, and effect. Separate harmless duplicate acknowledgement, repeated local row, and repeated external action. Preserve unknown claims for review. Keep the first side effect attached to its event identity.

What to carry forward

Triage ends with stable identity, claim timing, duplicate effect, affected cohort, and recovery gap. Hold further side effects for ambiguous events. Route sender retry, claim storage, and handler ordering separately. Keep effects paused until identity is clear and the prior result is reconciled.

Technical background: Twilio 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