Skip to main content
The flow canvas is currently hidden in the app. The Workflow tab in the agent editor is not shown on any plan - you configure agents entirely in the agent editor. This page explains what happens underneath, and where the settings that used to live on the canvas are configured today.

What the flow is

The flow (workflow) is a graph of connected nodes representing the stages of a conversation. Pathways (edges) determine when the agent moves between stages - transitions are chosen by the LLM based on how the conversation unfolds. The graph still runs: AI generation and the industry templates build it for you, and edits made in the agent editor are written straight into it. You don’t have to look at it for the agent to work.

Node types and where they are configured today

The toggles that used to sit on the nodes are now in the agent editor’s Settings tab: Voicemail Detection (formerly “Detect Voicemail” on Start Call) and Interruption Sensitivity (formerly “Allow Interruption”). The global prompt no longer has a toggle - the system prompt from the Role tab reaches every stage.

Variable extraction

The agent can extract structured data from the conversation (first name, budget, preferred date). You define it in the Variables tab, in the Data collected by the assistant card - name, type and description. It lands in gathered_context and is available in webhooks, SMS and integrations. Details: Template variables.

The post-call webhook payload

The Post-call Webhook integration sends a fixed call.completed event after every finished call (JSON, signed with an X-Brosbots-Signature header):
The webhook goes out right after the call, often before the recording is saved. The link works anyway: opened a few seconds later, it leads to the file. Anyone holding the link can listen to the recording - treat it as personal data.

SMS replies (sms.received)

The same integration can also receive replies to SMS your agent sent. Enter sms.received in the Events step of the webhook wizard (or the integration’s Events field in the catalog). Without it the endpoint only receives call.completed, as before.
workflow_run_id and workflow_id are set when the reply answers an SMS sent during or after a call (within the last 7 days). Otherwise they are null.

Other events

These also have to be switched on: in the wizard’s Events step or in the Events field (comma-separated), e.g. sms.received, campaign.completed. Setting up a webhook, picking agents and checking the signature: Webhooks. call.started is sent without waiting for your endpoint, so it never delays the greeting. rows in campaign.completed holds at most 2000 rows (rows_truncated: true when there are more); the full report is on the campaign page as CSV and at GET /api/v1/campaigns/{id}/report.
Agents created earlier may still carry a Webhook node in their graph with its own templated payload ({{workflow_run_id}}, {{initial_context.*}}, {{gathered_context.*}}, {{recording_url}}, {{transcript_url}}, {{cost_info.call_duration_seconds}}; {{recording_url}} and {{transcript_url}} are storage keys, not links). Those nodes still fire, but with the canvas hidden you cannot add new ones or edit existing ones - set up new webhooks under Integrations.

Pathways and tool calls

Transitions between nodes are implemented as tool calls made by the LLM - a pathway description works like a tool description. That is why the tool descriptions you write in the Tools tab should be clear and actionable: they are what the LLM decides on. The word “tool” is reserved and should not appear in your own tool names.