chatleadr Docs

The Menu Node

Asks a question, offers up to ten answers, and holds the run open until the visitor picks one. A Message node sends and carries on; a Menu node waits, so the reply arrives inside the run rather than afterwards as a fresh visitor message.

What they needMenu4 options · What can I help with? Book a valuationGet a quoteTrack my orderTalk to a personAnything else
A Menu node with four options. Each option is its own port, and the card grows to hold them.
A Message node with quick replies Sends the options one turn The next node runs straight away the run has ended Visitor taps minutes later A new turn starts nothing is waiting The tap arrives as an ordinary message, so catching it means a trigger keyword or a Decision node per option. A Menu node Sends the options one turn The run parks holding its place Visitor answers taps or types Leaves by that port the same node routes Same node, same run. The answer is waiting downstream as Menu.label and Menu.value.
A Message node sends and continues. A Menu node holds the run open, then routes on the answer itself.

Write the Question and the Options#

What they need Question What can I help with? Menu title View servicesOptions4 / 101. Book a valuation A free 30-minute visit valuation2. Get a quote Sent by email within a day quote3. Track my order Description (optional) Value (optional)4. Talk to a person Description (optional) human+ Add option After they answerA reply that matches no option, including a typedquestion, leaves by Anything else. Connect that port. Done
The Menu panel. Value is what `.value` holds, so it can stay fixed while the label is reworded.
FieldWhat it doesLimit
QuestionThe sentence above the options, on every channelNone
Menu titleOn the web, the heading above the options. On WhatsApp, the button that opens the menu, where the menu sits behind one. Left blank, WhatsApp's button reads "Choose" and the web draws no heading20 characters
Option labelWhat the visitor taps, and what the port is named on the canvas24 characters
DescriptionAn optional line under the label. Never sent back, so it is free to explain72 characters
ValueWhat .value holds for the nodes that follow. Left blank, the label is usedNone

Every field accepts {{variables}}, so a menu can be built from something an API Request returned rather than fixed when the workflow was written. Ten options is the cap, and the editor replaces the add button with the reason when you reach it.

Set a Value to Keep the Label Rewritable#

The label is what a person reads, and Value is what .value holds for the nodes that follow. Keeping them apart means the wording can change without anything downstream breaking: set the value to valuation and the label can go from "Book a valuation" to "Arrange a free visit" between one release and the next, while every Decision node reading .value carries on matching. A visitor picking an option always sends its label, so a value you choose is for your own workflow to read rather than for matching the reply.

Ports need no such help. A port is keyed to a hidden id minted when the option is added, so renaming an option moves no wires. Deleting an option is the one thing that removes a port, and the canvas drops its wire with it.

Branch on the Answer, or Keep One Next Port#

Branch on the answer is a toggle and it is on by default. On, the node draws one port per option in the order they are listed, then Anything else last.

What they needMenu3 options · What can I help with? Offer three timesChat MessageI can do slot_a or slot_b.Send the price listChat MessageOur current prices:Look up the orderAPI RequestGET /orders/{{order_no}}Hand back to the assistantChat MessageSure. What would you like to know? Book a valuationGet a quoteTrack my orderAnything else
A Menu node routes by itself. Each option is a port, and the run leaves by the one the visitor picked.

Anything else is taken whenever the reply is not one of the options: a typed question, a photo, or a conversation going somewhere the menu did not offer. Nothing is guessed, so a reply of "yeah" does not resolve to an option called "Yes". Connect that port to something useful, because it is where every visitor who wanted something you did not offer ends up.

Switch the toggle off when the options all lead to the same next step. The node keeps one Next port, still asks, still waits, and still writes .label and .value; only the routing changes, so a workflow can be switched either way without anything downstream being re-pointed. There is no Anything else port with branching off, so a visitor who typed something of their own leaves by Next with .value empty, which is how a later Decision node tells the two apart.

Read Which Option They Picked#

The answer is the branch, so most workflows read nothing at all. Where a later node needs the answer as text, both halves are stored under the node's label: .label holds the option's label, or the visitor's own words on the Anything else branch, and .value holds the option's value, or nothing when no option matched.

A node labelled What they need writes {{What_they_need.label}} and {{What_they_need.value}}, and the variable picker of every node downstream offers both.

What Each Channel Draws#

One authored menu, three renderings. The editor tells you which one applies as you type, under How this arrives.

The same Menu node, three channels C Patio Warehouse Typically replies instantly What can I help with? View servicesBook a valuationA free 30-minute visitGet a quoteSent by email within a dayTrack my orderWhere your delivery is nowChange a bookingMove or cancel a visitTalk to a person Web widget Every option is visible at once, with itsdescription, under the menu title. P Patio Warehouse business account What can I help with? ☰ View services View services Book a valuationA free 30-minute visitGet a quoteSent by email within a dayTrack my orderWhere your delivery is nowChange a bookingMove or cancel a visitTalk to a person WhatsApp One button opens a sheet of up to ten rows.The extra tap is what buys the descriptions. P patiowarehouse Instagram What can I help with?1. Book a valuation A free 30-minute visit2. Get a quote Sent by email within a day3. Track my order Where your delivery is now4. Change a booking Move or cancel a visit5. Talk to a personReply with the number or the option. Instagram Written into the message, one number peroption. A reply of “4” means the same optionit does on the other two.
One Menu node with five options, as each channel delivers it. The descriptions survive everywhere; only the way the options are opened changes.
The menu you wroteOn WhatsAppOn the web and Instagram
Three or fewer options, no descriptionsReply buttons, with nothing to open firstThe full list on the web, a numbered list on Instagram
Four to ten options, or any descriptionA menu behind one buttonThe full list on the web, a numbered list on Instagram

Reply buttons have no room for a description, so a single description anywhere turns the whole set into a menu rather than dropping what you wrote. Instagram always writes the options into the message as a numbered list, because an interactive payload renders as an empty bubble on Instagram Lite and takes the message text with it. See what differs per channel.

Whichever rendering a visitor gets, the answer reaches this node the same way, and replying with either the number or the option text matches.

Write Options That Read as Options in Prose#

They arrive as a numbered list on Instagram, so "tap the button below" is wrong there. Put the difference between two options in the description: "Get a quote" and "Book a valuation" look interchangeable until one of them says "sent by email within a day".

Common Questions#

How Do I Read Which Option They Picked?#

Follow the port. Each option is its own connection, so the branch itself is the answer. Where a later node needs the answer as text, read .label or .value.

Can I Use a Decision Node Instead of the Ports?#

Yes, and that is what switching branching off is for. Give the node its single Next port, put a Decision node after it, and compare .value. Six options leading to two outcomes reads better as one comparison than as six wires crossing the canvas.

What Happens If the Visitor Types Something Else?#

With branching on, the run leaves by Anything else with what they said in .label. With it off, it leaves by Next and .value is empty. Nothing is matched approximately either way.

Can I Group the Options Under Headings?#

No. Every option is a row of the same kind on every channel, and the description line is where the difference between two of them goes.

Can a Menu Be the First Thing a Visitor Sees?#

It can, though conversation starters are the better fit for an opening move. They are configured in bot settings and reach every channel. A menu is for a point in a conversation where the choices are known.

Does the Menu Repeat If They Ignore It?#

No. A visitor who says something unrelated leaves by Anything else and the run continues from there. To ask again, connect that port back to this node.