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

> Explore Buzz workflow action types and understand the 7 supported actions like send_message, set_channel_topic, and request_approval. Optimize your automations today.

- Repository: [Block Open Source/buzz](https://github.com/block/buzz)
- Tags: deep-dive
- Published: 2026-08-28

---

**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`](https://github.com/block/buzz/blob/main/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`](https://github.com/block/buzz/blob/main/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`](https://github.com/block/buzz/blob/main/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:

```yaml

# 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!"

```

```yaml

# Reaction-based acknowledgment using add_reaction

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

```

```yaml

# 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"

```

```yaml

# 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`](https://github.com/block/buzz/blob/main/crates/buzz-workflow/src/schema.rs) defines the schema for these actions at line 95.
- The executor in [`crates/buzz-workflow/src/executor.rs`](https://github.com/block/buzz/blob/main/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`](https://github.com/block/buzz/blob/main/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`](https://github.com/block/buzz/blob/main/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.