# Send Chat Message (/docs/workflows/reference/category/messaging/sendChatMessage)

> For the complete documentation index, see [llms.txt](https://docs.tandemcx.ai/llms.txt). Any page on this site can be fetched as Markdown by appending `.md` to its URL.

Send a message to a website chat visitor, and optionally wait for their reply and store it in a variable.

Writes a message into the chat panel of a visitor on your website, for a workflow started by a chat widget. The message accepts variables via `$(name)`, so you can personalize it with data gathered earlier in the flow.

Turn on **Wait for Reply** to pause the workflow until the visitor types something. Their reply is stored in the variable named in **Store Reply In**, and the node routes to `replyReceived`. If the timeout elapses first, it routes to `noReply` instead and the variable is left untouched. With **Wait for Reply** off, the message is queued and the workflow continues immediately.

This node only runs in a chat conversation. In a phone call it takes the `fallback` exit, because there is no chat panel to write to — the voice equivalent is the Play Message node.

**Category:** Messaging  
**Provider:** Core  
**Latest version:** 1.0.0

## Fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| Message (`content`) | textArea | Yes | The text to show in the visitor’s chat panel. Example: `Thanks for reaching out! What’s your name?` |
| Wait for Reply (`waitForReply`) | boolean | No | After sending, pause the workflow until the visitor replies or the timeout elapses. |
| Timeout — Days (`timeoutWaitDays`) | number | No | Days to wait for a reply before taking the No Reply exit. |
| Timeout — Hours (`timeoutWaitHours`) | number | No | Hours to wait for a reply before taking the No Reply exit. |
| Timeout — Minutes (`timeoutWaitMinutes`) | number | No | Minutes to wait for a reply before taking the No Reply exit. |
| Timeout — Seconds (`timeoutWaitSeconds`) | number | No | Seconds to wait for a reply before taking the No Reply exit. |
| Store Reply In (`responseVariableName`) | string · variableName | No | The visitor’s reply text is stored in this variable. |

## Exits

- `default` (required)
- `replyReceived` (required)
- `noReply` (required)
- `invalidInput` (system)
- `fallback` (system)

System exits (auto-injected, hidden when unwired): `invalidInput`, `fallback`.
