Заявки в Telegram приходят быстрее, чем на почту, и их сразу видит вся команда. Есть три способа настроить это: включить интеграцию в настройках платформы сайта, написать небольшой скрипт с ботом или подключить готовый сервис. Разберём каждый — с рабочим кодом и типичными ошибками.
Какой способ выбрать
| Способ | Кому подходит | Что нужно |
|---|---|---|
| Настройки платформы | Сайт на конструкторе или WordPress | Найти интеграцию в настройках форм или плагин |
| Свой скрипт с ботом | Есть разработчик и сервер с PHP, Node.js или Python | Бот, chat id, серверный скрипт |
| Готовый сервис | Сайт на своём коде, бэкенд для форм писать не хочется | Подключить скрипт сервиса и бота |
Шаг для любого способа: создайте бота
Заявки в Telegram отправляет бот. Создать его можно за пару минут:
- Откройте в Telegram @BotFather и отправьте команду
/newbot. - Придумайте имя бота и адрес — он должен заканчиваться на
bot, напримерmyshop_leads_bot. - BotFather пришлёт токен — строку вида
123456789:AA…. Это ключ к боту: не публикуйте его и не вставляйте в код страницы. - Найдите своего бота и нажмите «Старт». Бот в Telegram не может написать человеку первым — без этого шага сообщения не придут.
Способ 1. Настройки платформы сайта
У многих конструкторов сайтов и CRM подключение Telegram есть прямо в настройках приёма заявок: вы вставляете токен бота или авторизуете официального бота платформы. Для WordPress есть плагины, которые отправляют заявки из популярных плагинов форм в Telegram. Ищите в справке своей платформы раздел про «получение данных из форм» или «уведомления».
Плюс — ничего не нужно программировать. Минус — способ работает только внутри своей платформы: при переезде на другой сайт всё придётся настраивать заново, а иногда приём заявок доступен только на платном тарифе.
Способ 2. Свой скрипт с ботом
Если сайт сделан на своём коде и есть сервер, заявку можно отправить в Telegram через Bot API — метод sendMessage. Нужны токен бота и chat id получателя.
Как узнать chat id
- Напишите боту любое сообщение — или добавьте бота в группу и напишите в ней.
- Откройте в браузере
https://api.telegram.org/bot<токен>/getUpdates, подставив свой токен. - В ответе найдите
"chat":{"id":…}. У личного чата это положительное число, у группы — отрицательное (у больших групп начинается с-100).
Если вместо списка сообщений пришла ошибка про webhook, у бота уже настроен webhook и getUpdates для него не работает. Снимите webhook методом deleteWebhook или создайте отдельного бота для заявок.
Обработчик на PHP
Скрипт принимает данные формы, проверяет поле-ловушку и отправляет сообщение. Токен и chat id берутся из переменных окружения сервера, а не хранятся в файле, который может попасть в общий доступ.
<?php
// send.php — лежит на вашем сервере рядом с сайтом
$token = getenv('TG_BOT_TOKEN'); // токен — в настройках сервера, не в коде страницы
$chatId = getenv('TG_CHAT_ID');
// Скрытое поле-ловушка: человек его не видит, бот заполняет
if (!empty($_POST['website'])) { exit; }
$name = trim($_POST['name'] ?? '');
$phone = trim($_POST['phone'] ?? '');
$message = trim($_POST['message'] ?? '');
if ($phone === '') {
http_response_code(400);
exit('Укажите телефон');
}
// Простой текст без parse_mode — не нужно экранировать HTML
$text = "Заявка с сайта\nИмя: $name\nТелефон: $phone\n\n" . mb_substr($message, 0, 3000);
$ch = curl_init("https://api.telegram.org/bot$token/sendMessage");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => ['chat_id' => $chatId, 'text' => $text],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$ok = json_decode((string) curl_exec($ch), true)['ok'] ?? false;
http_response_code($ok ? 200 : 502);
echo $ok ? 'Спасибо! Мы скоро свяжемся' : 'Не получилось отправить — позвоните нам';<form action="/send.php" method="post">
<input name="name" placeholder="Имя">
<input name="phone" type="tel" placeholder="Телефон" required>
<textarea name="message" placeholder="Сообщение"></textarea>
<!-- ловушка для ботов: скрыта от людей -->
<input name="website" tabindex="-1" autocomplete="off" style="position:absolute;left:-9999px">
<button>Отправить</button>
</form>Частые ошибки
- Токен в JavaScript на странице. Его увидит любой посетитель и сможет рассылать сообщения от имени бота. Отправка — только с сервера.
- Нет защиты от спама. Форма, которая шлёт всё подряд в Telegram, через неделю начнёт присылать рекламу. Минимум — поле-ловушка и ограничение числа отправок с одного адреса.
- Разметка без экранирования. С
parse_mode=HTMLсимвол<в сообщении посетителя ломает отправку. Шлите простой текст или экранируйте данные. - Длинное сообщение. Telegram принимает до 4096 символов в одном сообщении — обрезайте текст заявки.
- Заявка только в Telegram. Если отправка не прошла, заявка потеряна. Сохраняйте её ещё и в базу или на почту.
Способ 3. Готовый сервис без бэкенда
Если сайт на своём коде, а писать и поддерживать обработчик не хочется, приём заявок можно отдать сервису. Так работают формы Sitecog: скрипт на странице перехватывает отправку любой формы, сохраняет заявку в CRM и отправляет уведомление вашему боту.
<script src="https://widget.sitecog.com/widget.js" defer></script>
<form data-crm-lead="callback">
<input name="name" placeholder="Имя">
<input name="phone" type="tel" placeholder="Телефон">
<textarea name="message" placeholder="Сообщение"></textarea>
<button>Отправить</button>
</form>Что берёт на себя сервис:
- имя, телефон, почта и сообщение находятся по названию полей, остальные поля сохраняются в заявке;
- защита от спама без капчи: поле-ловушка и одноразовый пропуск, сомнительные заявки приходят с пометкой, двойной клик не создаёт дубль;
- уведомление в Telegram в течение минуты: название формы, контакты, начало сообщения и ссылка на заявку в CRM;
- несколько получателей, личные чаты и группы, у каждого свои тихие часы — ночные заявки придут утром;
- заявка не теряется, даже если Telegram недоступен: она уже сохранена в CRM, а с согласия посетителя на статистику — с каналом и UTM-метками;
- работает с формами на HTML, в темах WordPress и в приложениях на React и Vue (
window.crmLead()).
Получателей не нужно искать по chat id: каждый пишет вашему боту /start, а вы нажимаете «Обновить список» в настройках заявок. Новые получатели добавляются выключенными — боту может написать кто угодно, и контакты клиентов увидят только те, кого вы включили сами.
Как проверить, что всё работает
- Отправьте тестовую заявку с сайта с телефона и с компьютера.
- Проверьте, что сообщение пришло всем получателям и в группу.
- Отправьте форму с пустым телефоном — она не должна уйти.
- Через неделю загляните в список заявок: нет ли спама и потерянных отправок.
Частые вопросы
Как узнать chat id для Telegram?
Напишите своему боту любое сообщение (или добавьте бота в группу и напишите там), затем откройте в браузере https://api.telegram.org/bot<токен>/getUpdates. В ответе найдите "chat":{"id":…} — это и есть chat id. У групп он отрицательный.
Почему бот не присылает сообщения?
Чаще всего — получатель ни разу не написал боту: бот в Telegram не может написать человеку первым. Ещё бывает неверный chat id, бот удалён из группы или токен перевыпущен в @BotFather. Если getUpdates возвращает ошибку про webhook, у бота настроен webhook — его нужно снять или использовать другого бота.
Можно ли отправлять заявки в Telegram прямо из JavaScript на странице?
Технически да, но так делать нельзя: токен бота окажется в коде страницы, и любой посетитель сможет им воспользоваться — читать сообщения бота и рассылать спам от его имени. Токен должен храниться только на сервере.
Как отправлять заявки сразу нескольким сотрудникам?
Проще всего — создать группу в Telegram, добавить туда бота и сотрудников и отправлять сообщения в группу. В своём скрипте можно также перебрать несколько chat id. В Sitecog получателей выбирают галочками, и у каждого свои тихие часы.
Сколько стоит?
Telegram Bot API бесплатный. Свой скрипт стоит времени разработчика и хостинга с PHP или другим серверным языком. В Sitecog заявки с форм входят в тариф Pro ($79 за 30 дней), число заявок не ограничено.