Коротко
Чтобы заявки и заказы с сайта на
Разберём, как получать заявки и заказы с сайта на
Зачем уведомления о заявках в Telegram
- Скорость ответа. Сообщение в Telegram видно сразу на телефоне, а письмо может ждать в почте или попасть в спам. Чем быстрее менеджер перезвонит, тем выше шанс получить клиента.
- Общий чат отдела продаж. Заявка приходит в группу, где видно, кто её взял.
- Дублирование. Если почта не дошла, заявка всё равно не потеряется: она хранится на сайте и приходит в Telegram.
Почему письма с сайта уходят в спам и как это исправить, мы разбирали в статье «Почему письма с сайта попадают в спам: SPF, DKIM и DMARC».
Способы отправки в Telegram
| Способ | Плюсы | Минусы |
|---|---|---|
| Сайт сам отправляет в Telegram Bot API | просто, без посредников | с российских хостингов адрес api.telegram.org бывает недоступен — сообщения теряются |
| Через посредника на Cloudflare Workers | работает при недоступности Telegram с хостинга, токен бота не хранится на сайте | нужно один раз настроить Worker |
| Готовый модуль из Маркетплейса | настройка без программиста | та же проблема доступности, если модуль обращается к Telegram напрямую |
| Через CRM Битрикс24 | заявки сразу в CRM, уведомления в мобильном приложении Битрикс24 | нужна CRM; это уведомления Битрикс24, а не Telegram |
Ниже — схема с посредником: она надёжнее всего работает с любым хостингом.
Как устроена схема
- Посетитель отправляет форму или оформляет заказ на сайте.
- Сайт отправляет короткий текст заявки на адрес Worker в Cloudflare с секретным ключом.
- Worker проверяет ключ и пересылает сообщение боту в Telegram.
- Бот публикует сообщение в личном чате или группе отдела продаж.
Бесплатного тарифа Cloudflare Workers хватает с запасом: он включает до 100 000 запросов в сутки, а заявок у сайта — единицы и десятки.
Шаг 1. Создайте бота
- В Telegram откройте @BotFather и отправьте команду
/newbot, задайте имя и адрес бота. - Сохраните токен вида
123456789:AA...— это пароль бота, никому его не передавайте. - Напишите своему боту
/start. Если уведомления нужны в группе — добавьте бота в группу и напишите в ней/start@имя_бота.
Шаг 2. Создайте Worker в Cloudflare
- В панели Cloudflare откройте Workers & Pages → Create → Create Worker, задайте имя и нажмите Deploy.
- Откройте Edit code и вставьте код Worker (пример ниже), снова Deploy.
- В Settings → Variables and Secrets добавьте значения типа Secret:
BOT_TOKEN— токен бота,SECRET— длинный случайный ключ из латинских букв и цифр,CHAT_ID— id чата. Нажмите Deploy, иначе переменные не применятся.
Минимальный код Worker:
export default {
async fetch(request, env) {
if (request.method !== 'POST' || request.headers.get('x-key') !== env.SECRET) {
return new Response('Forbidden', { status: 403 });
}
const { text } = await request.json();
const r = await fetch(`https://api.telegram.org/bot${env.BOT_TOKEN}/sendMessage`, {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({ chat_id: env.CHAT_ID, text: String(text).slice(0, 4000), parse_mode: 'HTML' }),
});
return new Response(r.ok ? 'ok' : 'error', { status: r.ok ? 200 : 502 });
},
};В рабочей версии стоит добавить сравнение ключа без утечки по времени, отправку в несколько чатов и служебный адрес, который показывает id чатов, написавших боту.
Шаг 3. Узнайте id чата
Id чата можно получить методом Bot API getUpdates: он возвращает последние сообщения боту, в каждом есть chat.id. У личного чата id положительный, у группы — отрицательный, например -1001234567890, копируйте его вместе с минусом. Учтите две особенности:
- Telegram хранит такие сообщения только 24 часа — если список пуст, напишите боту
/startещё раз. - В группе бот по умолчанию видит только команды, поэтому пишите
/start@имя_бота, а не обычный текст.
Шаг 4. Отправка заявок с сайта на 1С-Битрикс
Удобнее всего перехватить почтовые события: каждая форма и каждый заказ в /local/php_interface/init.php:
use Bitrix\Main\EventManager;
function tg_notify($text)
{
$ch = curl_init('https://имя-worker.поддомен.workers.dev/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json', 'X-Key: ' . TG_SECRET],
CURLOPT_POSTFIELDS => json_encode(['text' => $text]),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 5,
]);
$ok = curl_exec($ch) !== false && curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200;
curl_close($ch);
return $ok;
}
EventManager::getInstance()->addEventHandlerCompatible('main', 'OnBeforeEventAdd',
function ($event, $lid, $fields) {
$titles = ['FEEDBACK_FORM' => 'Заявка с сайта', 'SALE_NEW_ORDER' => 'Новый заказ'];
if (!isset($titles[$event])) {
return;
}
$text = '<b>' . $titles[$event] . '</b>';
foreach (['ORDER_ID' => 'Заказ №', 'AUTHOR' => 'Имя', 'PRICE' => 'Сумма'] as $key => $name) {
if (!empty($fields[$key])) {
$text .= "\n" . $name . ': ' . htmlspecialchars($fields[$key], ENT_COMPAT);
}
}
tg_notify($text);
}
);- Ключ
TG_SECRETхраните вне репозитория, например в/bitrix/.settings_extra.phpили переменной окружения. - Список событий дополните своими: веб-формы, заказ обратного звонка, «купить в один клик». Коды событий видны в «Настройки → Настройки продукта → Почтовые и СМС события».
- Текст экранируйте: Telegram в режиме HTML не принимает часть HTML-сущностей и отклоняет сообщение с некорректной разметкой.
- Таймаут в несколько секунд обязателен: если Telegram не отвечает, форма не должна «висеть» у посетителя.
Если доработку делать некому, её можно заказать как доработку сайта на
Персональные данные
Telegram и Cloudflare — зарубежные сервисы, а имя, телефон и e-mail из заявки — персональные данные. Передача их за рубеж регулируется законом 152-ФЗ. Самый простой способ снизить риски — отправлять в Telegram минимум: тип заявки, номер заказа, сумму и ссылку на заявку в админке, а контакты смотреть уже на сайте или в CRM. Если в уведомлении нужны контакты, согласуйте схему с юристом и отразите её в политике обработки персональных данных. Подробнее — на странице «Доработка сайта по 152-ФЗ».
Проверка и частые ошибки
| Ошибка | Причина | Что сделать |
|---|---|---|
| 403 от Worker | ключ на сайте не совпадает с SECRET | проверить ключ в обоих местах, без пробелов |
| Unauthorized от Telegram | неверный токен бота | скопировать токен из @BotFather заново |
| chat not found | неверный CHAT_ID или бот не добавлен в группу | получить id заново, у группы — с минусом |
| can't parse entities | некорректная HTML-разметка в тексте | экранировать данные из формы |
| Переменные не действуют | после добавления не нажат Deploy | нажать Deploy в настройках Worker |
| Нет уведомлений, ошибок тоже нет | событие формы не в списке обработчика | добавить код почтового события формы |
Чек-лист
- Создан бот, токен сохранён только в Cloudflare.
- Боту написали
/startв личном чате или группе. - Worker создан, переменные
BOT_TOKEN,SECRET,CHAT_IDзаданы, нажат Deploy. - На сайте добавлен обработчик почтовых событий с таймаутом и экранированием.
- Ключ хранится вне репозитория.
- В уведомление уходят только нужные данные.
- Тестовая заявка и тестовый заказ пришли в Telegram.
- Почта о заявках продолжает работать как резервный канал.
Сколько стоит настройка
Настройка бота, Worker и отправки заявок с сайта на
Абонентская поддержка сайта на
- Поддержка «Старт»20 000 ₽ в месяц5 часов в месяцПодключить
- Поддержка «Стандарт»40 000 ₽ в месяц10 часов в месяцПодключить
- Поддержка «Бизнес»80 000 ₽ в месяц20 часов в месяцПодключить
Час работ — 4 000 ₽, при оплате за 12 месяцев — 3 500 ₽. В часы входят обновления PHP, ядра и модулей, исправления и доработки. Подробнее о тарифах
Если нужен не только приём уведомлений, а полноценный бот для клиентов — смотрите «Чат-боты для магазина и CRM».
Как настроить уведомления о заявках в Telegram для сайта на 1С-Битрикс
- Создайте ботаВ @BotFather командой /newbot; сохраните токен и напишите боту /start.
- Создайте Worker в CloudflareВставьте код пересылки сообщений и нажмите Deploy.
- Задайте переменныеBOT_TOKEN, SECRET и CHAT_ID типа Secret, затем снова Deploy.
- Узнайте id чатаЧерез getUpdates: у группы id отрицательный, сообщения хранятся 24 часа.
- Добавьте обработчик на сайтОбработчик OnBeforeEventAdd в init.php отправляет нужные события в Worker с таймаутом.
- ПроверьтеТестовая заявка и заказ приходят в Telegram, почта остаётся резервным каналом.
Источники
Подготовлено командой WRP — Золотого партнёра












