The Message step is the face your customer sees; however clever the rest of the flow is, people only read the sentences that come out of here. This step sends text, puts tappable buttons underneath it, waits for what the person types, and saves that answer to the contact card. This guide covers every box in the step, every limit, and the differences between the two channels.
In this article you will find:
What it does
Message text and placeholders
Text variants
Buttons
Waiting for a typed reply and saving it
Limiting the reply time
Waiting before sending
Outputs and channel limits
Common mistakes
What it does
The Message step sends text to the person. You can put buttons under it; when someone taps a button, the flow continues from that button's output. You can also wait for them to type instead of offering buttons.
The step works on both channels. Instagram shows the buttons as quick replies and WhatsApp as reply buttons; tapping does the same thing on both.
Message text and placeholders
Type what the person will read into the Message box. The counter underneath shows how much of the current limit you have used.
To personalise the text, use Insert placeholder. The list offers:
Contact › First name — {{contact.first_name}}, the first word of the full name.
Contact › Full name — {{contact.name}}.
Contact › Username — {{contact.username}}.
Contact › Email and Contact › Phone.
The contact's last reply — {{input}}.
Account name — {{workspace.name}}.
Custom field — your own contact fields, such as {{field.city}}.
A placeholder can be empty, so give it a default: write {{contact.first_name|friend}} and someone whose name you do not know gets "friend" instead of a gap in the sentence.
⚠️ Note: If the text goes over the channel limit once placeholders are filled in, the message is shortened before sending and ends with "…". Put long fields at the end of the message so nothing gets cut mid-sentence.
Text variants
Under you can add other wordings of the same message (). When the list is filled, one of the main text and the variants is picked at random for every send.
Was this article helpful?
Text variants
Add a variant
This keeps the same sentence from reaching hundreds of people word for word, which makes the account look less like a copy-paste bot. You can add up to 5 variants, so the pool holds 6 wordings including the main text. If the same step runs twice in one run, the panel picks a different wording from the previous one.
Variants follow the same length limit as the main text and accept the same placeholders.
Buttons
Add buttons with Add button and give each one a label. Reorder them with Move up and Move down, and remove them with Remove button.
Each button opens its own output on the canvas, named after the button. When the person taps it, the flow continues from there.
The limits depend on the channel:
Instagram
Up to 13 buttons in one message. A button label can be up to 20 characters.
WhatsApp
Up to 3 buttons in one message. Labels are again limited to 20 characters. If you need more than three options, use the List step.
Do not give two buttons the same label: even though the tap still works, the logs become hard to read, and the panel warns you about it.
Waiting for a typed reply and saving it
Turning on Wait for a typed reply adds a Reply output to the step. If the person writes something instead of tapping a button, the flow continues from there.
With the box on, a Save the reply selector appears. Choose a contact field and whatever they type is written into it; with Don't save selected, only the path branches and nothing is stored.
If you want the answer validated (is that email really an email, is that phone really a phone), use the Collect data step instead.
Limiting the reply time
Limit the reply time only makes sense when the step actually waits — that is, when there are buttons or a typed reply is expected. Turn it on, enter a Duration and a Unit (minutes, hours, days), and a No answer output is added to the step.
If the person does not reply within that time, the flow continues from No answer — this is how "still there? let's do this instead" nudges are built. The maximum is 7 days.
When you turn the box off, the panel asks for confirmation first: the No answer output and the branch attached to it are detached from the flow.
⚠️ Note: Beyond 24 hours the message on the "No answer" branch may not be delivered. Meta closes free-form messaging 24 hours after the person's last message, and this applies to every tool built on their API. See The 24-hour messaging window.
If you never turn the limit on, the step falls back to the general reply timeout; when that runs out, the run closes quietly.
Waiting before sending
Wait before sending offers a choice between No wait and a few seconds (up to 3 seconds). A short pause makes the message feel more natural: it arrives as if typed, not instantly like a robot.
If the typing indicator is on for your account, this is also how long the indicator stays visible: it appears at the start of the pause and disappears when the message goes out. With No wait selected, the indicator never appears. Under load the pause can be skipped, and that is written to the run log.
The typing indicator only exists on Instagram. On WhatsApp the time is simply a pause.
Outputs and channel limits
The outputs appear according to your settings:
With buttons: one output per button.
With Wait for a typed reply on: an additional Reply output.
With no buttons and no waiting: a single Then output.
When the step waits and the time limit is on: an additional No answer output.
Text limits:
Instagram:1,000 with or without buttons. Instagram counts this limit in bytes; Turkish letters take 2 and emoji take 4. The counter works that out for you.
WhatsApp:4,096 characters without buttons, 1,024 characters with buttons.
If both channels are connected to your account, the counter warns you against the narrower limit, so the same flow goes out cleanly on both.
Common mistakes
Leaving the text empty. This blocks publishing. Writing only variants and leaving the main text empty is fine — the pool just needs at least one wording.
Leaving a button unlabelled. An empty label blocks publishing, and so does a label over 20 characters.
Putting four buttons on WhatsApp. The channel accepts no more than three and the check raises an error. Move to the List step.
Forgetting to connect a button output. The person taps and nothing happens. The check shows this as a warning; every button needs somewhere to go.
Writing a placeholder that does not exist. A key such as {{name}} is rendered as nothing and leaves a gap in the sentence. The check warns about an unknown placeholder; picking from the list is always safest.
Putting buttons on the first message of a comment flow. The private reply sent from a comment carries plain text only; buttons are silently dropped. Put the step with buttons after the person has written to you once.
Forgetting to add up the waits. If earlier wait steps push the message past 24 hours from the person's last message, it will not be delivered. The check marks the step as arriving too late.