Tilda · 7 мин чтения

Тильда и Телеграм: заявки, уведомления и бот на одном сайте

Связка тильда телеграм - самая частая интеграция, которую я настраиваю клиентам сразу после запуска сайта. Задача обычно одна и та же: заявка с формы должна сразу попасть в рабочий чат, а не ждать, пока кто-то откроет почту. Дальше начинаются нюансы: кому-то хватает уведомления о новой заявке, кому-то нужен бот с кнопками, разными чатами под разные отделы и связкой с CRM. Ниже - как устроена штатная интеграция Tilda с Telegram, когда её достаточно и что делать, если нужна своя логика.

Уведомления о заявках в Telegram через настройки Tilda

В блоках «Форма» и «Заказ» на Tilda есть вкладка «Уведомления», где среди готовых интеграций стоит Telegram наравне с email, amoCRM, Bitrix24 и вебхуком. Подключение простое: вставляете токен бота и chat_id, включаете переключатель у нужного блока формы. После сохранения каждая заявка с этой формы уходит отдельным сообщением в чат: заполненные поля, время отправки, а для блока «Корзина» ещё и состав заказа. Кода писать не нужно, и для большинства сайтов на Tilda этого достаточно, будь то лендинг с одной формой захвата или магазин с уведомлением о новом заказе.

Важный момент: переключатель Telegram настраивается для каждого блока формы отдельно. Если на странице три формы, например «Обратный звонок», «Оставить заявку» и корзина, интеграцию нужно включить в каждой. Иначе часть заявок будет уходить только на почту, а в чате их не окажется.

Бот через BotFather: с чего начинается любая интеграция

Прежде чем что-то подключать в Tilda, бота нужно создать.

  • Открываете Telegram, находите @BotFather.
  • Команда /newbot, дальше вводите имя бота и юзернейм, который обязательно заканчивается на «bot».
  • BotFather выдаёт токен вида 123456:ABC-DEF… Это единственный ключ доступа к боту, его нельзя публиковать в открытом репозитории или пересылать незашифрованным текстом в общий чат.
  • Бота добавляете в нужную группу или канал вручную, как обычного участника.
  • Для канала бота нужно назначить администратором, иначе он не сможет публиковать сообщения.

Для простых уведомлений боту не требуется читать чужие переписки в группе, он только отправляет сообщения, поэтому режим приватности по умолчанию (privacy mode) можно не трогать.

Как узнать chat_id для группы, канала и личного чата

chat_id личного диалога с ботом - положительное число. У обычной группы он отрицательный, у супергруппы начинается с «-100». Проще всего узнать его так: отправляете любое сообщение в чат, где уже есть бот, затем открываете в браузере адрес вида https://api.telegram.org/bot ТОКЕН /getUpdates и ищете в ответе значение chat.id. Для каналов через getUpdates обычные сообщения не видны, если у бота нет прав администратора, поэтому права нужно выдать заранее и отправить тестовый пост.

Частая ловушка: Telegram сам конвертирует обычную группу в супергруппу, когда у неё появляется несколько администраторов или включаются определённые настройки, и при этом меняется chat_id. Если после такого апгрейда не обновить id в настройках Tilda, уведомления просто перестают приходить, без какой-либо ошибки на стороне сайта.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

Свой обработчик, когда штатной интеграции мало

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

Для этого в той же вкладке «Уведомления» в Tilda есть пункт «Webhook»: при отправке формы Tilda делает POST-запрос с JSON на указанный вами URL. Дальше нужен свой скрипт, который принимает этот запрос и вызывает Telegram Bot API. Поскольку сайт на Tilda уже работает на обычном хостинге, для приёма одного вебхука отдельный сервер не нужен, хватает PHP-обработчика на том же хостинге:

<?php
$payload = file_get_contents('php://input');
$data = json_decode($payload, true) ?: [];

$lines = ['Новая заявка с Tilda:'];
foreach ($data as $key => $value) {
    if (is_string($value) && $value !== '') {
        $lines[] = "{$key}: {$value}";
    }
}
$text = implode("\n", $lines);

$token = 'ВАШ_ТОКЕН_БОТА';
$chatId = 'ВАШ_CHAT_ID';

$ch = curl_init("https://api.telegram.org/bot{$token}/sendMessage");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
    'chat_id' => $chatId,
    'text' => $text,
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);

http_response_code(200);

Если нужно развести заявки по чатам, в этом же скрипте добавляется условие: проверяете значение конкретного поля из $data и выбираете подходящий $chatId под нужный отдел. Отдельный момент: скрипт обязательно должен ответить кодом 200, иначе Tilda может посчитать, что вебхук не сработал.

