Message Step
The Message step is available to both automation types. It must contain text, an uploaded attachment, an attachment variable, a lead contact, or a dynamic button block. Buttons added manually are not sufficient on their own.
You can also select a message as the website widget's greeting, displaying it before the visitor's first reply. This use has separate step requirements; selecting different messages by visitor or page is covered in integration settings.
Prepare The Text
Select the Message step on the workflow.
Enter the message in the text editor. Select text and use the formatting toolbar for headings, lists, links, and other elements. The content is stored as Markdown.
The insert data and variables button opens separate tabs for the current run, project, lead variables, dialog variables, and system lead data. System lead data is available only to For dialogs automations. If a variable does not exist yet, create it in the same dialog; it is inserted automatically afterward.
Value inserts the selected field at the cursor. Condition adds one text branch for a filled project, lead, or dialog value and another for a missing value. A current-run variable can be inserted only as a value.
The AI action opens commands for writing or editing the text. The AI suggestion is first shown for review and is applied to the field only after acceptance.

Enable Disable link previews to send links without website preview cards. Link text stays clickable. This applies to channels that support disabling previews.
For VK, enable Send button text to the VK chat. Pressing With milk then adds a customer message saying With milk and continues along that button’s branch. Buttons keep their usual behavior in other channels; link buttons open their URL.
This click continues the button's branch specifically. It does not also trigger a regular reply-wait branch or another automation for an incoming message.

Different sources use distinct templates: {{lead_data.first_name}} inserts the current lead's profile name, {{lead.city}} inserts a custom lead variable, {{project.manager_phone}} inserts a project variable, {{dialog.deal_id}} a field from the current conversation, and {{run.answer}} inserts a current-run value. Trigger data such as {{trigger.matched_keyword}} can also be written in the template. If a required value is missing, an empty string is inserted in its place. Verify the message with a test run that has suitable data.
If substitution leaves the entire message empty and there are no attachments, contact, or buttons, sending is skipped. For example, this happens when the text contains only an empty variable. If reply waiting with a destination variable is configured, the empty message makes the step fail: it cannot wait for a response to a question that was never sent.
Choose Channel Types
Select the Message step on the workflow. At the top of its settings, check Channel types. The step inherits the automation selection by default. For a particular message, you can keep only part of that set so the editor shows suitable button options.
The step selection does not restrict automation triggers or prevent it from running in other channels. If a change to the automation settings leaves the step with no matching types, select them again or choose Use automation settings.

Reply To The Lead's Message
Select the Message step in the automation, then set Send to to Current dialog.
When sending to the current dialog, you can enable Reply to the lead’s source message. The automation then sends the text as a reply to the lead message that caused this step to run.

If a start has no source message — for example, a manual start, segment entry or birthday — the setting is ignored and the bot sends a normal message. Leaving it enabled does not prevent publishing the graph.
Add Attachments
In the same panel, select the Message step on the workflow.
Select the paperclip below the editor. In the dialog, choose a source:
- Upload file: choose files from the device; you can also drag them into the editor or paste them from the clipboard;
- From variable: use the source field to select an Attachments variable from Run, Lead, Dialog, or Project. Every file in its array is added to the message, such as attachments returned by an agent;
- Lead contact: send the client's contact to the recipient.
Common image, video, audio, PDF, document, spreadsheet, text, and archive formats are supported. Uploaded files and attachments from the variable are merged; the combined message must contain no more than 10 files.
Uploading starts immediately, and its progress appears on the file card. Wait for uploading to finish before saving the step. If the file is unsupported or uploading fails, remove the card with the error and choose the file again.
If uploading has finished but the error occurs when the step runs, open the automation run and check its cause. An attachment ownership or availability error means that file access validation failed; it does not by itself indicate a plan restriction. Attachments must belong to the automation's project. If a new file uploaded to this step produces the same error, send support the run link and the exact error text — uploading again or renaming the file does not resolve an access validation error.
Files uploaded directly to the step appear below the editor. Select a card to open the file. The cross button removes it from the message.
After you select a variable, its dashed card immediately appears below the editor. It identifies the attachment source, not the files themselves: the files are obtained when the run executes. Select the card to choose another variable, or use its cross button to remove that source.
For the attachment source, dynamic buttons, and clicked-button result, the pencil lets you enter a nested path.

Verify Real Delivery
For an external channel, a message appearing in the dialog does not yet complete the step: the automation waits for confirmation that it was sent. Only after successful sending does the main branch continue and waiting for replies or button clicks become available. The customer does not need to read the message first.
If sending fails or confirmation does not arrive within the allowed time, the step and run fail. Check the cause in the automation run and the message status in the dialog. Manually resending the message in chat does not by itself resume a run that has already failed.
If the cause indicates an invalid connection, first restore the channel connection, then decide whether to retry the step. The error reason may become more specific after the platform responds; this does not mean the run has restarted.
A test run is not a preview: a message to a fixed lead or dialog may actually be sent. Use a training project or safe recipient, then open the run to inspect the step result.
Detailed guides
- Message recipients: The Message step can reply to the current lead or notify another recipient. The data substituted into the message text is selected separately.
- Message buttons: Add a link button or a button that continues the automation to your message.
- Waiting for a reply: Continue the automation when the lead replies to the message.
- Lead contact: Attach customer details to the message.
- Operator notification in MAX: Build a workflow that sends a new inquiry to a manager.