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:
SendMessageSendDmSetChannelTopicAddReactionCallWebhookRequestApprovalDelay
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, anddelay. - The
ActionDefenum incrates/buzz-workflow/src/schema.rsdefines the schema for these actions at line 95. - The executor in
crates/buzz-workflow/src/executor.rshandles runtime dispatch based on the YAMLactionfield. - All actions are configured via YAML workflow definitions using the
actionkey 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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →