Максим Игошев.

Заявки с сайта в Google Таблицы и Telegram: готовый шаблон n8n

Форма на сайте шлёт заявку на почту, и там она тонет. Разбираю готовый шаблон n8n, который кладёт заявку в таблицу и пишет в Telegram, и ту единственную деталь, из-за которой такие связки обычно ломаются.

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

Это чинится за один вечер и без программиста. Ниже разбор шаблона, который я выложил свободно, и объяснение, почему он устроен именно так.

Что делает шаблон

Четыре шага, которые срабатывают при отправке формы.

Форма шлёт данные на адрес, который даёт n8n. Дальше поля приводятся к единому виду. Заявка ложится строкой в Google Таблицу: дата, имя, контакт, сообщение, источник. И в Telegram приходит сообщение с теми же данными.

В таблице появляется история, по которой можно считать. В Telegram появляется уведомление, которое видит вся команда, а не один ящик.

Деталь, из-за которой такие связки ломаются

Если собирать это самому, первая версия почти наверняка сломается на названиях полей.

Конструкторы сайтов называют поля по-разному. Где-то приходит name, где-то Name, где-то full_name. Контакт бывает email, Email, phone, telegram. Связка, написанная под одну форму, молча перестаёт работать, когда форму поменяли или добавили вторую на другой странице. Молча, потому что вебхук отвечает успехом, а в таблицу падает пустая строка.

Поэтому в шаблоне есть отдельный шаг очистки. Он берёт первое непустое значение из списка возможных названий:

const pick = (...keys) => keys.map(k => b[k]).find(v => typeof v === 'string' && v.trim()) ?? '';
name:    pick('name', 'Name', 'full_name'),
contact: pick('email', 'Email', 'phone', 'Phone', 'telegram'),
message: pick('message', 'Message', 'comment', 'text'),
source:  pick('utm_source', 'source') || 'website',

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

Второе, что стоит заметить: источник. Если на сайте есть UTM-метки, шаблон кладёт их в ту же строку. Через месяц у вас есть ответ на вопрос, какой канал приносит заявки, и он не требует отдельной аналитики.

Как подключить

Три шага, из которых только первый требует зайти в настройки сайта.

Импортируйте файл в n8n через Workflows и Import from File. Скопируйте адрес из узла вебхука в настройки вашей формы. Подключите Google Таблицу с колонками дата, имя, контакт, сообщение, источник и бота Telegram с номером чата.

Шаблон лежит здесь: website-lead-to-sheets-telegram.json. Он свободный, забирайте и правьте под себя.

Что менять под свой случай

Google Таблица хороша как первый шаг, но она не CRM. Когда заявок станет больше, тот же шаблон переключается на вашу систему: вместо узла таблицы ставится узел CRM, остальное остаётся.

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

Если нужно адаптировать под вашу CRM или добавить оценку заявок, напишите мне, разберём на вашем потоке.

  • n8n
  • Автоматизация
  • Шаблоны