> ## Documentation Index
> Fetch the complete documentation index at: https://docs.buildbetter.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Workflows Overview

> Automate BuildBetter with composable workflow graphs, legacy templates, scheduled runs, native actions, and run history

BuildBetter Workflows automate repeatable work from calls, signals, searches, and connected tools. The current workflow system has two tracks:

| Track                           | Best For                                                         | Where It Appears                          |
| ------------------------------- | ---------------------------------------------------------------- | ----------------------------------------- |
| **Composable Workflows (v2)**   | New automation built from a graph of blocks                      | **Workflows** -> **Create Composable**    |
| **Template Workflows (legacy)** | Existing prebuilt automations and older Paragon/manual workflows | **Workflows** -> **Create from Template** |

<Info>
  Use **Composable Workflows** for new work. Existing legacy workflows can be migrated into Workflow V2 during the retirement period; migrated workflows preserve history and metadata where possible and are imported disabled by default so you can test before enabling them.
</Info>

## What a Composable Workflow Is

A composable workflow is a saved graph:

* **One trigger block** starts the run.
* **Data blocks** fetch calls, transcripts, summaries, signals, search results, web pages, or HTTP responses.
* **Logic blocks** evaluate conditions, ask an LLM, format output, or roll up lists.
* **Action blocks** send webhooks, post to Slack, add calls to folders, or apply tags.

Blocks pass data through references and templates. For example, a Slack message can use `{{get_summary.summary}}`, or a webhook body can combine a call title, transcript, and generated LLM answer.

## How Runs Work

<Steps>
  <Step title="Trigger" stepNumber={1}>
    A workflow starts from a call-completed event, extracted signals, a single signal, new feedback from a selected source, a manual run, a schedule, or a test run from the editor.
  </Step>

  <Step title="Resolve Inputs" stepNumber={2}>
    BuildBetter resolves each block's config from literals, upstream references, and template strings.
  </Step>

  <Step title="Execute Blocks" stepNumber={3}>
    The engine runs the graph in dependency order. Condition blocks route only the matching branch.
  </Step>

  <Step title="Record Results" stepNumber={4}>
    Each run stores a definition snapshot, trigger payload, per-node status, resolved config, output, errors, and timing.
  </Step>
</Steps>

## Block Catalog

<CardGroup cols={2}>
  <Card title="Triggers" icon="bolt">
    Call Completed, Signals Extracted, Signal Created, Feedback Created, Manual Trigger, Schedule.
  </Card>

  <Card title="Data and Search" icon="database">
    Get Call, Transcript, Summary, Signal, Participants, Call Signals, Search Calls, Search Signals, HTTP Request, Exa Search, Firecrawl Scrape.
  </Card>

  <Card title="Logic" icon="filter">
    Condition, Has Content, String Match, Ask LLM, Format Output, Format List.
  </Card>

  <Card title="Actions" icon="send">
    Send Webhook, Send to Slack, Send Email, Add to Folder, Add Tag.
  </Card>
</CardGroup>

## Common Patterns

### Send a Call Summary to Slack

Use **Call Completed** -> **Get Call Summary** -> **Send to Slack**. The Slack block uses the connected Slack workspace and channel picker, so you do not need to build a webhook just to post a message.

### Route Feature Requests

Use **Signals Extracted** or **Signal Created** with **Search Signals** or **Get Signal**, optionally add a generated signal filter, then post a digest to Slack or send the payload to a webhook.

### Send Feedback to Slack

Use **Feedback Created** -> **Format Output** -> **Send to Slack**. The feedback-to-Slack template includes source details, content, timestamps, and related customer context.

### Email Internal Recipients

Use **Send Email** when a workflow should notify one or more active organization members. Email actions support Markdown-formatted bodies and attachments for rendered signals, signal lists, calls, or recordings.

### Create a Weekly Digest

Use **Schedule** -> **Search Calls** or **Search Signals** -> **Format List** -> **Send to Slack** or **Send Webhook**.

### Replace a Legacy Webhook Template

Start from a composable template such as **Send Transcript to Webhook**, **Send Full Call Data to Webhook**, or **Conditional Summary to Webhook**, then adjust the payload and conditions in the editor.

## Webhook Signing

Outbound workflow webhooks include BuildBetter signature headers when a signing secret is configured. Each webhook step can have its own secret, with copy and regenerate actions in the editor. Custom webhook headers cannot override reserved BuildBetter signature headers.

Use the built-in verification guide in the webhook block for JavaScript and Python examples, or see [API Webhooks](/pages/api/webhooks).

## What's New in v2

<Check>
  **Multi-step graphs**: Workflows are no longer limited to a single condition and action.
</Check>

<Check>
  **Scheduled workflows**: Use a Schedule trigger with a cron expression and timezone.
</Check>

<Check>
  **Native Slack action**: Pick a Slack channel directly from connected resources.
</Check>

<Check>
  **Run history**: Inspect real and test runs with per-node details and errors.
</Check>

<Check>
  **AI-assisted editing**: The workflow chat panel can build, edit, explain, and debug the current graph.
</Check>

## Getting Started

<Steps>
  <Step title="Open Workflows" stepNumber={1}>
    Go to **Workflows** from the main navigation.
  </Step>

  <Step title="Create Composable" stepNumber={2}>
    Choose a blank graph or start from a v2 template.
  </Step>

  <Step title="Build the Graph" stepNumber={3}>
    Add a trigger, connect data and logic blocks, then add the final action.
  </Step>

  <Step title="Test Before Enabling" stepNumber={4}>
    Use **Test** in the editor. Test runs execute real side effects, so point webhooks and Slack messages at safe destinations first.
  </Step>

  <Step title="Save and Enable" stepNumber={5}>
    Save the graph, then turn on the **Enabled** switch when it is ready to run automatically.
  </Step>
</Steps>

## Learn More

<CardGroup cols={2}>
  <Card title="Creating Workflows" icon="plus" href="/pages/Workflows/creating-automations">
    Build a v2 workflow by hand or from a template.
  </Card>

  <Card title="Workflow Automation" icon="robot" href="/pages/Workflows/workflow-automation">
    Runtime behavior, triggers, block categories, run history, and limits.
  </Card>

  <Card title="Workflow AI Assistant" icon="brain" href="/pages/Workflows/workflow-ai-assistant">
    Use the embedded chat panel to edit and debug workflow graphs.
  </Card>
</CardGroup>
