New to Kestra?
Use blueprints to kickstart your first workflows.
Send one signal to many running Temporal workflows from Kestra. Fan out pause, resume, or config-reload signals over a workflow ID list, then report to Discord.
Signaling one Temporal workflow is a CLI one-liner; signaling fifty of them during an incident is a script someone writes in a hurry and loses afterwards. This blueprint turns that operational broadcast into a reviewable, repeatable flow: a Loop iterates over a list of running workflow IDs and io.kestra.plugin.temporal.workflow.Signal delivers the same named signal, such as pauseProcessing, resumeProcessing, or reloadConfig, to each one, with a reason string passed to every handler. Discord gets a summary with the exact delivery count.
workflow_ids input takes a JSON list of running workflow IDs, and signal_name selects which registered signal handler to invoke on them.broadcast (io.kestra.plugin.core.flow.Loop) iterates over the list; its direct child send_signal (io.kestra.plugin.temporal.workflow.Signal) targets {{ item.value }} and sends the signal with signal_reason as a single JSON-encoded argument. With no runId set, the signal reaches the latest open run of each workflow ID.notify posts the signal name and the list length to Discord, so the channel records how many workflows the broadcast reached.errors block posts a distinct Discord alert when any delivery fails, since a partially applied pause is worse than no pause at all.Temporal handles the signal semantics inside each workflow, but the broadcast itself, which IDs to hit, in what namespace, with what argument, and who gets told about it, is operational plumbing. Kestra keeps that plumbing declarative: the ID list and signal name are typed inputs, the endpoint lives in a secret, every run is auditable, and the same flow serves the incident at 3 a.m. and the planned maintenance window.
signal_name.apiKey property; for mTLS clusters, provide caCert, clientCert, and clientKey.TEMPORAL_ENDPOINT: Temporal frontend address in host:port format, for example temporal.example.com:7233.DISCORD_WEBHOOK_URL: Discord incoming webhook URL.Loop that queries each workflow after signaling to confirm the state change, as shown in the Temporal workflow state probe blueprint.