> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dmly.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Set up a persistent menu

> Give Facebook, Instagram and Telegram contacts an always-visible menu whose items open a link or start a flow.

A persistent menu is a short list of options that stays available in the conversation, so a
contact can get to your booking flow or your price list without typing anything. You build it
in **Configurations → Bot Setup**, and each item can open a link or start one of your flows.

## It exists on three channels only

<Note>
  The persistent menu is a Facebook, Instagram and Telegram feature. It is not a WhatsApp
  feature and not a Live Chat one, and the section doesn't appear when either is selected.
</Note>

On the other channels, the nearest equivalents live elsewhere:

* **WhatsApp** — **Commands** (slash commands such as `/menu`) on **Bot Setup → Conversational
  Components**. See [Bot setup](/automation/bot-setup) and [WhatsApp](/channels/whatsapp).
* **Live Chat** — **Quick replies** in the widget's **Behavior** panel. See
  [Live Chat widget](/channels/livechat-widget).

## Build the menu

<Steps>
  <Step title="Select the channel">
    Open **Configurations → Bot Setup** and pick the Facebook Page, Instagram account or
    Telegram bot in the channel selector at the top. The page always shows the selected
    channel's settings.
  </Step>

  <Step title="Open the menu section">
    Select **Persistent menu**, then turn on **Show a persistent menu in the conversation**.
  </Step>

  <Step title="Add your items">
    Select **Add item**, give it a **Label** — the words the contact taps — and choose what it
    does. You get three items per level; once you reach it, the page says **Meta allows 3 items
    per level.** and the add button goes away.
  </Step>

  <Step title="Save">
    Select **Save changes**. Saving is what pushes the menu out to Facebook, Instagram or
    Telegram — until you save, nothing has changed for your contacts.
  </Step>
</Steps>

<Tip>
  Keep labels short and concrete — `Book a visit`, `Prices`, `Talk to a human`. Facebook and
  Instagram trim a menu label to 30 characters, and on Telegram the label also becomes the
  command name.
</Tip>

## What an item can do

| Type           | What happens when a contact taps it                                                                                                                                                                                                                     |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Open URL**   | Opens the web address you enter.                                                                                                                                                                                                                        |
| **Postback**   | **Facebook and Instagram:** sends a postback back to your bot instead of opening a link. Nothing in Bot Setup answers it — an active automation has to. **Telegram:** DMLY replies to the contact with the payload text itself, and no automation runs. |
| **Start flow** | Starts one of your flows.                                                                                                                                                                                                                               |
| **Submenu**    | Opens a nested list of items instead of doing anything itself.                                                                                                                                                                                          |

You can also select **Convert to submenu** on an existing item to nest options underneath it,
up to three levels deep.

<Note>
  **Postback** is the one that surprises people. On Facebook and Instagram it has no reply of its
  own, so a tap does nothing unless an active automation picks it up — and the automation matches
  the item's **Label**, not the `PAYLOAD` value you type. A keyword flow on `BOOK` fires only if
  the item's label is `BOOK`; setting the payload to `BOOK` does nothing on its own. If you want a
  tap to reliably do something, use **Start flow**.
</Note>

## How a menu item starts a flow

Set the item's type to **Start flow** and pick the flow from **Choose a flow…**. A tap then
starts that flow for the contact directly — the flow's own trigger doesn't have to match, so
you don't need a keyword for it.

The picker only lists flows that are **built in the flow builder**, **active**, and **on the
channel you have selected**. That gives you the two things to check when a menu item does
nothing:

* **A draft flow won't be in the list.** Publish it and set it active first. See
  [Flow builder](/automation/flow-builder).
* **Pausing a flow later breaks its menu item silently.** The item stays in the menu and stays
  tappable; the tap just starts nothing. The menu doesn't update itself when a flow's status
  changes.

Ice breakers work the same way and can point at the same flows — see
[Icebreakers](/automation/icebreakers).

<Note>
  If the bot is paused for a contact, a **Start flow** item won't start the flow for them. Pause
  and resume the bot per contact from the [Inbox](/inbox/overview).
</Note>

## What Telegram does differently

Telegram has no persistent menu of its own, so DMLY builds the closest thing: each item becomes
a `/command` in the bot's command list, reachable from the ☰ button next to the message box.
That means a few differences worth knowing before you design the menu:

* **Your labels become commands.** `Book a visit` is registered as `/book_a_visit`, with the
  label as its description. Two items whose labels reduce to the same command name — the second
  one is dropped.
* **Submenus are flattened.** Telegram's command list has no nesting, so the items inside a
  submenu are listed alongside the top-level ones rather than under them.
* **`/start` is always offered first**, described as `Start / main menu`. It opens your welcome
  message. You don't add it, and you can't remove it.
* **Open URL doesn't open anything.** Telegram sends the label and the link back as an ordinary
  message for the contact to tap.
* **Postback never reaches your automations.** DMLY replies to the contact with the `PAYLOAD` text
  you typed — or the label, if you left the payload empty — and stops there. No automation runs, so
  the Facebook and Instagram advice above doesn't apply.

**Start flow** works the same on Telegram as it does on Facebook and Instagram.

## Turning the menu off

Turn off **Show a persistent menu in the conversation** and select **Save changes**. That
removes the menu from Messenger or Instagram, and on Telegram it clears the bot's command list
and the ☰ button. Leaving the toggle on but deleting every item does the same thing.

<Accordion title="I saved, but no menu appears in the conversation">
  Check the save message first — if the push to Facebook, Instagram or Telegram failed, the
  page tells you at the moment you save and points you at the logs. Open
  [Logs](/troubleshooting/logs) and look for the sync entry.

  If the save succeeded, look at your items. An item with an empty **Label** is skipped, and an
  **Open URL** item with no address is dropped, so a menu of half-finished items can sync as an
  empty menu — which removes it.
</Accordion>

<Accordion title="A menu item is there but tapping it does nothing">
  Almost always a **Start flow** item whose flow is no longer active or published, or a Facebook
  or Instagram **Postback** item with no automation answering it — check that the automation's
  keyword matches the item's **Label**, not its payload. Check the flow's status in
  [Automation](/automation/overview), and see
  [Automation not triggering](/troubleshooting/automation-not-triggering).
</Accordion>

<Accordion title="The old menu is still showing after I removed it">
  Facebook and Instagram keep the menu on the Page or account itself, not in DMLY. Turning the
  toggle off and saving is what removes it — disconnecting the channel doesn't, so remove the
  menu before you disconnect a Page or account you're finished with.
</Accordion>
