Event types
This is the canonical table of every event type managed.dev emits to customers. The
same catalog drives three channels: webhooks (subscribe by
exact type, category:<name>, or "*"), the in-app notification bell, and email.
Each type carries a default severity and per-channel flags — failures, security
events, and critical alerts interrupt; routine successes stay quiet.
The machine-readable version is GET /v1/webhook-endpoints/event-types (or
mf webhooks event-types) — build subscription lists from it rather than
hard-coding this table.
the event types
Section titled “the event types”Sorted by category, then type. in-app means the event rings the dashboard bell
(the notifications page shows every event regardless); email means it sends a
message, subject to the per-category preferences at
GET/PUT /v1/notification-preferences.
| Category | Event type | Severity | In-app | Fires when | |
|---|---|---|---|---|---|
backup |
snapshot.completed |
info | — | — | A backup job finishes; the payload carries the new snapshot_id. |
backup |
snapshot.restored |
info | yes | yes | A snapshot restore completes. |
build |
build.completed |
info | — | — | A build produces a signed, content-addressed artifact. |
build |
build.failed |
error | yes | yes | A build fails before producing an artifact. |
deploy |
deploy.completed |
info | yes | — | A deployment finishes and the environment serves the new release. |
deploy |
deploy.failed |
error | yes | yes | A deployment can’t complete; the environment stays on its prior release. |
env |
env.created |
info | yes | — | A new environment is provisioned. |
env |
env.create_failed |
error | yes | yes | Environment provisioning fails. |
env |
env.destroyed |
info | — | — | An environment is destroyed. |
env |
env.refreshed |
info | — | — | An environment is re-seeded from production. |
env |
env.reset |
info | — | — | An environment is reset. |
job |
job.succeeded |
info | — | — | Any async job reaches succeeded. |
job |
job.failed |
error | yes | yes | Any async job reaches failed. |
observability |
observability.alert |
warning¹ | yes | yes | A site health rule transitions into alerting. |
observability |
observability.resolved |
info | yes | — | An alerting rule recovers. |
security |
malware.detected |
critical | yes | yes | A scan finds and quarantines malicious files. |
security |
malware.scanned |
info | — | — | A malware scan completes. |
security |
security.key_created |
warning | yes | yes | An API key is created. |
security |
security.key_revoked |
warning | yes | yes | An API key is revoked. |
security |
security.member_role_changed |
warning | yes | yes | A team member’s role changes. |
security |
security.member_removed |
warning | yes | yes | A member is removed from a team. |
security |
security.team_deleted |
warning | yes | yes | A team is deleted. |
security |
vulnerability.matched |
critical¹ | yes | yes | A known CVE newly matches an installed plugin or theme. |
site |
site.created |
info | — | — | A site is created. |
site |
site.deleted |
warning | yes | yes | A site is deleted. |
site |
site.transferred |
warning | yes | — | Site ownership moves to another team or account. |
team |
team.member_added |
info | — | — | A member joins a team. |
team |
team.invite_created |
info | — | — | A team invite is created. |
¹ Severity is set per event from the underlying finding — observability.alert can
be warning or critical, and vulnerability.matched reflects the worst new match.
envelope shape
Section titled “envelope shape”Every delivery wraps the payload in a common envelope. The type field is what you
switch on; data holds the type-specific payload — see
event types & payloads for examples.
{ "id": "evt_01J9F2KQ...", "type": "deploy.completed", "site_id": "site_01J7ABCD...", "env_id": "env_01J8C4RX...", "created_at": "2026-06-23T18:04:11.412Z", "data": { "job_id": "job_01J9F2KQ...", "job_type": "deployment.deploy" }}The HTTP request also carries the Forge-Signature
header — verify it before trusting the body — and a Forge-Delivery-Id header that
stays stable across redeliveries, which is what you dedupe on. Delivery history and
replay live at GET /v1/webhook-endpoints/{id}/deliveries.
putting events to work
Section titled “putting events to work”A few events anchor common automations:
malware.detectedkicks off an incident response — pull the detections, review the quarantine, and restore from a snapshot if needed.deploy.failedpages your team or posts to chat the moment a release doesn’t roll, instead of waiting for someone to notice.security.key_createdand the othersecurity.*audit events feed a SIEM or compliance trail without polling the audit log.observability.alertwires site health straight into your on-call rotation.