Bitrix Product Catalog in Telegram: Mini App vs Inline Bot

Clients often get lost on the way from a Telegram channel to the website, and the purchase never happens. We set up a product catalog right in the messenger for stores on 1C-Bitrix to shorten this path. Our team delivers the project turnkey—from choosing the right format to implementation and ongoing support.

Our competencies:

Frequently Asked Questions

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_CONTENT or 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.