Приём заявок с лендинга в Telegram-бот

Когда посетитель оставляет заявку на лендинге, мгновенное уведомление с пуш-сигналом на телефон может решить, успеете ли вы перезвонить раньше конкурентов. В 2026 году один из самых популярных способов получать заявки — прямая отправка в Telegram-бот, который дублирует данные в личный чат или общую группу команды. Настраивается без программирования за полчаса, работает бесплатно и навсегда. В этой статье — полный разбор: от создания бота до защиты от спама и обработки заявок несколькими менеджерами.

Содержание

  1. Зачем отправлять заявки в Telegram
  2. Как это технически работает
  3. Шаг 1. Создание бота через @BotFather
  4. Шаг 2. Получение chat_id
  5. Шаг 3. JS-код для отправки формы
  6. Шаг 4. Тестирование
  7. Отправка в группу команды
  8. Безопасность токена
  9. Защита от спама
  10. Форматирование сообщений
  11. Частые ошибки
  12. FAQ
  13. Чек-лист настройки

Зачем отправлять заявки в Telegram

  • Мгновенно. Заявка приходит за секунду с пуш-уведомлением — никакой задержки email.
  • Заметно. Уведомление от бота сложнее пропустить, чем письмо среди десятков других.
  • Бесплатно. Telegram Bot API бесплатен без лимитов.
  • На любом устройстве. Один аккаунт на компьютере, телефоне, планшете — заявка везде.
  • Командная работа. Группа с ботом + менеджерами — все видят заявку, договариваются кто берёт.
  • Не нужен сервер. JS-код прямо из браузера обращается к API Telegram.

Это особенно ценно для малого бизнеса, фрилансеров, частных мастеров — там, где скорость ответа решает, получите вы клиента или нет.

Как это технически работает

  1. Пользователь заполняет форму на лендинге и нажимает «Отправить».
  2. JavaScript собирает данные из полей формы.
  3. JS формирует HTTP-запрос к API Telegram: https://api.telegram.org/bot<TOKEN>/sendMessage.
  4. В параметрах: chat_id (куда отправить) и text (текст сообщения).
  5. API Telegram получает запрос, отправляет сообщение в указанный чат.
  6. Менеджер получает пуш на телефон.

Никаких серверных скриптов, никакого PHP, никакого хостинга с поддержкой бэкенда. Только статичный HTML + JS.

Шаг 1. Создание бота через @BotFather

  1. В Telegram найдите пользователя @BotFather (с галочкой подтверждения).
  2. Нажмите Start или отправьте /start.
  3. Отправьте команду /newbot.
  4. Введите имя бота (отображается в чате): например, Заявки с сайта.
  5. Введите username бота — должен заканчиваться на bot: например, yoursite_leads_bot.
  6. BotFather пришлёт сообщение с токеном вида: 7234567890:AAH1xxxxxxxxxxxxxxxxxxxxxxxxx-yyyy.

Этот токен — ключ доступа к боту. Скопируйте и сохраните в надёжное место. Если потеряете — можно сгенерировать новый командой /token у BotFather.

Шаг 2. Получение chat_id

chat_id — идентификатор чата, куда бот будет отправлять сообщения. Это может быть ваш личный чат с ботом, группа или канал.

Для личного чата

  1. Найдите свежесозданного бота по username (например, @yoursite_leads_bot).
  2. Нажмите Start.
  3. Отправьте боту любое сообщение, например «Hello».
  4. Откройте в браузере URL (вставьте свой токен): https://api.telegram.org/bot<ТОКЕН>/getUpdates
  5. В JSON-ответе найдите блок "chat":{"id":123456789 — это и есть ваш chat_id.

Альтернатива через стороннего бота

Найдите в Telegram бота @userinfobot или @getmyid_bot, нажмите Start — он сразу пришлёт ваш числовой ID.

Шаг 3. JS-код для отправки формы

HTML-форма

<form id="leadForm">
  <input type="text" id="name" name="name" placeholder="Ваше имя" required>
  <input type="tel" id="phone" name="phone" placeholder="Телефон" required>
  <input type="email" id="email" name="email" placeholder="Email">
  <textarea id="message" name="message" placeholder="Сообщение"></textarea>
  <button type="submit">Отправить заявку</button>
</form>

<div id="success" style="display:none">
  Спасибо! Мы свяжемся с вами в течение часа.
</div>

JS-код отправки

<script>
const TOKEN = '7234567890:AAH...';
const CHAT_ID = '123456789';

document.getElementById('leadForm').addEventListener('submit', async (e) => {
  e.preventDefault();

  const name = document.getElementById('name').value;
  const phone = document.getElementById('phone').value;
  const email = document.getElementById('email').value;
  const message = document.getElementById('message').value;

  const text = `🔔 Новая заявка
Имя: ${name}
Телефон: ${phone}
Email: ${email || 'не указан'}
Сообщение: ${message || 'не указано'}`;

  const url = `https://api.telegram.org/bot${TOKEN}/sendMessage`;

  try {
    const response = await fetch(url, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        chat_id: CHAT_ID,
        text: text,
        parse_mode: 'HTML'
      })
    });

    if (response.ok) {
      document.getElementById('leadForm').style.display = 'none';
      document.getElementById('success').style.display = 'block';
    } else {
      alert('Ошибка отправки. Попробуйте позже.');
    }
  } catch (err) {
    alert('Ошибка сети. Проверьте подключение.');
  }
});
</script>

