Workflows
Learn how workflows combine inputs and steps to create powerful automation pipelines.
What is a Workflow?
A workflow is a YAML configuration that defines an automated process. It specifies how data flows through your pipeline, from the initial trigger to the final output. Each workflow consists of an input that triggers the workflow and a series of steps that process the data.
Key Components
Inputs
Inputs define how your workflow is triggered. This could be an HTTP webhook, a cron schedule, or other event sources. The input determines when your workflow starts executing.
Learn about InputsSteps
Steps are the building blocks of workflows. Each step performs a specific action like adding data, transforming content, or sending to external services. Steps execute sequentially.
Browse Available StepsState Management
As your workflow executes, data flows through a state object that gets passed from one step to the next. This state object starts with your input data and grows as each step adds information. Steps can inject their results into specific properties of the state, making that data available to all subsequent steps.
For example, if you make multiple HTTP calls in different steps, each can save
its response to a named property (like users, groups, etc.), and later steps can reference this data.
How It Works
Trigger
An input receives data or an event that starts the workflow execution.
Process
Steps execute sequentially, each transforming or enriching the data as it flows through.
Output
The final steps typically send data to external services or store results for later use.
Example Workflow
Here's a complete workflow that receives data via webhook, enriches it with an ID and timestamp, and sends a notification to Slack:
workflow.yaml
workflow:
name: add-id-timestamp-and-send-to-slack
description: "Adds an ID and sends entire data object to Slack."
input:
type: http_webhook
steps:
- type: add_uuid
field: meta.id
- type: add_timestamp
field: meta.timestamp
- type: slack_webhook
webhook_url: "${env:SLACK_WEBHOOK_URL}"
include_event: true
text_template: "Good morning! The daily job ran at ${meta.timestamp}, with ID ${meta.id}"This workflow:
- Listens for incoming HTTP webhook requests
- Adds a unique ID to the data at
meta.id - Adds a timestamp at
meta.timestamp - Sends a formatted message to Slack with the enriched data