Автоматическая обработка заявок из Telegram в Google Sheets через n8n - Блог Папы Карло

Опубликовано: 5 месяцев назад
Просмотров: 131

Эй, кто тут опять притащил в мастерскую чат-бота, таблицу и кипу заявок? Заходи, сейчас покажу, как я это собираю так, чтобы менеджер не ловил клиентов сачком по перепискам.

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

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

Быстрый ответ

  • Принимаем сообщение или контакт в Telegram-боте.
  • В n8n вытаскиваем имя, username, телефон, текст заявки, дату и служебный идентификатор.
  • Проверяем, не существует ли уже такая заявка по телефону, username или lead_id.
  • Если запись новая, добавляем строку в Google Sheets. Если старая, обновляем статус или комментарий.
  • Параллельно отправляем уведомление менеджеру и ставим контрольный статус: «новая», «в работе», «закрыта».
Как было руками Как работает через n8n
Открываешь Telegram, копируешь имя и текст Telegram Trigger ловит событие сразу после сообщения
Вставляешь данные в таблицу и молишься, чтобы не промахнуться строкой Google Sheets сам получает подготовленные поля в нужные колонки
Путаешь дубли и теряешь историю Workflow проверяет совпадение по ключу и обновляет существующую запись
Менеджер замечает новую заявку, когда уже поздно Бот или внутренний чат получает уведомление сразу после записи

Оглавление

  1. Где эта связка реально экономит время
  2. Какая схема работает у меня чаще всего
  3. Какие поля стоит хранить в Google Sheets
  4. Какие узлы понадобятся в n8n
  5. Пошаговая сборка сценария
  6. Как не плодить дубли
  7. Как добавить статусы и уведомления
  8. Когда стоит подключать ИИ
  9. Частые косяки на старте
  10. Чек-лист перед запуском
  11. FAQ

Где эта связка реально экономит время

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

Google Sheets тут заходит как понятный всем экран. Менеджер видит строки, владелец смотрит статусы, а я со своей стороны спокойно докручиваю логику в n8n. Для меня n8n — автоматизация, которую удобно растить вместе с процессом: сегодня у тебя одна таблица и один менеджер, а завтра уже статусы, дедупликация, напоминания и отдельный поток ошибок.

Промежуточный вывод: если у вас заявки уже живут в Telegram, а учёт до сих пор держится на памяти менеджера, такая связка окупается очень быстро.

Какая схема работает у меня чаще всего

Мой базовый маршрут обычно выглядит так: человек пишет боту, Telegram Trigger подхватывает событие, дальше Edit Fields собирает чистую структуру данных, IF фильтрует мусор и служебные команды, Google Sheets ищет совпадение по ключу, а потом либо добавляет новую строку, либо обновляет старую. Финальным узлом я почти всегда ставлю уведомление менеджеру в Telegram или отдельный внутренний чат.

Схема в одну строчку выглядит так:

Telegram Trigger → Edit Fields → IF → Google Sheets Lookup → IF → Append / Update → Telegram Notification

Если проект уже оброс мясом, я добавляю ещё два слоя. Первый — отдельный поток ошибок через Error Trigger, чтобы не узнавать о поломке спустя три дня. Второй — маленький блок нормализации: привести телефон к одному формату, обрезать пустые хвосты у текста, проставить created_at и источник заявки.

Какие поля стоит хранить в Google Sheets

Не надо превращать лист в музей случайных колонок. Для нормальной обработки заявок я обычно оставляю такой набор:

  • lead_id — внутренний идентификатор заявки;
  • created_at — дата и время создания;
  • username — username пользователя, если он есть;
  • name — имя или подпись контакта;
  • phone — номер, если бот попросил контакт;
  • message — сам текст заявки;
  • source — откуда пришёл человек: бот, реклама, канал, форма;
  • status — новая, в работе, ждём ответ, закрыта;
  • manager_comment — короткая заметка для команды.

Если хочется чуть больше порядка, можно добавить city, tag, priority и last_update. Но я бы не пытался в первый же вечер собрать суперкомбайн. Чем стройнее таблица на старте, тем проще потом жить.

Какие узлы понадобятся в n8n

Узел Что делает Зачем нужен в заявках
Telegram Trigger Ловит входящие события от бота Стартует workflow сразу после нового сообщения
Edit Fields Собирает и переименовывает нужные поля Делает данные аккуратными перед записью в таблицу
IF Разветвляет логику Отделяет новую заявку от дубля или пустого события
Google Sheets Читает, добавляет и обновляет строки Хранит заявки и статусы в одном месте
Telegram Отправляет сообщения Шлёт уведомления менеджеру или ответ клиенту
Error Trigger Ловит ошибки другого workflow Помогает не прозевать падение сценария

Пошаговая сборка сценария

1. Создаём бота и подключаем его к n8n

Сначала поднимаем Telegram-бота и добавляем токен в credentials. Тут важен один практический момент: пока тестируете цепочку, не перепутайте тестовый и боевой режим workflow. Это один из тех приколов, из-за которых люди полчаса смотрят на пустой canvas и думают, что бот умер.

2. Готовим таблицу

В Google Sheets заранее создаём первую строку с заголовками колонок. Я обычно делаю лист под названием Leads и сразу задаю понятные поля. В n8n первая строка воспринимается как заголовок, так что названия колонок лучше продумать заранее и не менять по десять раз уже после запуска.

3. Нормализуем входящие данные

После Telegram Trigger я ставлю Edit Fields и собираю структуру руками: имя, username, текст, номер телефона, дата, lead_id. Если в боте есть кнопка «Поделиться контактом», телефон приходит куда чище, чем когда пользователь печатает его сам в свободной форме. Для текста заявки я ещё люблю делать trim, чтобы убрать мусор по краям.

