Статьи

Заявки с сайта в Telegram: 3 способа настроить

Обновлено:

Заявки в Telegram приходят быстрее, чем на почту, и их сразу видит вся команда. Есть три способа настроить это: включить интеграцию в настройках платформы сайта, написать небольшой скрипт с ботом или подключить готовый сервис. Разберём каждый — с рабочим кодом и типичными ошибками.

Какой способ выбрать

СпособКому подходитЧто нужно
Настройки платформыСайт на конструкторе или WordPressНайти интеграцию в настройках форм или плагин
Свой скрипт с ботомЕсть разработчик и сервер с PHP, Node.js или PythonБот, chat id, серверный скрипт
Готовый сервисСайт на своём коде, бэкенд для форм писать не хочетсяПодключить скрипт сервиса и бота

Шаг для любого способа: создайте бота

Заявки в Telegram отправляет бот. Создать его можно за пару минут:

  1. Откройте в Telegram @BotFather и отправьте команду /newbot.
  2. Придумайте имя бота и адрес — он должен заканчиваться на bot, например myshop_leads_bot.
  3. BotFather пришлёт токен — строку вида 123456789:AA…. Это ключ к боту: не публикуйте его и не вставляйте в код страницы.
  4. Найдите своего бота и нажмите «Старт». Бот в Telegram не может написать человеку первым — без этого шага сообщения не придут.

Способ 1. Настройки платформы сайта

У многих конструкторов сайтов и CRM подключение Telegram есть прямо в настройках приёма заявок: вы вставляете токен бота или авторизуете официального бота платформы. Для WordPress есть плагины, которые отправляют заявки из популярных плагинов форм в Telegram. Ищите в справке своей платформы раздел про «получение данных из форм» или «уведомления».

Плюс — ничего не нужно программировать. Минус — способ работает только внутри своей платформы: при переезде на другой сайт всё придётся настраивать заново, а иногда приём заявок доступен только на платном тарифе.

Способ 2. Свой скрипт с ботом

Если сайт сделан на своём коде и есть сервер, заявку можно отправить в Telegram через Bot API — метод sendMessage. Нужны токен бота и chat id получателя.

Как узнать chat id

  1. Напишите боту любое сообщение — или добавьте бота в группу и напишите в ней.
  2. Откройте в браузере https://api.telegram.org/bot<токен>/getUpdates, подставив свой токен.
  3. В ответе найдите "chat":{"id":…}. У личного чата это положительное число, у группы — отрицательное (у больших групп начинается с -100).

Если вместо списка сообщений пришла ошибка про webhook, у бота уже настроен webhook и getUpdates для него не работает. Снимите webhook методом deleteWebhook или создайте отдельного бота для заявок.

Обработчик на PHP

Скрипт принимает данные формы, проверяет поле-ловушку и отправляет сообщение. Токен и chat id берутся из переменных окружения сервера, а не хранятся в файле, который может попасть в общий доступ.

send.phpphp
<?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 ? 'Спасибо! Мы скоро свяжемся' : 'Не получилось отправить — позвоните нам';
Форма на страницеhtml
<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 и отправляет уведомление вашему боту.

Достаточно атрибута на вашей формеhtml
<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, а вы нажимаете «Обновить список» в настройках заявок. Новые получатели добавляются выключенными — боту может написать кто угодно, и контакты клиентов увидят только те, кого вы включили сами.

Как проверить, что всё работает

  1. Отправьте тестовую заявку с сайта с телефона и с компьютера.
  2. Проверьте, что сообщение пришло всем получателям и в группу.
  3. Отправьте форму с пустым телефоном — она не должна уйти.
  4. Через неделю загляните в список заявок: нет ли спама и потерянных отправок.

Частые вопросы

Как узнать 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 дней), число заявок не ограничено.