Заявка с Тильды в Telegram-бот долетает за секунды, если настроить связку правильно - без плагинов, которые тормозят загрузку формы, и без привычки проверять почту каждые полчаса. За последние пару лет я подключал такую передачу заявок к десяткам лендингов на Tilda: где-то хватало встроенного вебхука в настройках формы, где-то приходилось поднимать отдельный сервер на Node.js, чтобы раскладывать заявки по менеджерам и продуктам. Разберу четыре рабочих способа - от встроенного в Tilda до кастомного бота на aiogram - с кодом и ошибками, которые вылезают уже после запуска, а не на этапе тестирования.
Зачем уводить заявки с формы Тильды в Telegram, а не на почту
Заявка, которая падает на почту, живёт в среднем несколько часов - пока менеджер не откроет ящик. У одного из моих клиентов на автозапчастях заявки с формы Tilda регулярно попадали в папку «Промоакции» на Mail.ru просто из-за автоматической фильтрации писем. За месяц набежало около 40 пропущенных обращений - и это при том, что на форму шёл платный трафик из Директа.
Telegram решает вопрос без лишних настроек: сообщение приходит с пуш-уведомлением на телефон, и менеджер видит его за секунды, а не когда решит открыть почтовый клиент. Плюс в сообщение сразу можно зашить кнопки «Взял в работу», UTM-метки, номер заказа и ссылку в CRM - почтовое уведомление так не умеет в принципе.
У другого клиента - интернет-магазин на связке Tilda и T‑Bank для приёма оплаты - я считал время от клика «Оплатить» до звонка менеджера: с почтовым уведомлением набегало от 40 минут до пары часов, с Telegram-ботом обычно укладываемся в 2-3 минуты, потому что уведомление не теряется среди остальной входящей почты.
Способ 1 - встроенное уведомление Tilda в Telegram
Самый быстрый путь без единой строчки кода. В панели Tilda: настройки сайта → раздел «Формы» → уведомления → добавляем канал Telegram. Tilda попросит токен бота и ID чата: токен получаете у @BotFather командой /newbot, а ID чата смотрите через @userinfobot для личного чата или через метод getUpdates у только что созданного бота, если нужен групповой чат.
Нюанс первый: встроенная интеграция с Telegram у Tilda доступна не на всех тарифах - на бесплатном и «Personal» этого канала просто нет в списке, придётся переходить на «Business» или выше. Нюанс второй: формат сообщения зашит в шаблон Tilda, поля идут одним неформатированным блоком, а файлы и картинки - например, если в форме есть загрузка ТЗ или скана паспорта - через этот канал не долетают вообще.
Для простой формы «Имя + Телефон» на лендинге услуг такого канала хватает с запасом. Для формы из 10 полей с загрузкой файлов - уже нет. Проверяю канал так: отправляю тестовую заявку через саму форму на сайте, а не тестовую отправку из редактора Tilda - она не всегда триггерит внешние уведомления, - и слежу, что сообщение пришло в течение минуты.
Бесплатный материал
🎁 Полезный скрипт в подарок
Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.
Без спама. Отписка в 1 клик.
Способ 2 - свой вебхук: Tilda отправляет POST на ваш сервер
Когда нужен контроль над форматом сообщения, фильтрация по полям формы или отправка в разные чаты по условию, встроенного канала мало - поднимаю отдельный обработчик. В настройках формы Tilda есть вкладка «Другие системы» → Webhook, куда прописывается адрес вашего сервера. При отправке формы Tilda делает POST-запрос с JSON, где поля приходят под своими name: Name, Phone, Email, formname, а также служебные tranid и formid.
Обработчик на Node.js с Express выглядит примерно так:
const express = require('express');
const app = express();
app.use(express.json());
app.post('/tilda-webhook/a3f9c1', async (req, res) => {
const { Name, Phone, Email, formname } = req.body;
const text = `Новая заявка с Тильды
Форма: ${formname}
Имя: ${Name}
Телефон: ${Phone}
Email: ${Email}`;
res.status(200).send('OK');
await fetch(`https://api.telegram.org/bot${process.env.BOT_TOKEN}/sendMessage`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
chat_id: process.env.CHAT_ID,
text,
parse_mode: 'HTML'
})
});
});
app.listen(3000);
Дальше - обычный Bot API Telegram, никаких SDK не требуется, просто fetch на метод sendMessage. Токен и chat_id храню в переменных окружения, в репозиторий их не коммичу.
Отдельный момент - защита вебхука. URL обработчика в теории может найти кто угодно и начать слать туда мусорные POST-запросы, заваливая бота фейковыми заявками. Решаю просто: добавляю в адрес вебхука произвольный секретный параметр, как в примере выше, и на сервере сверяю его перед обработкой, а не полагаюсь на скрытость URL как единственную защиту.
Из практики: Tilda ждёт ответ HTTP 200 в течение нескольких секунд, иначе форма на сайте покажет пользователю ошибку отправки, даже если вебхук в итоге отработал корректно. Поэтому тяжёлую логику - запись в базу, отправку в CRM - стоит выносить в очередь и отвечать Тильде сразу, не дожидаясь, пока отработает всё остальное. У меня в разделе готовых скриптов уже лежит рабочий обработчик вебхука Тильды под Telegram - можно взять за основу и адаптировать под свои поля формы.
На биржах фриланса за такую же пересылку заявки в чат просят от 5 000 до 20 000 рублей в зависимости от исполнителя - это ориентир по рынку, не мои расценки. У меня минимальная доработка формы под вебхук стоит от 3 000 рублей, а комплексная интеграция с CRM или эквайрингом - от 40 000 рублей.
Способ 3 - через n8n: без своего сервера и без бэкенд-кода
Если разворачивать сервер не хочется, а логика чуть сложнее, чем «переслать всё как есть», беру n8n. Ставлю Webhook-ноду - в неё Tilda шлёт тот же POST, что и в способе выше, - а дальше нода Telegram с готовым интерфейсом под отправку текста, фото и файлов без единой строчки кода. Между ними можно воткнуть Filter или Switch: например, заявки с суммой заказа выше условных 50 000 ₽ уходят в отдельный чат к руководителю продаж, остальные - рядовым менеджерам.
Отдельно про хранение данных: если в цепочке n8n стоит нода, которая сохраняет контакты клиента - телефон, email, - держите её на сервере в РФ. По 152-ФЗ персональные данные граждан России обязаны обрабатываться на серверах внутри страны, и self-hosted n8n на российском VPS закрывает этот вопрос сразу, в отличие от облачной версии n8n.cloud, размещённой за рубежом.
Настройка такой цепочки у меня обычно занимает день-полтора вместе с тестами, стоимость отталкивается от сложности сценария - автоматизация в n8n у меня начинается от 25 000 ₽.
Способ 4 - бот на aiogram с собственной логикой распределения
Когда заявки нужно не просто пересылать, а вести - отмечать статус, назначать ответственного, хранить историю по клиенту, - встроенных нод n8n или голого вебхука уже мало. Поднимаю бота на aiogram с FastAPI-эндпоинтом, который принимает POST от Tilda, кладёт заявку в Postgres и рассылает сообщение с inline-кнопками менеджерам.
from fastapi import FastAPI, Request
from aiogram import Bot
app = FastAPI()
bot = Bot(token=BOT_TOKEN)
@app.post("/tilda-webhook")
async def tilda_webhook(request: Request):
data = await request.json()
text = (
f"Новая заявкаn"
f"Имя: {data.get('Name')}n"
f"Телефон: {data.get('Phone')}"
)
await bot.send_message(
chat_id=MANAGER_CHAT_ID,
text=text,
reply_markup=take_button()
)
return {"ok": True}
По кнопке «Взял в работу» бот меняет статус заявки в базе и убирает кнопки у остальных менеджеров, чтобы два человека не звонили одному клиенту одновременно - с такой проблемой сталкивался у клиента с отделом продаж на пять человек, где без этой логики заявки разбирали по несколько раз.
Базу с контактами клиентов держу на том же VPS в России, где крутится сам бот - так сразу закрывается требование по локализации персональных данных, и не приходится решать этот вопрос отдельно уже после запуска.
Такой бот - уже отдельный сервис с деплоем, собственным вебхуком у Telegram (setWebhook на HTTPS-адрес) и, как правило, простой админкой для статистики по заявкам. Разработка бота с такой логикой у меня стартует от 30 000 ₽, дальше стоимость растёт от количества интеграций - CRM, склад, расчёт доставки через СДЭК прямо в теле заявки.
Как выбрать способ: сравнение
Если коротко - выбор зависит от того, сколько условий и получателей у заявки. Для одной формы с двумя полями хватает встроенного канала, для филиала с разными чатами по регионам без кастомной логики уже не обойтись. Например, у клиента с формой на сайте и заявкой в двух отделах - продажи и сервис - свой обработчик за один вечер разослал заявки в два разных чата по значению поля «Тип обращения», встроенный канал Tilda так не умеет в принципе.
| Способ | Время настройки | Гибкость | Нужен сервер | Стоимость |
|---|---|---|---|---|
| Встроенный канал Tilda | 10-15 минут | Низкая | Нет | Бесплатно (на подходящем тарифе) |
| Свой вебхук (Node/PHP/Python) | Несколько часов | Средняя | Да | от 3 000 ₽ за доработку, от 40 000 ₽ за интеграцию с CRM и эквайрингом |
| n8n | Полдня-день | Средняя-высокая | Да, self-hosted | от 25 000 ₽ |
| Бот на aiogram с логикой | Несколько дней | Высокая | Да | от 30 000 ₽ |
Частые ошибки при подключении заявок из Тильды в Telegram
- забыли опубликовать страницу после добавления вебхука - Tilda применяет настройки формы только к опубликованной версии, черновик их не подхватывает;
- chat_id для группового чата указан без минуса - у групп в Telegram идентификатор отрицательный, без минуса бот молчит без единой ошибки в логах Tilda;
- бота не добавили в групповой чат либо забыли, что у него включён privacy mode в @BotFather, из-за чего он не видит часть сообщений в группе;
- вебхук указан на http вместо https - Tilda требует шифрованное соединение и просто не станет слать запрос на незащищённый адрес;
- сервер отвечает дольше нескольких секунд - форма на сайте показывает пользователю ошибку отправки, хотя данные до бэкенда доходят и заявка не теряется.
Автоматизация в мессенджере
Telegram-бот / Mini App
от 30 000 ₽
Подробнее →Частые вопросы
Можно ли отправлять заявки с Тильды сразу в несколько Telegram-чатов?
Да. Через встроенный канал Tilda - с ограничениями, обычно один чат на форму. Через свой вебхук или n8n - без ограничений: в обработчике просто вызываете sendMessage нужное число раз с разными chat_id или ветвите поток через Switch-ноду в n8n по условию - например, заявки на монтаж уходят одной бригаде, а на замер другой.
Нужен ли отдельный сервер, чтобы принимать вебхук от Тильды?
Для встроенного канала Tilda и для n8n в облаке - нет. Для кастомного обработчика на Node.js, PHP или Python - да, но хватает недорогого VPS: нагрузка на такой сервис минимальная, он просто пересылает JSON дальше в Bot API Telegram.
Как проверить, что вебхук от формы действительно доходит до сервера?
Перед тем как указывать боевой адрес, направляю тестовую отправку на webhook.site - сервис показывает точную структуру JSON, которую присылает Tilda, включая имена полей формы. Дальше - логи самого сервера и раздел «Формы» → «Данные форм» в панели Tilda, где видно все отправки, даже если вебхук в моменте не сработал.
Что делать, если нужно получать в Telegram файлы или фото, загруженные через форму?
Встроенный канал Tilda файлы не пересылает. При кастомном вебхуке это решается просто: Tilda присылает публичную ссылку на загруженный файл в теле запроса, а в обработчике вызывается метод sendDocument или sendPhoto Bot API с этой ссылкой вместо текста.