Skip to content

Trigger

Start this graph from an event: a bus subscription or a webhook the graph owns. A graph does not need one. Add it only when something should start the graph; without one, a graph still runs on demand, on a schedule, or when another workflow spawns it.

Publishing the graph registers its triggers as an event handler named after the graph; a webhook trigger also gets its endpoint and secret then. The event that starts a run is the run’s input.

  • Kind: trigger
  • Palette: Sources
  • Run it on its own: no, only as part of a graph
  • Reacting to something on the project bus: a failed run (run.failed), a forge delivery, an event another workflow emits.
  • Giving this graph its own inbound URL, for a form, a device or a vendor callback (transport: webhook).

For builds on a repo’s pushes, spool repo connect is the better fit: one forge webhook for every graph and pipeline on that repo. See CI from a repo.

Field Type Required Description
event string no Bus: required. The event-type pattern to subscribe to; a bus trigger with no event has nothing to wait for and is refused. Webhook: optional. A subtype filter such as “push”; the endpoint receives the deliveries and the filter only narrows them.
manifest string no Webhook only: a signed-delivery manifest, e.g. “github”.
transport string no “bus” (subscribe to an event, default) or “webhook” (own an endpoint). One of "bus", "webhook".

Not declared: what comes out depends on the configuration.

version: hyperspool-graph/v1
nodes:
- id: on_failure
type: trigger
config: { event: run.failed }
- id: post
type: slack.post_message
config:
credential: slack
with: { channel: "#alerts" }
input:
text: { $template: "Run failed: {{ input.payload.error }}" }
edges:
- { from: on_failure, to: post }

event takes an exact type, a prefix wildcard such as run.*, or *. A webhook trigger reads transport: webhook, and manifest: github verifies signed forge deliveries. See Triggers.

See the node reference for every other node.