# `Accrue.Webhook.DispatchWorker`
[🔗](https://github.com/szTheory/accrue/blob/accrue-v0.3.1/lib/accrue/webhook/dispatch_worker.ex#L1)

Oban worker for async webhook handler dispatch (D2-27).

Enqueued by `Accrue.Webhook.Ingest` in the same transaction as the
webhook event row. Loads the `WebhookEvent`, projects it to
`%Accrue.Webhook.Event{}`, and dispatches to the handler chain.

## Dispatch order (D2-30)

1. `Accrue.Webhook.DefaultHandler` runs first (non-disableable)
2. User handlers from `Accrue.Config.webhook_handlers/0` run sequentially
3. Each handler is rescue-wrapped for crash isolation

## Retry policy

25 attempts with exponential backoff (WH-05). On final attempt,
transitions the webhook event to `:dead` status (D2-35).

## Status lifecycle

    :received -> :processing -> :succeeded
                              -> :failed (retryable)
                              -> :dead (final attempt)

---

*Consult [api-reference.md](api-reference.md) for complete listing*
