Skip to main content
Version: 1.1

The trigger command

Run dispat trigger <event> [message] to deliver one script-raised event to the configured webhooks. The event is one word (a letter, then letters, digits, dashes, or underscores), delivered as script.<word>, so a subscription tells dispat's own events apart from what a script said by the prefix alone. Everything after the event is the event's free-text message:

scripts:
build:
- dispat trigger progress 0 starting
- npm ci && dispat trigger progress 40 dependencies installed
- npm run build && dispat trigger progress 100 built
publish:
- ./release.sh && dispat trigger deployed version is live
- ./smoke.sh && dispat trigger smoke-passed all green

progress is the one typed event: its first argument is a whole number from 0 to 100, and the message follows it. Every other word is yours to define, and a webhook subscribes to it by exact name (script.deployed) or by the family (script.*).

It exists for a stage script saying something between the stage.started and stage.succeeded events the release emits on its own, at the moments only the script knows about.

The environment names the sender

Invoked from a stage script, the command reads DISPAT_PACKAGE, DISPAT_STAGE, DISPAT_NEW_VERSION, and DISPAT_CHANNEL from the environment the stage exported, so the delivery attributes itself to the package and stage that raised it and routes to that package's effective webhook list:

{
"event": "script.deployed",
"timestamp": "2026-08-27T10:15:07.221Z",
"package": "api",
"stage": "publish",
"version": "1.4.0",
"message": "version is live"
}

A script.progress payload carries progress beside the message. Run by hand outside a release, the package fields are simply absent: the event still delivers, to the top-level list alone.

It cannot fail the stage

The command exits 0 whatever the endpoints think of the delivery. An endpoint that cannot be reached is a W239 warning, exactly as it is for the release's own events, because a build script must not be able to fail the build by reporting. With no webhooks configured the command does nothing and exits 0. The one thing it refuses is a usage mistake: a malformed event word, or a progress value that is not a whole number between 0 and 100, exits 2 before any config is read.

Deliveries drain before the command returns, bounded by the webhook's own timeout and the flush deadline, so a slow endpoint delays the script by at most that bound and a fast one costs it almost nothing.