LoopFlow
Tutorial Workshop Keywords ๐ŸŽฎ LoopFlow Lab
Keywords / notify

notify

Where to send completion. Ops & reuse

Syntax

notify: <destination>

What it does

Declares where to send word when a run finishes โ€” the config-tier line that answers "tell someone when it's done". It names a destination such as slack, so an unattended loop can hand its result off to a human channel instead of leaving the outcome buried in a log. It pairs naturally with schedule: and runner:: a loop you kicked off yourself you'll watch in-session, but a nightly or headless run is exactly the case where you want a ping on completion rather than checking back manually.

Why it lives at the config tier: notification is a property of how the file is operated, not of any single goal, so you set it once for the whole file alongside the other operational lines (schedule:, runner:, target:, runs as:). It is a delivery target only โ€” it decides where the completion message goes, not whether the loop stopped or what "done" means. The verdict itself is still owned by done when and the human gates.

Status: notify: is deferred past v1 for execution โ€” it parses today and is accepted by the grammar, so you can author it now and it won't break a run, but the delivery is not wired up yet. Treat it as a forward-looking declaration of intent rather than a guaranteed page.

Example

schedule: nightly
notify: slack
ping on finish

Example โ€” on an unattended run

schedule: nightly
runner: claude-code
notify: slack
runs as: nightly-bot

loop "refresh the changelog":
  goal: CHANGELOG.md covers everything merged since the last tag
  done when "scripts/changelog-check.sh" passes
headless run, result pinged to a channel

Common mistakes

Related