Шаг 4. Тестирование

  1. Откройте свой сайт в браузере.
  2. Заполните форму тестовыми данными.
  3. Нажмите «Отправить заявку».
  4. В течение секунды должно прийти уведомление в Telegram от вашего бота.
  5. На сайте должно появиться сообщение об успехе.

Если уведомление не пришло — откройте консоль браузера (F12 → Console) и посмотрите, есть ли ошибки. Самые частые: неверный токен, неверный chat_id, забыли нажать Start у бота.

Отправка в группу команды

Если заявки должны видеть несколько менеджеров — создаёте группу, добавляете в неё бота, используете chat_id группы.

Как настроить

  1. Создайте группу в Telegram, добавьте туда коллег.
  2. Добавьте в группу вашего бота как участника.
  3. Дайте боту права администратора (необязательно, но удобнее).
  4. Отправьте в группе любое сообщение.
  5. Откройте https://api.telegram.org/bot<ТОКЕН>/getUpdates.
  6. Найдите блок "chat":{"id":-1001234567890. У групп ID начинается с минуса.
  7. Используйте этот chat_id в коде.

Отправка в канал

Аналогично: создайте канал, добавьте бота как администратора, узнайте chat_id (или используйте имя канала с @, например @my_channel).

Безопасность токена

Главный нюанс: токен бота виден в исходном коде страницы — любой посетитель может его извлечь. Что с этим делать.

Что может сделать злоумышленник

Имея ваш токен, посторонний может:

  • Отправлять сообщения от имени вашего бота в чаты, где бот состоит;
  • Спамить заявками в ваш канал (флудить);
  • Изменить настройки бота (имя, описание).

Не может: получить доступ к вашему Telegram-аккаунту, читать ваши личные сообщения, делать что-либо за пределами бота.

Как минимизировать риск

  • Ограничьте бота одной задачей. Бот только для приёма заявок, не для админ-функций.
  • Не давайте боту прав администратора в важных каналах. Только участник с правом писать.
  • Регулярно регенерируйте токен. Раз в полгода через /token у BotFather.
  • Мониторьте чат. Если пошёл спам — смените токен, обновите код на сайте.
  • Для критичных проектов используйте прокси-сервер. Свой бэкенд, который скрывает токен от клиента.

Защита от спама

Без защиты боты быстро начнут отправлять мусор через вашу форму. Способы защиты:

Honeypot-поле

<input type="text" name="website" id="hp" style="display:none" tabindex="-1" autocomplete="off">

В JS перед отправкой:

if (document.getElementById('hp').value !== '') {
  return; // бот заполнил скрытое поле
}

Smart Captcha от Яндекса

Российский антибот-сервис. Бесплатно, работает в фоне или с вызовом. Регистрация на cloud.yandex.ru/services/smartcaptcha.

Проверка времени заполнения

let formStartTime = Date.now();
document.getElementById('leadForm').addEventListener('focusin', () => {
  if (!formStartTime) formStartTime = Date.now();
});

// Перед отправкой:
if (Date.now() - formStartTime < 3000) {
  return; // заполнено слишком быстро = бот
}

Ограничение частоты

В JS сохраняем в localStorage время последней отправки. Если меньше 30 секунд назад — блокируем.

Форматирование сообщений

Telegram поддерживает разметку HTML и Markdown в сообщениях. Используйте, чтобы выделить важное.

HTML-разметка

const text = `<b>🔔 Новая заявка</b>

<b>Имя:</b> ${name}
<b>Телефон:</b> <code>${phone}</code>
<b>Email:</b> ${email}

<i>Сообщение:</i>
${message}

🕐 ${new Date().toLocaleString('ru-RU')}`;

// В параметрах запроса:
parse_mode: 'HTML'

Доступные теги: <b>, <i>, <u>, <s>, <code>, <pre>, <a href="...">.

Эмодзи

В тексте можно использовать любые эмодзи — они отобразятся в Telegram. Полезные для заявок: 🔔 ⚡ 📞 ✉️ 👤 💼.

Добавление UTM-меток

Чтобы видеть, с какой рекламной кампании пришла заявка:

const utm = new URLSearchParams(window.location.search);
const source = utm.get('utm_source') || 'прямой';
const campaign = utm.get('utm_campaign') || '—';

// Добавляем в текст:
text += `\n🎯 Источник: ${source}\nКампания: ${campaign}`;

Частые ошибки

  1. Забыли нажать Start у бота. Бот не может писать пользователю, который не нажал Start. Для групп — бот должен быть добавлен в группу.
  2. Неверный токен. Опечатка или старый токен после регенерации.
  3. Неверный chat_id. Перепутали ID, забыли минус в начале для группы.
  4. CORS-ошибка в консоли. Telegram API поддерживает CORS, обычно проблем нет. Если есть — проверьте, что используете правильный домен (api.telegram.org, не api.telegram.com).
  5. Сообщение отправилось, но не отобразилось. Слишком длинный текст (лимит 4096 символов) или ошибка в HTML-разметке (неправильно закрытый тег).
  6. Не работает на мобильных. Старые мобильные браузеры могут иметь проблемы с fetch API. Используйте более старый XMLHttpRequest как fallback.
  7. Спам от ботов. Добавьте honeypot и проверку времени.

FAQ

Сколько стоит использовать Telegram Bot API?

Полностью бесплатно. У Telegram нет тарифов на Bot API, лимиты только на частоту сообщений (около 30 сообщений в секунду на бота).

Можно ли получать заявки от нескольких сайтов в один бот?

Да, используйте один токен на нескольких сайтах. В тексте сообщения можно указывать источник: «Заявка с landing-1.com» или «Заявка с landing-2.com».

А если человек закроет страницу до завершения отправки?

fetch отправляется асинхронно, страница не дождётся ответа. Можно использовать navigator.sendBeacon, который гарантированно отправит запрос даже при закрытии страницы. Но для простых форм fetch с alert после ответа обычно достаточно.

Как настроить ответ клиенту после отправки заявки?

Telegram-бот не может ответить клиенту, потому что не знает его контактов. Для автоответа клиенту используйте email-сервисы или подключите ещё одну отправку в Formspree. На сайте показывайте сообщение об успехе.

Можно ли отправлять файлы (резюме, ТЗ) через бот?

Да, метод sendDocument. Но загрузка через FormData сложнее. Простой обходной путь: пользователь загружает файл на Google Drive / Яндекс.Диск с открытым доступом, в форме указывает ссылку, бот шлёт ссылку в чат.

Telegram заблокирован у меня в РФ — будет ли работать?

Telegram официально не заблокирован в РФ с 2020 года. Иногда API замедляется или временно недоступен. На случай — дублируйте отправку на email через Formspree.

Можно ли поставить кнопки в сообщении бота?

Да, через параметр reply_markup. Например, кнопки «Принять/Отклонить» или «Позвонить». Но обработка нажатий потребует серверного кода или Webhook — это уже сложнее.

Чек-лист настройки

  • ☐ Бот создан через @BotFather
  • ☐ Токен сохранён в надёжном месте
  • ☐ Нажат Start у бота / бот добавлен в группу
  • ☐ Узнан chat_id (через getUpdates или @userinfobot)
  • ☐ JS-код вставлен на страницу формы
  • ☐ TOKEN и CHAT_ID подставлены
  • ☐ Сделана тестовая отправка — пришло уведомление
  • ☐ Настроено отображение успеха на странице
  • ☐ Добавлен honeypot для защиты от ботов
  • ☐ Добавлены UTM-метки в тело сообщения
  • ☐ Сообщение отформатировано (HTML/эмодзи)
  • ☐ Все коллеги добавлены в группу заявок
  • ☐ Проверена работа в разных браузерах и на мобильных

Заключение

Telegram-бот для приёма заявок — идеальное решение для лендинга на статичном HTML. Полчаса настройки, ноль рублей в месяц, мгновенная скорость. Подходит для лендингов, сайтов услуг, портфолио — везде, где важна быстрая реакция на обращение.

Для серьёзного бизнеса дублируйте поток на email или CRM — это страховка на случай проблем с Telegram. А если ещё ищете хостинг под лендинг или готовый HTML-шаблон с формой — посмотрите рейтинг хостингов и каталог шаблонов на Zettabyte.