on "event" {} handler

Generated Markdown for references/entity_on_handler.md.

Open book page Back to the skill graph

# on "event" {} handler

_wcl block_

Binds a wscript file to a lifecycle event; handler failures are logged, never fatal.

An `on "<event>" {}` block reacts to a lifecycle event by running a wscript file (`fn handle(event, lab)`).

```wcl
on "vm.crashed"    { run = "scripts/collect-dumps.ws" }
on "vm.crashed"    { run = "scripts/page-oncall.ws"  targets = ["dc01", "srv01"] }
on "host.disk_low" { run = "scripts/alert.ws" }
```

`targets` narrows a handler to named machines; leave it out and the handler runs for **every** occurrence of the event. It is only legal on machine-scoped events — `vm.*`, `container.*` and `snapshot.*`. Declaring it on a lab-wide event (`lab.up`, `host.disk_low`, `template.built`, …) is a validation error: \*event "x" is lab-wide and cannot declare targets\*.

**Handler failures are logged, never fatal.** See [the event list]../references/fact_events.md for every event name and [the Event type]../references/entity_event_type.md for the handler payload.

## Related

- [Provisions & event handlers]../references/concept_provisions.md

- [provision {} block]../references/entity_provision_block.md

- [Lifecycle events]../references/fact_events.md

- [Event]../references/entity_event_type.md

[← Back to SKILL.md]../SKILL.md