---
{
  "id": "platform.webhook.lifecycle",
  "topic": "webhook",
  "title": "Webhook lifecycle and recovery",
  "locale": "en",
  "version": "2026-08-09",
  "summary": "Webhooks can be active, paused, cancelled, disabled, or effectively expired, with different recovery rules for each state.",
  "content": "An active and enabled webhook accepts authenticated inbound events. Automatic protection can set the stored status to `paused`; resume it through `arinova.webhook.update_webhook` with `status: active`. Resuming clears the pause timestamp and reason. The update action does not provide a user-driven command to place a webhook into paused state. Update and cancellation require this Agent's per-Webhook `write` grant; denial is deliberately `resource_not_found`.\n\n`enabled: false` disables delivery without cancelling the resource. It can be changed through the update action. `expiresAt` is a separate time gate: after that instant, inbound requests receive an expired/gone outcome. Clearing or changing expiry uses `expiresAt` on update.\n\n`arinova.webhook.cancel_webhook` is a confirmed, strict-drift soft cancellation. It stores `status: cancelled` and `paused_reason: user_cancelled`, and repeated cancellation is safe. Cancelled webhooks remain available for audit/history but cannot be updated or resumed; create a new webhook instead.\n\nTherefore, do not treat paused, disabled, cancelled, and expired as interchangeable. Only a recoverable paused or disabled endpoint should be reactivated. Check the current object with `arinova.webhook.get_webhook` before proposing a lifecycle operation. Owners manage grants and lifecycle in Office > Incoming Webhooks. Office Agents can also receive a Webhook as collaboration context; a terminal Webhook may remain context for explaining history or recreation, but it cannot be resumed or mutated.\n",
  "aliases": [
    "webhook status",
    "active",
    "paused",
    "cancelled",
    "expired",
    "cancel webhook",
    "resume webhook"
  ],
  "tags": [
    "cancellation",
    "expiry",
    "lifecycle",
    "resume"
  ],
  "relatedActions": [
    "arinova.webhook.get_webhook",
    "arinova.webhook.update_webhook",
    "arinova.webhook.cancel_webhook"
  ],
  "relatedActionPrefixes": [],
  "url": "https://docs.arinova.ai/en/kb/webhook/lifecycle/"
}
---

An active and enabled webhook accepts authenticated inbound events. Automatic protection can set the stored status to `paused`; resume it through `arinova.webhook.update_webhook` with `status: active`. Resuming clears the pause timestamp and reason. The update action does not provide a user-driven command to place a webhook into paused state. Update and cancellation require this Agent's per-Webhook `write` grant; denial is deliberately `resource_not_found`.

`enabled: false` disables delivery without cancelling the resource. It can be changed through the update action. `expiresAt` is a separate time gate: after that instant, inbound requests receive an expired/gone outcome. Clearing or changing expiry uses `expiresAt` on update.

`arinova.webhook.cancel_webhook` is a confirmed, strict-drift soft cancellation. It stores `status: cancelled` and `paused_reason: user_cancelled`, and repeated cancellation is safe. Cancelled webhooks remain available for audit/history but cannot be updated or resumed; create a new webhook instead.

Therefore, do not treat paused, disabled, cancelled, and expired as interchangeable. Only a recoverable paused or disabled endpoint should be reactivated. Check the current object with `arinova.webhook.get_webhook` before proposing a lifecycle operation. Owners manage grants and lifecycle in Office > Incoming Webhooks. Office Agents can also receive a Webhook as collaboration context; a terminal Webhook may remain context for explaining history or recreation, but it cannot be resumed or mutated.