Если бот должен ещё и отвечать пользователю, кнопки, диалоги, разные сценарии, это уже другая механика: Telegram сам присылает обновления на ваш webhook-адрес (регистрируется через setWebhook), и такой обработчик тоже спокойно работает на обычном хостинге, потому что инициатором запроса выступает Telegram, а не ваш сервер. А вот когда сценарий разрастается до очередей, отложенных сообщений и разбора длинных диалогов, обычно беру aiogram на Python, но тогда это уже отдельный постоянно работающий процесс, которому нужен VPS с systemd, обновлениями и ежемесячной оплатой, для одной кнопки «написать нам» это избыточно. Такую разработку Telegram-бота с собственной логикой обычно веду отдельным проектом, от 30 000 ₽; доработка вебхука под конкретную форму Tilda укладывается в кастомный скрипт, от 3 000 ₽.

Автоматизация и разные чаты под отделы через n8n

Когда логика разрастается, несколько форм, несколько CRM, фильтрация по сумме заказа, проще не плодить PHP-скрипты, а собрать сценарий в n8n. Тот же вебхук Tilda подключается как триггер, дальше узел If разводит заявки по условию, узел Telegram отправляет в нужный чат, узел CRM создаёт сделку. Поменять условие или добавить новый чат можно прямо в интерфейсе, без правок кода.

Отдельно про хранение данных: контакты клиентов, телефон, имя, email из заявки не стоит дублировать в Google Таблицы или другие иностранные облачные сервисы, по 152-ФЗ персональные данные российских клиентов должны обрабатываться на серверах в РФ. В сценарии n8n для контактов используйте CRM или базу на своём хостинге, а во внешние таблицы выгружайте только обезличенные данные вроде товара, суммы и даты.

Ещё нюанс с сервером: n8n можно поднять на собственном VPS, тогда это отдельная машина, которую нужно обновлять и оплачивать помесячно, либо воспользоваться облачной версией сервиса, где сервер обслуживает сама компания. Для одного-двух сценариев разворачивать собственный сервер обычно смысла нет. Автоматизацию в n8n делаю от 25 000 ₽, а комплексную интеграцию для Tilda под ключ, CRM, эквайринг, СДЭК, от 40 000 ₽.

Сравнение способов подключить Telegram к Tilda

Способ Что умеет Нужен отдельный сервер Когда достаточно
Штатная интеграция форм Уведомление о заявке в один чат Нет Лендинг, простой магазин
Webhook и свой PHP-скрипт Кастомный формат, разделение по чатам Нет, хватает хостинга сайта Несколько отделов, своя логика сообщения
Сценарий в n8n Ветвление, CRM, несколько сервисов Нет для облачной версии, да для self-hosted Много условий, часто меняющаяся логика
Бот на aiogram с диалогами Кнопки, ответы, очереди сообщений Да, постоянный процесс Полноценный сценарий общения с пользователем

Частые ошибки при подключении Tilda и Telegram

  • Забыли включить интеграцию отдельно на каждой форме страницы, а не только на первой.
  • chat_id не обновили после того, как Telegram превратил обычную группу в супергруппу.
  • Бота не назначили администратором канала, из-за чего сообщения просто не доходят без видимой ошибки на стороне Tilda.
  • Токен бота хранится в открытом виде в публичном репозитории или пересылается в общий чат.
  • Вебхук-скрипт не возвращает код 200, из-за чего заявка выглядит потерянной.

Условия и возможности Тильды и Telegram меняются, поэтому перед запуском я уточняю их у самих сервисов.

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

Можно ли подключить Telegram-уведомления в Tilda без программиста?

Да, штатная интеграция в настройках формы, токен бота и chat_id, не требует кода, это можно сделать самостоятельно меньше чем за час по инструкции BotFather. Код нужен только если требуется своя логика: разделение по чатам, кастомный формат сообщения или бот с ответами.

Почему бот не отправляет уведомления в групповой чат?

Чаще всего дело в двух вещах: бота не добавили в группу или канал явным образом, либо изменился chat_id после того как Telegram автоматически преобразовал обычную группу в супергруппу, это происходит, например, при выдаче прав администратора кому-то из участников. В таком случае старый id из настроек Tilda нужно заменить на новый.

Как разделить заявки по разным Telegram-чатам для разных менеджеров?

Штатная интеграция Tilda отправляет все заявки с формы в один чат. Для разделения по условию, город, товар, сумма заказа, нужен свой обработчик вебхука на PHP или сценарий в n8n с веткой If, который проверяет значение поля и выбирает подходящий chat_id.

Нужен ли отдельный сервер, чтобы подключить Telegram-бота к сайту на Tilda?

Для уведомлений и вебхук-скрипта хватает обычного хостинга, на котором уже стоит сайт: PHP-обработчик, принимающий вебхук и отправляющий сообщение через Telegram Bot API, не требует ничего сверх этого. Отдельный сервер нужен, только если бот должен вести диалог, хранить очередь сообщений или работать через постоянный long-polling процесс.

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно