Skip to main content
Composable Workflows are BuildBetter’s v2 automation engine. They run as directed graphs of blocks and store execution history for both real runs and editor test runs.

Runtime Model

PartWhat It Does
Workflow definitionA JSON graph of nodes and edges saved on the workflow row.
Field valueA config input stored as a literal, an upstream reference, or a template string.
RunA persisted execution record with trigger payload, definition snapshot, status, per-node output, and errors.
Block registryThe server-side catalog of valid triggers, data blocks, logic blocks, and actions.
The engine validates block configs at execution time. Unknown block types, invalid references, invalid schedules, failed actions, or malformed configs fail the run with node-level detail in Run History.

Trigger Types

Starts after a call has finished processing. Use this when downstream blocks need call metadata, transcript, summary, participants, or call-scoped signals.
Starts once per extraction batch and exposes an array of signal IDs. Use this for digest-style workflows that summarize multiple signals together.
Starts once per individual signal. If one call creates 20 signals, the workflow runs 20 times.
Starts when a user manually runs or tests the workflow. Useful for one-off workflows and editor tests.
Starts from a cron schedule in the selected IANA timezone, such as America/Los_Angeles. The dispatcher stores the next fire time in UTC and handles daylight-saving changes through the timezone-aware cron parser.
Each workflow can have one trigger block. Remove the existing trigger before adding a different one.

Data and Search Blocks

Data blocks pull context into the graph:
  • Get Call: call title, duration, start time, asset URL.
  • Get Transcript: speaker-labeled transcript, speaker count, attendee emails.
  • Get Call Summary: active AI-generated summary.
  • Get Signal: signal context, type, quote, related call.
  • Get Participants: formatted attendee data.
  • Get Call Signals: call-scoped signals with optional signal filter.
  • Search Calls and Search Signals: recent or filtered result sets for digests and scheduled jobs.
  • HTTP Request: fetch data from an external API.
  • Exa Search and Firecrawl Scrape: web research and page scraping blocks where enabled.

Logic Blocks

Logic blocks shape the graph before actions run:
  • Condition uses an LLM to return true or false and route the matching branch.
  • Has Content skips empty inputs.
  • String Match checks text against a pattern.
  • Ask LLM generates an answer from prompt context.
  • Format Output converts values into JSON, text, or markdown.
  • Format List turns arrays into readable text, with item-level templates such as {{item.context}}.
Condition blocks use branch handles. The engine skips the branch that does not match, so downstream actions on the false path do not run when the result is true.

Action Blocks

Action blocks produce side effects:
ActionUse It For
Send WebhookPOST a JSON payload to an HTTPS endpoint.
Send to SlackPost a message into a connected Slack channel.
Add to FolderAdd a call to a BuildBetter folder.
Add TagApply a tag to a call.
Test runs execute real action blocks. Use a safe webhook URL, test Slack channel, or test folder while validating a workflow.

Run History

The editor’s Run History drawer shows recent runs for a workflow. Each run includes:
  • Status: pending, running, completed, or failed.
  • Whether the run was a test.
  • Trigger event payload.
  • Definition snapshot from the graph that actually ran.
  • Per-node status, resolved config, output, timing, and error.
If a run fails, use Fix with agent from the run or node error to send the failure context to the workflow AI assistant.

Legacy Template Workflows

Legacy template workflows still exist in the same Workflows area. They are useful for older automations such as:
  • Recording to Folder by Title
  • Recording to Folder
  • Recording to Tag
  • Recording Summary to Webhook
  • Send Call to Webhook
  • Transcript to Webhook
  • Answer Questions to Webhook
  • Signal to Webhook
  • Send Signal to Webhook
For new automation, use Create Composable. Many v2 templates mirror these legacy patterns while giving you graph editing, run history, scheduling, Slack, and multi-step logic.

Current Limits

  • A workflow can have only one trigger block.
  • The graph must be acyclic. The editor rejects self-loops, duplicate edges, and cycles.
  • The AI assistant is catalog-bound. It can only use blocks exposed by the block registry.
  • Scheduled workflows need a valid cron expression and timezone.
  • Action blocks depend on configured credentials or reachable endpoints.
  • There is no arbitrary JavaScript execution block.
  • Test runs have real side effects.
For native app integrations that are not in the block catalog yet, use Send Webhook, HTTP Request, Zapier, Make, or the BuildBetter API.