
Когда посетитель оставляет заявку на лендинге, мгновенное уведомление с пуш-сигналом на телефон может решить, успеете ли вы перезвонить раньше конкурентов. В 2026 году один из самых популярных способов получать заявки — прямая отправка в Telegram-бот, который дублирует данные в личный чат или общую группу команды. Настраивается без программирования за полчаса, работает бесплатно и навсегда. В этой статье — полный разбор: от создания бота до защиты от спама и обработки заявок несколькими менеджерами.
Содержание
- Зачем отправлять заявки в Telegram
- Как это технически работает
- Шаг 1. Создание бота через @BotFather
- Шаг 2. Получение chat_id
- Шаг 3. JS-код для отправки формы
- Шаг 4. Тестирование
- Отправка в группу команды
- Безопасность токена
- Защита от спама
- Форматирование сообщений
- Частые ошибки
- FAQ
- Чек-лист настройки
Зачем отправлять заявки в Telegram
- Мгновенно. Заявка приходит за секунду с пуш-уведомлением — никакой задержки email.
- Заметно. Уведомление от бота сложнее пропустить, чем письмо среди десятков других.
- Бесплатно. Telegram Bot API бесплатен без лимитов.
- На любом устройстве. Один аккаунт на компьютере, телефоне, планшете — заявка везде.
- Командная работа. Группа с ботом + менеджерами — все видят заявку, договариваются кто берёт.
- Не нужен сервер. JS-код прямо из браузера обращается к API Telegram.
Это особенно ценно для малого бизнеса, фрилансеров, частных мастеров — там, где скорость ответа решает, получите вы клиента или нет.
Как это технически работает
- Пользователь заполняет форму на лендинге и нажимает «Отправить».
- JavaScript собирает данные из полей формы.
- JS формирует HTTP-запрос к API Telegram:
https://api.telegram.org/bot<TOKEN>/sendMessage. - В параметрах:
chat_id(куда отправить) иtext(текст сообщения). - API Telegram получает запрос, отправляет сообщение в указанный чат.
- Менеджер получает пуш на телефон.
Никаких серверных скриптов, никакого PHP, никакого хостинга с поддержкой бэкенда. Только статичный HTML + JS.
Шаг 1. Создание бота через @BotFather
- В Telegram найдите пользователя @BotFather (с галочкой подтверждения).
- Нажмите Start или отправьте
/start. - Отправьте команду
/newbot. - Введите имя бота (отображается в чате): например,
Заявки с сайта. - Введите username бота — должен заканчиваться на
bot: например,yoursite_leads_bot. - BotFather пришлёт сообщение с токеном вида:
7234567890:AAH1xxxxxxxxxxxxxxxxxxxxxxxxx-yyyy.
Этот токен — ключ доступа к боту. Скопируйте и сохраните в надёжное место. Если потеряете — можно сгенерировать новый командой /token у BotFather.
Шаг 2. Получение chat_id
chat_id — идентификатор чата, куда бот будет отправлять сообщения. Это может быть ваш личный чат с ботом, группа или канал.
Для личного чата
- Найдите свежесозданного бота по username (например,
@yoursite_leads_bot). - Нажмите Start.
- Отправьте боту любое сообщение, например «Hello».
- Откройте в браузере URL (вставьте свой токен):
https://api.telegram.org/bot<ТОКЕН>/getUpdates - В 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. Тестирование
- Откройте свой сайт в браузере.
- Заполните форму тестовыми данными.
- Нажмите «Отправить заявку».
- В течение секунды должно прийти уведомление в Telegram от вашего бота.
- На сайте должно появиться сообщение об успехе.
Если уведомление не пришло — откройте консоль браузера (F12 → Console) и посмотрите, есть ли ошибки. Самые частые: неверный токен, неверный chat_id, забыли нажать Start у бота.
Отправка в группу команды
Если заявки должны видеть несколько менеджеров — создаёте группу, добавляете в неё бота, используете chat_id группы.
Как настроить
- Создайте группу в Telegram, добавьте туда коллег.
- Добавьте в группу вашего бота как участника.
- Дайте боту права администратора (необязательно, но удобнее).
- Отправьте в группе любое сообщение.
- Откройте
https://api.telegram.org/bot<ТОКЕН>/getUpdates. - Найдите блок
"chat":{"id":-1001234567890. У групп ID начинается с минуса. - Используйте этот 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}`;
Частые ошибки
- Забыли нажать Start у бота. Бот не может писать пользователю, который не нажал Start. Для групп — бот должен быть добавлен в группу.
- Неверный токен. Опечатка или старый токен после регенерации.
- Неверный chat_id. Перепутали ID, забыли минус в начале для группы.
- CORS-ошибка в консоли. Telegram API поддерживает CORS, обычно проблем нет. Если есть — проверьте, что используете правильный домен (api.telegram.org, не api.telegram.com).
- Сообщение отправилось, но не отобразилось. Слишком длинный текст (лимит 4096 символов) или ошибка в HTML-разметке (неправильно закрытый тег).
- Не работает на мобильных. Старые мобильные браузеры могут иметь проблемы с fetch API. Используйте более старый XMLHttpRequest как fallback.
- Спам от ботов. Добавьте honeypot и проверку времени.
FAQ
Полностью бесплатно. У Telegram нет тарифов на Bot API, лимиты только на частоту сообщений (около 30 сообщений в секунду на бота).
Да, используйте один токен на нескольких сайтах. В тексте сообщения можно указывать источник: «Заявка с landing-1.com» или «Заявка с landing-2.com».
fetch отправляется асинхронно, страница не дождётся ответа. Можно использовать navigator.sendBeacon, который гарантированно отправит запрос даже при закрытии страницы. Но для простых форм fetch с alert после ответа обычно достаточно.
Telegram-бот не может ответить клиенту, потому что не знает его контактов. Для автоответа клиенту используйте email-сервисы или подключите ещё одну отправку в Formspree. На сайте показывайте сообщение об успехе.
Да, метод sendDocument. Но загрузка через FormData сложнее. Простой обходной путь: пользователь загружает файл на Google Drive / Яндекс.Диск с открытым доступом, в форме указывает ссылку, бот шлёт ссылку в чат.
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.