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://meni.ge
- 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://meni.ge
- 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:
meni.ge
This will allow Telegram Web App to work on your domain and all its subdomains (e.g., locationid.meni.ge).
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 meni.ge. You can find it in the admin panel or in the URL likehttps://LOCATION_ID.meni.ge.
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.meni.ge/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.meni.ge 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 meni.ge is allowed via /setdomain |
| White screen | Make sure the Web App URL is set to https://meni.ge (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) |