> For a complete page index, fetch https://docs.synthflow.ai/llms.txt. For full documentation content, fetch https://docs.synthflow.ai/llms-full.txt.

# Greeting Message

> Configure how a Synthflow agent starts a conversation and delivers the greeting message, including human-first mode and timeout behavior.

![Greeting Message](https://files.buildwithfern.com/synthflow.docs.buildwithfern.com/fd0b9a6a8adf930ec58c5dd0e4be19af9c62a36013e8ca38b5888cd3135cd7b6/docs/assets/screenshots/greeting_message_1.png)

Every call begins with a greeting. You can decide whether the agent kicks things off with a friendly hello, or whether it waits for the caller to speak first and only then responds. The right choice depends on whether the call is inbound or outbound and on how natural you want the opening to feel.

## Where to find it

For **Single-Prompt** agents, open the [agent editor](/the-agent-editor) and click into the **Greeting Message** card to open the dialog shown below.

For **Flow Designer** agents, the greeting is configured in the [Greeting Message node](/configure-the-greeting-message-node), the first node in every flow.

## Agent speaks first

![Greeting Message dialog with the Agent speaks first tab selected, showing the Message field set to "Hello, how can I help you?" and a button for inserting variables](https://files.buildwithfern.com/synthflow.docs.buildwithfern.com/385dc5755cfd44b90c4effacf7d6ac10acdf0c688f9f19fb041b0bbdf2ab6bd7/docs/assets/screenshots/greeting_message_agent.png)

The agent initiates the conversation with a friendly greeting to manage caller expectations. As soon as the call connects, the agent speaks the **Message** you configure.

Type the greeting directly into the **Message** field. Use the `{ For Variables` button to insert dynamic values such as the caller's name or the company they're calling about. This is a great fit for outbound calls and most inbound flows where you want the agent to set the tone immediately.

## Human speaks first

![Greeting Message dialog with the Human speaks first tab selected, showing a 3 second wait slider and an Agent response type dropdown set to LLM-generated reply](https://files.buildwithfern.com/synthflow.docs.buildwithfern.com/63101318b3c16463eed49047d438381b21f4a55219428938461892897f223f6d/docs/assets/screenshots/greeting_message_human.png)

The agent waits silently for the caller to speak before continuing. This is the more natural option for inbound support lines, where callers expect to introduce themselves first. It is also a prerequisite for [voicemail handling](/call-configuration#leave-a-voicemail), since the agent needs to listen for the opening audio to recognize a voicemail greeting.

The **How long to wait** slider sets a fallback timeout (1 to 10 seconds). If the caller stays silent past that point, the agent steps in and starts the conversation on its own. Three seconds is a balanced default.

Once the caller speaks, the **Agent response type** dropdown decides what the agent says back.

### Custom reply

The agent speaks back the exact message you type, regardless of what the caller said. Use this when you need consistent, predictable wording (for example, a compliance disclosure or a standard handoff line).

### AI-generated reply

The agent generates a reply contextually based on what the caller just said. Use this when you want the opening exchange to feel conversational and tailored to the caller's intent.

## Configure via the API

You can also set greeting behavior through the [Platform API](/getting-started-with-your-api). The fields below live on the nested `agent` object of the [Create Assistant](/api-reference/platform-api/agents/create-assistant) and [Update Assistant](/api-reference/platform-api/agents/update-assistant) endpoints.

### `greeting_message_mode`

Defines how the agent starts the conversation and how the greeting message is delivered.

| Mode            | Description                                                                                                   |
| --------------- | ------------------------------------------------------------------------------------------------------------- |
| `human`         | The agent waits for the human to speak first. No greeting is played automatically.                            |
| `agent_static`  | The agent immediately speaks the configured `greeting_message` once the call is established.                  |
| `agent_dynamic` | The agent dynamically generates a greeting using the agent prompt and speaks it once the call is established. |

Notes:

* `agent_static` uses the exact text provided in `greeting_message`.
* `agent_dynamic` ignores the static `greeting_message` value and generates the greeting using the agent's prompt context.
* `human` mode is useful when the caller is expected to initiate the conversation (for example, inbound support calls).

### `greeting_message_human_talk_timeout`

Defines how long the agent waits for the human to speak when `greeting_message_mode` is set to `human`. If the caller does not speak within the configured time, the agent automatically starts the conversation.

| Field                                 | Type    | Nullable | Example |
| ------------------------------------- | ------- | -------- | ------- |
| `greeting_message_human_talk_timeout` | integer | yes      | `3`     |

Behavior:

1. The call connects.
2. The agent waits for the human to speak.
3. If the human speaks, the agent responds normally.
4. If the timeout is reached, the agent automatically begins the conversation.

### Examples

Agent speaks first, static greeting:

```json
{
  "agent": {
    "greeting_message": "Hello! How can I help you today?",
    "greeting_message_mode": "agent_static"
  }
}
```

Agent speaks first, dynamically generated greeting:

```json
{
  "agent": {
    "greeting_message": "",
    "greeting_message_mode": "agent_dynamic"
  }
}
```

Human speaks first with a 3 second timeout and dynamic fallback:

```json
{
  "agent": {
    "greeting_message_mode": "human",
    "greeting_message_human_talk_timeout": 3
  }
}
```

Human speaks first with a 3 second timeout and static fallback message:

```json
{
  "agent": {
    "greeting_message_mode": "human",
    "greeting_message_human_talk_timeout": 3,
    "greeting_message": "Hello! How can I help you today?"
  }
}
```

## FAQ

<AccordionGroup>
  <Accordion title="Which option should I pick for inbound support?">
    Pick **Human speaks first** so the caller can state their issue first, and set **How long to wait** to a few seconds so the agent steps in if the caller stays silent. Pair it with **AI-generated reply** for a natural opening.
  </Accordion>

  <Accordion title="What's the difference between Custom reply and AI-generated reply?">
    **Custom reply** speaks back the exact text you type, every time. **AI-generated reply** lets the model craft a response based on what the caller actually said. Use Custom reply for fixed disclosures or scripted handoffs, and AI-generated reply for natural-sounding conversation.
  </Accordion>

  <Accordion title="Can I include variables in my greeting?">
    Yes. In the **Agent speaks first** tab, click the `{ For Variables` button under the Message field to insert dynamic values such as the caller's name or the company name.
  </Accordion>

  <Accordion title="Can I change the greeting at runtime?">
    Yes. Update the agent through the [Update Assistant](/api-reference/platform-api/agents/update-assistant) endpoint, changing `greeting_message_mode` or `greeting_message`. Changes apply to new calls.
  </Accordion>
</AccordionGroup>