M cenaly.ru
🔗 Integrations

✈️ Telegram Mini App — Setup Guide

How to connect your restaurant menu as a Telegram Mini App with deep links and inline buttons

Documentation

Telegram Mini App — Step-by-Step Guide

What is it?#

Telegram Mini App allows your customers to open the restaurant's digital menu directly inside Telegram — without installing apps or switching to a browser. The menu looks like a native part of Telegram: it adapts to the user's theme, supports the Back button and gestures.

Benefits#

  • 📱 Inside Telegram — customers don't need to switch to a browser
  • 🎨 Native look — colors, fonts and theme adapt to Telegram
  • 🔗 Deep Links — direct link to a specific restaurant's menu
  • 🌍 Auto language — language is taken from the user's Telegram settings
  • 🍪 No cookies — cookie banner is not shown inside Telegram

Quick Start#

Step 1 — Create a bot#

Open @BotFather in Telegram and send:

/newbot
  1. Enter the bot name (e.g., Meni Menu Bot)
  2. Enter the username (e.g., MeniMenuBot) — must end with Bot
  3. Save the received Bot Token (format: 123456789:ABCdefGHI...)

💡 If the bot is already created, proceed to Step 2.

Why do you need a Bot Token?#

The Bot Token is a secret key for programmatic bot management via the Telegram Bot API. For basic Mini App setup (steps 2–4) it is not required — everything is done through BotFather. But you will need it if you want to:

  • Send messages to customers — order status notifications, promotions, welcome messages
  • Add inline buttons to bot messages (e.g., a "📋 Open menu" button — see section below)
  • Create a Telegram bot for receiving orders — the bot can receive and process orders
  • Set up a Webhook — receive events from Telegram (button presses, user commands)
  • Integrate with CRM or POS system — automatic order processing through the bot

🔒 Don't publish the Bot Token — anyone who has the token can control your bot. If the token is compromised, revoke it with the /revoke command in BotFather.


Step 2 — Create the Mini App#

Send BotFather the command:

/newapp
  1. Select the bot from the list
  2. Title — application name (e.g., Meni)
  3. Description — description (e.g., Digital restaurant menu)
  4. Photo — upload a 640×640 px image (app icon)
  5. GIF — animation (optional). To skip, send /empty
  6. Web App URL — specify the address of your client application:
https://cenaly.ru
  1. Short Name — short name for the link (e.g., menu)

After this you will have a working link like:

https://t.me/YourBot/menu

Step 3 — Add a "Menu" button to the bot chat#

Send BotFather:

/setmenubutton
  1. Select the bot
  2. Send the URL:
https://cenaly.ru
  1. Enter the button text (e.g., Open Menu or 📋 Menu)

Now when opening a chat with the bot, a button will appear at the bottom of the screen that opens your application.


Step 4 — Allow the domain#

Send BotFather:

/setdomain

Select the bot and specify the domain:

cenaly.ru

This will allow Telegram Web App to work on your domain and all its subdomains (e.g., locationid.cenaly.ru).


Telegram supports the startapp parameter, which is passed to the application when opened. Use it for links to a specific restaurant:

Link What opens
t.me/YourBot/menu Home page
t.me/YourBot/menu?startapp=LOCATION_ID Menu of a specific restaurant
t.me/YourBot/menu?startapp=LOCATION_ID__ru Menu in Russian
t.me/YourBot/menu?startapp=LOCATION_ID__en Menu in English

Examples#

If your restaurant's LOCATION_ID is lnc2w74z:

https://t.me/YourBot/menu?startapp=lnc2w74z
https://t.me/YourBot/menu?startapp=lnc2w74z__ru
https://t.me/YourBot/menu?startapp=lnc2w74z__en

📌 LOCATION_ID is the identifier of your location in cenaly.ru. You can find it in the admin panel or in the URL like https://LOCATION_ID.cenaly.ru.


Inline buttons from the bot#

If your bot sends messages to customers, you can add an inline button that will open the menu:

Option 1 — Web App button (opens immediately)#

{
  "inline_keyboard": [[{
    "text": "📋 Open menu",
    "web_app": {
      "url": "https://LOCATION_ID.cenaly.ru/en"
    }
  }]]
}
{
  "inline_keyboard": [[{
    "text": "📋 Open menu",
    "url": "https://t.me/YourBot/menu?startapp=LOCATION_ID__en"
  }]]
}

What works automatically#

After connecting, the following features are automatically enabled inside Telegram:

Feature Description
🎨 Theme App colors adapt to the Telegram theme (light/dark)
◀️ Back button Native Telegram button appears when opening a product card
📏 Viewport The application stretches to full screen
🔒 Close protection Vertical swipe won't accidentally close the app
🌍 Auto language Language is determined from the Telegram profile, unless set explicitly
🍪 Cookies Cookie banner is not displayed inside Telegram

QR codes for restaurants#

Existing QR codes with URLs like https://lnc2w74z.cenaly.ru will continue to work as usual — through the browser.

For additional Telegram integration, you can place a second QR code on tables with a bot link:

https://t.me/YourBot/menu?startapp=lnc2w74z

Verification#

  1. Open the link https://t.me/YourBot/menu on your phone
  2. Click Start (if opening the bot for the first time)
  3. Click the 📋 Menu button in the bottom panel of the chat
  4. Make sure the app opened and loaded the menu
  5. Try opening the deep link: https://t.me/YourBot/menu?startapp=LOCATION_ID

Common problems#

Problem Solution
App doesn't open Check that the domain cenaly.ru is allowed via /setdomain
White screen Make sure the Web App URL is set to https://cenaly.ru (HTTPS is required)
startapp doesn't work Check the format: LOCATION_ID (no spaces or special characters). Language separator is double underscore __
Theme not applied Telegram Mini App SDK must be connected (update the client application)