Webhooks
Webhooks are how your vendor systems push real-time events into Ops AI — a new ticket in Autotask, an alert in Datto RMM, a security incident in EDR. This page covers registering webhooks, watching the event log, replaying failed events with the right safety guards, and reconciling local state against your vendor.
Where to manage webhooks
Two pages, two purposes:
- Webhook Management (
/app/webhooks/manage) — register and configure webhook endpoints. One row per registration. - Webhook Events (
/app/webhooks) — see every received event with status, payload, and replay controls.
Registering a webhook
Creating or changing registrations is live configuration work. An existing Autotask dogfood workspace normally needs no registration changes. Inspect existing state first.
For an authorised new registration, open Webhook Management → Add registration and select the intended integration and entity type. Autotask registration can provision the remote webhook as part of this flow: inspect the returned vendor/local outcome before doing anything else. Do not then create a second copy manually in Autotask.
For vendors requiring manual setup, follow the vendor-specific instructions and copy the exact URL shown by Ops AI. Keep webhook secrets in approved storage, never in a chat or screenshot. If creation reports a remote webhook created but local state unconfirmed, preserve its ID and reconcile before retrying; repeating creation can create a duplicate.

Managing registrations
Each registration row exposes:
- Toggle active/inactive — temporarily disable a webhook without deleting it. Useful during maintenance windows.
- View secret — click to reveal the secret (hidden by default for security).
- Delete — permanently remove the registration. For Autotask, the corresponding webhook is also removed from Autotask. If Autotask rejects the delete, the local registration is preserved and you'll see an inline error — use Reconcile with Autotask to investigate (see below).
The Webhook Events log
Open Webhook Events. The page lists every received event with:
- Source — which vendor sent it.
- Status — successful, failed, or dead-letter.
- Timestamp — when it arrived.
- Payload preview — click the row to expand and view the raw JSON payload.
Failed events automatically retry up to 3 times. Events still failing after retries land in the dead-letter queue, where Failure Analysis (below) tells you why.
Failure Analysis panel
When an event fails at any stage of the pipeline, expand its row to see a Failure Analysis panel:
- Pipeline stage — colour-coded badge:
validation,sop_matching,agent_dispatch,agent_execution,tool_call. Tells you exactly where processing stopped. - Error type and message — a short classifier (e.g.
no_sop_matched,tool_execution_error) plus the underlying vendor error or exception text. - Suggested fix — a remediation hint highlighted in blue (e.g. "Create an SOP with keyword 'disk_full' for source 'autotask'" or "Check the integration credentials for vendor 'autotask'").
- Metadata — stage-specific detail (vendor, tool name, agent run id, closest-matched SOP, keywords extracted) in a collapsible JSON viewer.
Investigate the suggested fix and any prior side effects before acting. A failed event can still have completed earlier writes. Do not replay an uncertain outcome without read-only reconciliation and an authorised recovery decision.
Retry vs Replay
These are two different things:
- Retry — the existing event record runs through the pipeline again. Capped at 3 attempts; reuses the same event ID. Triggered automatically; you can also click Retry on a failed row.
- Replay — a brand-new event is created, linked back to the original via a "Replayed from" breadcrumb. Useful when you've fixed a root cause (created a missing SOP, rotated a broken credential) and want to push previously-failed events through again.
Replay requires the Admin or Tech role.