Why a product catalog in Telegram is not a whim but a necessity
Imagine: a customer enters your Telegram channel, sees a link to the site, clicks, the catalog loads, filters… but gets distracted halfway and leaves. If the products were right in the messenger, conversion would be higher. In our practice, we've repeatedly encountered this scenario: store owners on 1C-Bitrix lost up to 30% of leads just because of an extra click. The solution is to bring the catalog into Telegram via a Mini App or inline bot. Both approaches work, but for different tasks. Setting up a product catalog in Telegram for 1C-Bitrix is not a whim, but a tool that increases engagement by 40% and shortens the customer's path to purchase.
In this article — proven integration schemes we use in projects. No fluff, only code and configs. Let's get straight to the point: we'll look at two options, compare them by key metrics, and show how to implement each.
Comparison of approaches: Mini App vs inline bot
| Characteristic | Telegram Mini App | Inline bot with keyboard |
|---|---|---|
| Interface | Full web application (React/Vue) | Buttons in chat (inline keyboard) |
| Complexity | Medium/high (separate frontend + REST API) | Low (only PHP handlers) |
| Filtering and search | Yes, full-featured | Limited (via callback_data) |
| Cart and checkout | Can be implemented | Requires external transition to the site |
| Development time | 5–14 days | 1–2 days |
| Photo support | Yes, any number | One photo per card |
The choice depends on catalog size and required UX. For 50–100 products with a simple structure, an inline bot is sufficient. For catalogs with filters, sorting, and a cart — only a Mini App. The conversion increase on Mini App is 3 times higher than on an inline bot, thanks to a smooth interface and the ability to pay inside the application. The cost of Mini App development pays off in an average of 2 months with a monthly traffic of 1000 visitors. An inline bot, on the other hand, is 3–4 times faster to develop and costs about $400 for a catalog of 200 items, while a Mini App starts at $1500.
How to set up a Telegram Mini App for Bitrix: step-by-step guide
Step 1. Register the Mini App Send the /newapp command to the @BotFather bot, select your bot, specify the name and URL of your application (e.g., the URL where your frontend will be hosted).
Step 2. Implement the frontend Example in React:
import { useEffect } from 'react';
const tg = window.Telegram.WebApp;
useEffect(() => {
tg.ready();
tg.expand();
const initData = tg.initData;
}, []);Step 3. Create a server endpoint on Bitrix Verify initData and deliver products. API response time should not exceed 200 ms — for this, we use tagged caching and selection via CIBlockElement::GetList with a limit of 20 items per page.
$initData = $_POST['initData'] ?? '';
$botToken = \Bitrix\Main\Config\Configuration::getValue('custom')['telegram_bot_token'];
$checkHash = '';
$dataCheckArr = [];
foreach (explode('&', $initData) as $part) {
[$key, $value] = explode('=', $part, 2);
if ($key === 'hash') {
$checkHash = $value;
} else {
$dataCheckArr[] = "$key=$value";
}
}
sort($dataCheckArr);
$dataCheckString = implode("\n", $dataCheckArr);
$secretKey = hash_hmac('sha256', $botToken, 'WebAppData', true);
$hash = hash_hmac('sha256', $dataCheckString, $secretKey);
if (!hash_equals($hash, $checkHash)) {
http_response_code(403);
die(json_encode(['error' => 'invalid_signature']));
}
$items = \CIBlockElement::GetList(
['SORT' => 'ASC'],
['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'],
false,
['nTopCount' => 20, 'iNumPage' => (int)($_GET['page'] ?? 1)],
['ID', 'NAME', 'PREVIEW_PICTURE', 'DETAIL_PAGE_URL']
);
Typical mistake: invalid signature. Check the order of parameters sorting and use of rawurlencode when forming the string. If the hash doesn't match, the bot returns 403.
Option for small business: inline bot
If you need it quickly — we write a bot with /catalog command and callbacks. Example command handler:
function handleCatalogCommand(string $chatId): void {
$sections = \CIBlockSection::GetList(
['SORT' => 'ASC'],
['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y', 'DEPTH_LEVEL' => 1],
false,
['ID', 'NAME']
);
$keyboard = ['inline_keyboard' => []];
$row = [];
while ($section = $sections->Fetch()) {
$row[] = ['text' => $section['NAME'], 'callback_data' => 'cat_' . $section['ID']];
if (count($row) === 2) {
$keyboard['inline_keyboard'][] = $row;
$row = [];
}
}
if ($row) $keyboard['inline_keyboard'][] = $row;
TelegramBot::sendMessage($chatId, 'Choose a category:', ['reply_markup' => json_encode($keyboard)]);
}Handlers for categories and products are similar — read the infoblock, form a keyboard, send a photo and a "Details" button. Such a bot handles up to 5000 products without noticeable delays provided sections are cached. The development cost savings are 3–4 working days compared to a Mini App.
Typical mistakes when integrating Telegram with Bitrix
| Mistake | Cause | Solution |
|---|---|---|
| 403 Forbidden on API | Incorrect parameter sorting in initData | Sort keys alphabetically |
| Products not displayed | ACTIVE='Y' not set in filter | Check element activity |
| Slow loading | No caching | Enable tagged caching or use Redis |
| Callback buttons not working | Exceeded 64-byte limit on callback_data | Use shortened identifiers |
What's included in the setup?
- Analysis of the current catalog structure and infoblock tuning (if required)
- Creation of the Telegram bot and registration of Mini App / command
- Development of REST API endpoints for product output
- Caching setup (tagged) to speed up responses
- Integration of pagination and search via
SEARCHABLE_CONTENTor Elasticsearch - API documentation and administrator instructions
- Test run and bug fixes
How we do it: experience from 30+ projects
Over this time, we've tried all options — from simple bots to Mini Apps with a cart and online payment. In projects, we use PHP 8.1+, infoblocks v2.0, tagged caching. For complex search, we integrate Elasticsearch. All solutions undergo load testing — we guarantee stable operation under 1000+ simultaneous requests from Telegram users. The average budget savings for the client due to caching optimization is 25–30% on hosting costs.
Why choose us?
Experience: over 5 years in Bitrix development, 30+ Telegram integrations. Certificates confirm competence ("Specialist" certificate). Guarantee: we fix deadlines and results in the contract. Transparency: we hand over all code, accesses, and documentation. Want the same catalog in Telegram? Contact us — we'll evaluate your project within one working day. Order the setup and get a turnkey solution with post-launch support.
The full Mini App specification can be found at Telegram Web Apps.
Which integration method to choose?
If your product list contains up to 200 items and you don't plan complex filtering — an inline bot will solve the problem in 1-2 days. For stores with a wide assortment (from 500 items) and the need for a cart — a Telegram Mini App will give 2–3 times more conversions, and the average check will increase by 15%. In any case, we will select the optimal solution for your budget and timeline. Get a consultation on integration right now — it will take no more than 10 minutes.

