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

# Flow node reference

> Every node type in the flow builder, with its fields and behavior

This is the field-level reference for the flow builder — every node type, its fields, and how it behaves during a call. For what a flow is and how edges and labels work, start with the [flow builder overview](/flow-builder/overview).

## Start

Entry point of every flow. Defines the **greeting** and the **greeting mode**:

* `agent speaks first` — the greeting is spoken as soon as the call connects (typical inbound).
* `user speaks first` — the assistant waits for the caller (typical outbound: the callee says "Hello?" first).

## Agent

A conversational agent with its own **name**, **instructions**, and optional **voice override**. The conversation stays with this agent until it hands off along one of its outgoing edges.

* Each outgoing edge is a possible handoff; the assistant uses its label to decide. See [why labels matter](/flow-builder/overview#why-edge-and-agent-labels-matter).
* Empty instructions use the assistant's system prompt (Advanced prompt) as the base; node text is **appended**, not replaced.
* Voice override lets different agents speak with different voices.

## Condition

A forced decision point. You write a **description** of what is being decided; the assistant must choose exactly one outgoing edge based on the edge labels. Use it when routing must happen immediately.

## Tool

Runs a reusable **API or built-in tool** during the conversation and gives the result back to the assistant. Configure its endpoint, credentials, description, and reusable behavior under **Tools**.

| Field                         | Purpose                                             |
| ----------------------------- | --------------------------------------------------- |
| **Name and description**      | How the assistant understands what the tool does    |
| **URL, method, and headers**  | The HTTP request (GET/POST/PUT/PATCH/DELETE)        |
| **Parameter schema**          | JSON Schema for values the assistant should collect |
| **Timeout**                   | How long to wait for the request                    |
| **Announcement**              | What to say when the tool starts                    |
| **Run asynchronously**        | Continue the conversation while the tool runs       |
| **Filler phrases and timing** | Rotating phrases spoken during long waits           |

<Tip>
  For long-running webhooks such as CRM writes or availability checks, enable **Run asynchronously** and add two or three filler phrases. The caller keeps a fluent conversation while the request completes.
</Tip>

## Transfer (blind)

Immediately transfers the call to a **phone number or SIP URI** (SIP REFER), optionally after a short **announcement**. The assistant leaves the call; there is no briefing of the receiving person.

## Warm transfer

The premium handover: the caller is put on **hold music**, the assistant dials the target (an employee), **briefs them with an AI-generated summary** of the conversation so far, and only then connects both parties. The employee can accept or decline; voicemail at the target is detected.

| Field                        | Purpose                                                                                                                                                                              |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Target**                   | A Famulor Loop user, extension, ring group, or queue — or an external number in E.164 format or as a `sip:` URI. You can also let the assistant determine the number during the call |
| **Outbound phone number**    | The number used to call the target (it needs an outbound trunk)                                                                                                                      |
| **Hold message**             | What the caller hears before being put on hold                                                                                                                                       |
| **Connected message**        | What the caller hears once the target is on the line                                                                                                                                 |
| **Briefing initial message** | The first thing the assistant says to the target                                                                                                                                     |
| **Summary instructions**     | How the assistant summarizes the conversation for the target                                                                                                                         |
| **Ringing timeout**          | How long to ring the target (5–120 seconds; default 30)                                                                                                                              |
| **Hold music**               | Whether to play hold music, and which available track to use                                                                                                                         |
| **Fallback**                 | Continue the conversation, end the call, or make a blind transfer if the target does not answer or declines                                                                          |

Warm transfer outcomes (`started` / `completed` / `failed`) are recorded as call events.

## Collect

Structured data capture with **built-in validation, re-asking, and confirmation** — far more reliable than hoping the LLM transcribes an email address correctly.

* **Types:** `name`, `email`, `phone`, `address`, `date of birth`, `dtmf` (digits via keypad or spoken aloud), `credit_card` (payment card).
* **Variable** (required): the result is stored under this name and included in the `call.completed` webhook.
* **Prompt**: optional extra instructions on top of the built-in dialogue.
* **Max attempts** (default 3): after final failure, the flow takes the edge labeled `failed` if present.
* **DTMF digits**: for type `dtmf`, how many digits to collect.
* **Timeout and stop key** (`dtmf`, set on the assigned **Collect keypad** tool): how long the caller has before the attempt times out (1–30 s, default 5 s), and which key — `#` or `*` — ends input early instead of waiting it out.
* **Payment card:** requires the **Collect payment card** tool and an eligible connected Stripe account. During the call, payment details are collected securely. Only a reusable payment-method reference and non-sensitive display details are retained; the full card number and security code are never stored. Connect Stripe under **Tools → Agent Connectors** first.

## DTMF

Prompts the caller to enter a fixed number of **digits on the phone keypad** — spoken digits work too. The assigned **DTMF input** tool sets how many digits to collect (1–32); the caller gets about four seconds per digit, and pressing `#` ends input early. Use `collect` with type `dtmf` when you want validation and retries; use this simpler node for quick menu choices.

<Tip>
  Cue the caller in plain words — the assigned tool's description drives what the assistant asks for, so write it the way the caller should hear it: "Please enter your account number, then press # to confirm," or for a menu, "Press 1 for support, 2 for sales." A caller who isn't prompted first often starts talking instead of pressing keys.
</Tip>

## End

Terminates the call, optionally speaking a **farewell** first. Always give your flows explicit endings — it produces clean call statuses and prevents the conversation from drifting after its job is done.

## Central Tool Library

**Add node** opens a searchable Tool Library. Reusable settings remain managed on the Tools page:

| Registry tool   | Flow placement                                                          |
| --------------- | ----------------------------------------------------------------------- |
| API             | Generic **Tool** node                                                   |
| Call transfer   | Dedicated **Transfer** node                                             |
| Warm transfer   | Dedicated **Warm transfer** node                                        |
| DTMF input      | Dedicated **DTMF** node                                                 |
| Collect keypad  | Dedicated **Collect** node                                              |
| Other built-ins | Generic referenced **Tool** node                                        |
| MCP server      | Assistant-wide assignment only; it is not one deterministic flow action |

Use **Edit in Tools** to change reusable settings. The change applies to every assistant and flow that uses the tool.

<Note>
  Tool, transfer, warm-transfer, DTMF, and collect-keypad nodes select a reusable tool from the Tools page. If a selected tool becomes unavailable, the node follows its configured failure path and the call details show the issue.
</Note>
