New to Kestra?
Use blueprints to kickstart your first workflows.
Start a Temporal workflow from Kestra, wait for its terminal state, and post the status to Slack. One audit trail across scheduling and business logic.
Temporal is where durable business logic lives; Kestra is where everything around it gets orchestrated. This blueprint is the core handshake between the two layers: io.kestra.plugin.temporal.workflow.Trigger starts an OrderProcessing workflow on the orders task queue, io.kestra.plugin.temporal.workflow.Wait blocks until the run reaches a terminal state, and Slack receives the completion status. The Temporal workers keep owning retries, timers, and activity logic; Kestra owns the scheduling, the data plumbing before and after, and a single audit trail that spans both.
start_workflow (io.kestra.plugin.temporal.workflow.Trigger) connects to the Temporal frontend from TEMPORAL_ENDPOINT and starts OrderProcessing on the orders task queue, passing the order ID as a JSON-encoded argument through input. The workflow ID is templated from the order ID, so retrying the Kestra execution never spawns a duplicate workflow. The task returns the documented workflowId and runId outputs.wait_for_completion (io.kestra.plugin.temporal.workflow.Wait) targets that exact run via {{ outputs.start_workflow.workflowId }} and {{ outputs.start_workflow.runId }}, polling every 10 seconds for up to 30 minutes. With failOnNonCompleted: true, a FAILED, CANCELED, TERMINATED, or TIMED_OUT workflow fails the Kestra execution too.notify posts the documented status output to Slack alongside the workflow ID, so the completion is visible where the team already looks.errors block posts a distinct Slack alert naming the order when either the start or the wait fails.status and JSON-encoded result available as task outputs for downstream tasks.Temporal makes the workflow itself durable, but something still has to decide when to start it, feed it the right input, wait for the answer, and tell people what happened. Kestra sits above the workers and provides exactly that: declarative inputs, secrets management for the endpoint, output passing from start to wait to notification, and an execution history where the whole round trip is auditable in one place.
orders task queue with an OrderProcessing workflow registered.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.SLACK_WEBHOOK_URL: Slack incoming webhook URL.workflowType and taskQueue to match a workflow your workers actually register.result output with Pebble's jq filter and branch on it with downstream tasks.