# WebhookDelivery

Object

One delivery attempt lifecycle for a (webhook event, subscription) pair. Surfaces the dead-letter / observability state for a subscription.

## Fields

| Name | Type | Description |
| --- | --- | --- |
| `attemptCount` | `Int!` | Lifetime number of attempts made (also the backoff-ladder index). The ladder is 8 attempts total: one immediate try plus backoffs at 1m/5m/30m/2h/6h/12h/24h (±20% jitter), spanning about 44.6h nominal (up to about 53.5h with max jitter). |
| `createdAt` | [`DateTimeWithZone!`](/api/v2/docs/types/date-time-with-zone) | When the delivery was created. |
| `eventId` | `ID!` | ID of the webhook event being delivered. |
| `id` | `ID!` | Unique identifier of the delivery. |
| `lastAttemptAt` | [`DateTimeWithZone`](/api/v2/docs/types/date-time-with-zone) | When the most recent attempt was made. Null before the first attempt. |
| `lastError` | `String` | Error message from the most recent failed attempt. Null on success. |
| `lastResponseStatus` | `Int` | HTTP status of the most recent attempt. Null for transport-level failures. |
| `nextAttemptAt` | [`DateTimeWithZone`](/api/v2/docs/types/date-time-with-zone) | When the next attempt is scheduled. Null when terminal (exhausted or dropped, no retry queued). Pushed to the cooldown while the endpoint host circuit breaker is open (deferred, not failed). |
| `responseTimeMs` | `Int` | Round-trip time of the most recent attempt in milliseconds. |
| `status` | [`WebhookDeliveryStatus!`](/api/v2/docs/types/webhook-delivery-status) | Current status of this delivery attempt. FAILED is retried on the backoff ladder until terminal (then redeliverable); DROPPED is backpressure/rate-limit and is never retried (recover via webhookEvents). |
| `subscriptionId` | `ID!` | ID of the subscription this delivery belongs to. |
| `updatedAt` | [`DateTimeWithZone!`](/api/v2/docs/types/date-time-with-zone) | When the delivery was last updated. |
