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 Inputs

Steps

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 Steps

State 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.

Learn More About State

How It Works

1

Trigger

An input receives data or an event that starts the workflow execution.

2

Process

Steps execute sequentially, each transforming or enriching the data as it flows through.

3

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

Next Steps