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://meni.ge
  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://meni.ge
  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:

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_ID is the identifier of your location in meni.ge. You can find it in the admin panel or in the URL like https://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

  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 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)

Useful links