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
- Enter the bot name (e.g.,
Meni Menu Bot) - Enter the username (e.g.,
MeniMenuBot) โ must end withBot - 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
/revokecommand in BotFather.
Step 2 โ Create the Mini App
Send BotFather the command:
/newapp
- Select the bot from the list
- Title โ application name (e.g.,
Meni) - Description โ description (e.g.,
Digital restaurant menu) - Photo โ upload a 640ร640 px image (app icon)
- GIF โ animation (optional). To skip, send
/empty - Web App URL โ specify the address of your client application:
https://menio.ru
- 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
- Select the bot
- Send the URL:
https://menio.ru
- Enter the button text (e.g.,
Open Menuor๐ 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:
menio.ru
This will allow Telegram Web App to work on your domain and all its subdomains (e.g., locationid.menio.ru).
Deep Links โ links to a specific restaurant
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_IDis the identifier of your location in menio.ru. You can find it in the admin panel or in the URL likehttps://LOCATION_ID.menio.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.menio.ru/en"
}
}]]
}
Option 2 โ Deep Link button
{
"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.menio.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
- Open the link
https://t.me/YourBot/menuon your phone - Click Start (if opening the bot for the first time)
- Click the ๐ Menu button in the bottom panel of the chat
- Make sure the app opened and loaded the menu
- 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 menio.ru is allowed via /setdomain |
| White screen | Make sure the Web App URL is set to https://menio.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) |