4. Проверяем дубли

Вот тут начинается взрослая жизнь. Если просто писать каждое сообщение в новую строку, через неделю таблица станет похожа на гараж после переезда. Я обычно ищу дубль по одному главному ключу и одному запасному: например, по телефону и username, либо по lead_id и телефону. Дальше IF решает, куда вести поток: в append или update.

5. Пишем строку или обновляем существующую

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

6. Уведомляем менеджера

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

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

Как не плодить дубли

Если честно, дубли — это самая частая головная боль в такой автоматизации. И лечится она не героизмом менеджера, а нормальной логикой. Вот что реально работает:

  • держите уникальный ключ заявки;
  • приводите телефон к одному формату;
  • не создавайте пустые строки после удалённых записей в таблице;
  • для повторного обращения обновляйте запись, а не клонируйте её;
  • добавьте колонку last_update, чтобы видеть последнее касание.

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

Как добавить статусы и уведомления

Голая запись в таблицу — это ещё не обработка заявок. Нужен маршрут после попадания строки в лист. Я обычно делаю три простых статуса: «новая», «в работе», «закрыта». Иногда добавляю «перезвонить» и «ждём ответ клиента».

Дальше можно пойти двумя дорогами:

  • либо менеджер меняет статус руками в Google Sheets;
  • либо n8n сам двигает статус по событиям, например после ответа клиенту или внутреннего уведомления.

Тут же удобно прикрутить напоминания. Если заявка висит в статусе «новая» дольше нужного времени, workflow шлёт пинок в Telegram. Когда команда небольшая, такой пинок экономит кучу нервов и не даёт горячим лидам остыть.

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

Я не сторонник лепить нейросеть на каждый винтик. Но в этой теме ИИ действительно полезен, когда входящие заявки приходят в свободной форме и надо быстро понять смысл текста. Например, модель может вытащить город, тип услуги, желаемую дату, бюджет и срочность, а потом положить это в отдельные колонки.

Ещё один удачный сценарий — короткое summary для менеджера. Вместо огромного полотна текста он получает пару внятных строк: что хочет клиент, насколько срочно и кому это лучше отдать. Для небольшого отдела продаж это прям приятный апгрейд.

Но я бы запускал такой блок только после того, как уже стабильно работает базовая автоматизация. Сначала заявка должна долетать, сохраняться и находиться по ключу. А уже потом можно навешивать умные штуки.

Частые косяки на старте

  • Бот молчит. Чаще всего проблема в режиме теста, webhook или токене.
  • Данные пишутся криво. Обычно виноват этап нормализации: разные форматы телефона, пустые поля, неверные названия колонок.
  • Один лид попадает в лист несколько раз. Значит, логика поиска дубля либо слабая, либо ключ выбран неудачно.
  • Уведомление не уходит. Проверьте chat_id и форматирование текста сообщения.
  • При наплыве заявок всё тормозит. Тут уже надо смотреть на очередь, лимиты и поведение production-исполнений.

Я ещё советую сразу сделать отдельный workflow на ошибки. Когда основной сценарий падает, вы получите сообщение в свой чат и не узнаете о проблеме от разгневанного менеджера через полдня.

Чек-лист перед запуском

  1. У бота есть токен и он отвечает на стартовую команду.
  2. В n8n заведены credentials для Telegram и Google Sheets.
  3. В таблице создан лист с заголовками колонок.
  4. В Edit Fields собраны только нужные поля.
  5. Настроена проверка дублей.
  6. Есть ветка append и ветка update.
  7. После записи летит уведомление менеджеру.
  8. Подключён Error Trigger или отдельное сообщение об ошибке.
  9. Вы проверили сценарий на новых и повторных заявках.

FAQ

Подойдёт ли такая схема вместо CRM?

Для малого потока заявок — вполне. Если команда растёт, появляются воронки, отчёты и несколько отделов, тогда уже логично думать о CRM. Но на старте Google Sheets плюс n8n часто закрывают задачу очень достойно.

Можно ли обойтись одним Telegram и таблицей?

Можно, но руками вы быстро упрётесь в хаос. n8n как раз и нужен, чтобы соединить входящий поток, логику проверки, запись, обновление и уведомления в один маршрут.

Что лучше брать как уникальный ключ?

Идеально — свой lead_id. На практике ещё помогают телефон, username и связка из нескольких полей. Главное, чтобы правило совпадения было стабильным.

Нужно ли писать код?

В простом сценарии часто хватает стандартных узлов. Код пригодится, если захотите сложную нормализацию, хитрую дедупликацию или нестандартную маршрутизацию.

Можно ли писать не только текст, но и файлы?

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

Подходит ли это для нескольких менеджеров?

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

Вывод

Если смотреть по-ремесленному, вся идея тут простая: заявка не должна жить только в чате. Её надо превратить в запись, назначить ей статус, сохранить историю и дать команде быстрый доступ. Связка Telegram, Google Sheets и n8n делает именно это.

Я бы запускал такую систему в три захода. Сначала приём и запись. Потом проверка дублей и статусы. Потом уведомления, напоминания и, если нужно, ИИ-блок для классификации. Такой путь работает спокойно, предсказуемо и с понятным результатом уже на первом этапе.

Когда всё собрано толково, менеджеры меньше ковыряются в рутине, владелец видит поток заявок в таблице, а клиент не теряется между «щас отвечу» и «ой, я забыл». Для мастерской автоматизации это уже отличный расклад.

Метки: , , , , , , ,