Complete Guide to Buzz Workflow Action Types: 7 Supported Actions Explained

Buzz workflows support seven distinct action types—send_message, send_dm, set_channel_topic, add_reaction, call_webhook, request_approval, and delay—which are defined in the ActionDef enum within the buzz-workflow crate and executed by the workflow engine.

Buzz is an open-source automation platform developed by Block that uses YAML-based workflows to respond to events. Each workflow consists of a trigger and a sequence of steps, where every step specifies an action type that determines its runtime behavior. According to the block/buzz source code, the available actions are strictly enumerated in the Rust schema definition, ensuring type-safe execution across the workflow engine.

The ActionDef Enum: Source of Truth for Buzz Workflow Action Types

In crates/buzz-workflow/src/schema.rs, the ActionDef enum serves as the canonical definition for all supported operations. This enum maps the action field in your YAML workflow definitions to concrete Rust variants that the executor handles. When the workflow parser encounters a step definition, it deserializes the action tag into the corresponding ActionDef variant around line 95, enabling the engine to dispatch the correct logic.

The current implementation defines the following seven variants:

  • SendMessage
  • SendDm
  • SetChannelTopic
  • AddReaction
  • CallWebhook
  • RequestApproval
  • Delay

Complete Reference of Supported Buzz Workflow Action Types

send_message

Posts a message to a specified channel or thread. This is the primary action for notifications and alerts within Slack workspaces integrated with Buzz.

send_dm

Sends a direct message to a specific user. Use this for private notifications that should not appear in public channels.

set_channel_topic

Updates the topic field of a channel. This action is useful for status updates or dynamically reflecting workflow state in the channel header.

add_reaction

Adds an emoji reaction to the message that triggered the workflow. This provides lightweight acknowledgment without spamming the channel with additional text.

call_webhook

Performs an HTTP request to an external webhook URL. This enables integration with external services and custom endpoints outside the immediate Buzz ecosystem.

request_approval

Sends an approval request to designated users and optionally branches workflow execution based on the response. This action supports timeout configurations and conditional step execution.

delay

Pauses workflow execution for a configurable duration. Use this for rate limiting, scheduled reminders, or introducing intentional pauses between operations.

How the Workflow Engine Executes Actions

The runtime implementation resides in crates/buzz-workflow/src/executor.rs. When a workflow triggers, the engine iterates through the step list and matches each action type against the ActionDef variants. The executor dispatches each variant to its corresponding handler function, passing along the step's configuration parameters from the YAML definition. This match-based dispatch ensures that only validated action types from schema.rs can execute, preventing runtime errors from undefined operations.

Practical YAML Configuration Examples

The following examples demonstrate how to configure each action type in your workflow definitions:


# Alert notification using send_message

name: Incident Alert
trigger:
  on: message_posted
  filter: 'str_contains(trigger_text, "P1")'
steps:
  - id: notify
    action: send_message
    text: "🚨 P1 alert triggered!"

# Reaction-based acknowledgment using add_reaction

name: Triage
trigger:
  on: reaction_added
  emoji: clipboard
steps:
  - id: ack
    action: add_reaction
    emoji: eyes

# Approval workflow with conditional branching

name: Deploy Request
trigger:
  on: message_posted
steps:
  - id: request
    action: request_approval
    from: '@lead'
    message: "Approve deployment?"
    timeout: 4h
  - id: approved
    action: send_message
    text: "✅ Deployment approved"

# Scheduled heartbeat using delay

name: Heartbeat
trigger:
  on: schedule
  interval: 30m
steps:
  - id: tick
    action: send_message
    text: "⏱️ Heartbeat"

Summary

  • Buzz workflows support seven action types: send_message, send_dm, set_channel_topic, add_reaction, call_webhook, request_approval, and delay.
  • The ActionDef enum in crates/buzz-workflow/src/schema.rs defines the schema for these actions at line 95.
  • The executor in crates/buzz-workflow/src/executor.rs handles runtime dispatch based on the YAML action field.
  • All actions are configured via YAML workflow definitions using the action key in step blocks.

Frequently Asked Questions

How do I send a direct message in a Buzz workflow?

Use the send_dm action type in your step definition. Specify the target user in the step configuration, and the workflow engine will dispatch a private message through the integrated chat platform rather than posting to a public channel.

What file defines the available Buzz workflow action types?

The ActionDef enum in crates/buzz-workflow/src/schema.rs serves as the single source of truth. This Rust enum enumerates all supported variants, and the workflow parser uses this definition to validate action tags in your YAML configurations.

Can I integrate external APIs with Buzz workflows?

Yes, use the call_webhook action type. This action performs HTTP requests to external endpoints, allowing you to trigger external services, log events to third-party platforms, or chain Buzz workflows with other automation tools via REST APIs.

How does the delay action work in Buzz?

The delay action pauses workflow execution for a specified duration, configured using standard time notation (e.g., 30m, 1h). The executor in crates/buzz-workflow/src/executor.rs holds the workflow state during this period and resumes execution with the next step once the interval expires, enabling rate limiting and scheduled operations.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →