# Заявки с сайта в Telegram в 2026: своя система приёма за восемь шагов

> Как владелица небольшой стоматологической клиники собрала передачу заявок с сайта в Telegram и таблицу. Внутри схема, промпты и разбор поломок.

Источник: https://vibeceh.ru/cases/zayavki-s-sayta-v-telegram
Автор: Сергей Мазур · опубликовано 2026-08-10

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

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

А началось всё с обычной заявки, которую пришлось искать по нескольким перепискам.

## Что изменилось в работе клиники после автоматизации заявок?

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

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

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

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

Главное изменение: мне стало спокойнее из-за незакрытых обращений. Похожий подход описан в кейсе про [план лечения пациентов](/guides/plan-lecheniya-v-stomatologii), где следующий незавершённый шаг виден сразу. Непонятная заявка теперь остаётся в списке, пока с ней что-то не сделано.

## Почему своё решение удобнее готового сервиса?

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

![Кот с поднятой лапой выбирает свою связку вместо готового сервиса.](https://s3.regru.cloud/crossmark/statejnik/images/guides/zayavki-s-sayta-v-telegram/kadr-1.webp)

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

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

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

Своё решение требует контроля. Нужно следить за токеном, доступами, дублями, квотами и резервным каналом. Готовый сервис часть этой работы берёт на себя. Поэтому выбор зависит не от моды, а от того, насколько простой и устойчивой должна быть рутина.

## Из чего состоит связка заявка с сайта - Telegram - таблица?

бот для автоматического приема заявок в телеграм получает заявку не напрямую из формы, а через промежуточный обработчик. Форма сайта отправляет данные POST-запросом в опубликованное веб-приложение Google Apps Script. Функция `doPost(e)` принимает поля, добавляет новую строку в Google Таблицу и вызывает метод `sendMessage` Telegram Bot API для уведомления в нужном чате.

Схема выглядит так:

```text
Форма на сайте
    -> POST-запрос
    -> doPost(e) в Google Apps Script
    -> новая строка в Google Таблице
    -> sendMessage в Telegram
```

Форма передаёт обычные поля. Например, имя, телефон, комментарий и выбранное время. Apps Script получает эти данные и раскладывает их по заранее заданным колонкам.

Для записи используется метод `appendRow`. Он добавляет массив значений в новую строку текущей области данных таблицы. Сообщение в Telegram собирается из тех же полей:

```text
Новая заявка на первичный приём

Жалоба пациента: боль при жевании
Контакт: +7 900 000-00-00
Удобное время: после 18:00
Статус: новая
Следующий шаг: перезвонить пациенту
```

Отдельный сервер для маленького скрипта в этой схеме не нужен. Публичным HTTPS-адресом может служить опубликованное веб-приложение Apps Script. Это не гарантия промышленной бесперебойной работы, а удобная простая схема для небольшого потока.

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

Все запросы к Telegram Bot API должны выполняться по HTTPS и иметь такой вид: `https://api.telegram.org/bot<token>/METHOD_NAME`.

## Что поставить перед сборкой и какие доступы подготовить?

Для приема заявок с сайта понадобятся редактор Visual Studio Code, помощник Claude Code, Telegram-аккаунт, бот от `@BotFather`, токен, чат или группа, `chat_id`, Google-аккаунт, таблица, доступ к форме сайта и URL веб-приложения. Установка двух инструментов занимает около 15 минут: скачать, запустить и войти в аккаунт.

Редактор Visual Studio Code нужен как папка проекта с окном для файлов. Самой писать код в нём не придётся.

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

Подписка помощника обязательна для этой схемы. Помощник работает по подписке. Актуальную цену смотри на странице тарифов.

До сборки подготовь:

- Telegram-аккаунт;
- бота, созданного через `@BotFather`;
- токен бота;
- рабочий чат или группу;
- `chat_id` получателя;
- Google-аккаунт;
- Google Таблицу;
- список колонок;
- доступ к настройкам формы сайта;
- возможность включить webhook;
- URL опубликованного веб-приложения Apps Script.

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

## Как собрать отправку заявок в Telegram и таблицу по шагам?

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

![Кот прикрывает морду лапой рядом со схемой первых трёх шагов сборки.](https://s3.regru.cloud/crossmark/statejnik/images/guides/zayavki-s-sayta-v-telegram/kadr-2.webp)

Сделай [Google Таблицу](/concepts/google-tablicy) и добавь первую строку с понятными заголовками.

   ```text
   created_at | lead_id | жалоба пациента | контакт | удобное время | способ связи | статус | следующий звонок | результат Telegram
   ```

Такая структура удерживает не только саму заявку, но и действие после неё. Статус можно начать с вариантов `новая`, `уточнить`, `записан`, `перезвонить пациенту`, `закрыта`.

   

В ответ помощник даст структуру и предложит значения статусов. Проверь, что в ней есть жалоба, контакт и следующий шаг.

Не угадывай названия полей. Посмотри, как они подписаны в настройках формы, и передай их помощнику.

   

Помощник должен показать соответствие полей. Если он придумал поле, которого нет на сайте, останови его и поправь описание.

Попроси помощника принимать данные формы через `doPost(e)` и сначала объяснить, какие файлы он изменит.

   

Правильный результат - помощник объясняет, что POST принимает форма, а `doPost(e)` становится входной точкой. Сам код построчно разбирать не нужно.

Свяжи принятые поля с листом таблицы и сохрани результат до отправки уведомления.

   

В таблице должна появиться одна новая строка. Повторная отправка с тем же `lead_id` не должна создавать вторую заявку.

Сделай сообщение коротким, чтобы администратор увидел главное без поиска по переписке.

   

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

Получи токен через `@BotFather`, добавь бота в нужную группу и подготовь `chat_id`. Для личного чата сначала открой диалог с ботом и нажми `Start`.

   

`401` обычно указывает на проблему с токеном, `403` на недоступного получателя, `429` на превышение скорости. Таймаут нельзя автоматически считать доказанной неудачей.

В Apps Script выбери `Deploy`, затем `New deployment`, тип `Web app`. Скопируй полученный HTTPS-адрес.

   

Если форма работает на Tilda, в настройках сайта включи Webhook, укажи HTTPS-адрес, включи `WEBHOOK` в блоке формы и заново опубликуй страницу. Tilda ждёт ответ до пяти секунд и при неудаче делает ещё две попытки примерно через минуту.

Вставь адрес веб-приложения в настройку формы, отправь тестовую заявку и проверь сразу три места: сайт, таблицу и Telegram.

   

После первого результата помощника становится понятнее, что именно произошло: так собирают программы без программиста, и называется это [вайб-кодинг](/concepts/vajb-koding). Не принимай результат на веру. Тестовая заявка должна пройти всю цепочку, а не просто показать зелёное сообщение на сайте.

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

## Что появилось в папке после успешной сборки?

После сборки помощник создаёт рабочие файлы проекта, конфигурацию и структуру Apps Script с обработчиком webhook и записью в таблицу. Разбирать файлы построчно не требуется. Токен и другие секреты хранятся в защищённых свойствах, а URL веб-приложения и название листа должны быть доступны настройкам проекта.

В папке могут появиться:

- файл с планом задачи;
- файлы обработчика POST;
- настройки колонок;
- инструкция по публикации;
- копия конфигурации без секретных значений;
- журнал или структура статусов отправки.

Не меняй случайные строки только потому, что они выглядят непонятно. Сначала попроси помощника назвать файл и объяснить, за что он отвечает. Особенно не трогай токен, URL веб-приложения и название листа без резервной копии.

## Что делать, если заявка не приходит или появляется дважды?

Начни с таблицы и журнала выполнений Apps Script, затем проверь `chat_id`, команду `Start`, токен, ответ Telegram и повторную доставку webhook. Дубли возникают, когда таймаут принимают за доказанную ошибку. Для защиты нужны постоянный `lead_id` и статусы `pending`, `sent`, `unknown`, `failed`, чтобы повтор не создавал новую строку автоматически.

![Мужчина безымянного типажа закрывает лицо ладонью рядом со списком причин дублей.](https://s3.regru.cloud/crossmark/statejnik/images/guides/zayavki-s-sayta-v-telegram/kadr-3.webp)

| Симптом | Проверка | Фраза для помощника |
|---|---|---|
| В личный чат ничего не приходит | Открой диалог с ботом, нажми `Start`, проверь `chat_id` и ответ `403`. | `Проверь, почему бот не отправляет сообщение в личный чат. Проверь, был ли выполнен Start, правильный ли chat_id и что означает ответ 403. Не повторяй отправку бесконечно.` |
| Одна заявка появилась дважды | Сравни `lead_id`, время отправки и повторные вызовы webhook. | `Найди причину дубля заявки. Сравни lead_id, update_id и время повторной доставки. Сделай так, чтобы повтор одного lead_id обновлял существующую строку, а не добавлял новую.` |
| После ошибки 500 идут повторы | Проверь быстрый ответ webhook и журнал выполнений. | `Проверь обработчик webhook на ответ 500 и медленные операции. Сделай быстрый успешный ответ, добавь дедупликацию по lead_id и update_id, а длительные действия вынеси в повторную обработку.` |
| Появились 401, 403 или 429 | Проверь токен, доступ получателя и скорость отправки. | `Разбери ответы Telegram 401, 403 и 429 в этой связке. Покажи, что проверить для каждого кода, добавь понятную запись ошибки в таблицу и не записывай токен в лог.` |
| Заявки перестали записываться | Открой журнал Apps Script и проверь квоты, время выполнения и размер таблицы. | `Проверь журнал Apps Script и найди, не упёрся ли проект в квоту, лимит времени или размер таблицы. Предложи архивирование старых заявок и повторную обработку тех, у кого статус failed.` |

Telegram мог принять сообщение, а ответ не дошёл обратно. Не отправляй его повторно сразу. Сначала сохрани `lead_id` и поставь статус `unknown`, иначе в чате появятся дубли.

Последняя поломка неприятнее остальных: сообщение могло уйти, но результат отправки потерялся. Я бы не пыталась угадывать по чату. Попроси помощника внедрить статусы `pending / sent / unknown / failed`, сохранить `lead_id` и сделать отдельную проверку неизвестных результатов.

## Сколько стоит своё решение и когда оно не подойдёт?

Собственная связка состоит из Google Apps Script, Google Таблицы, Telegram Bot API и платной подписки Claude Code. Подтверждённых цен готового SaaS-сервиса и подрядчика для этой связки у меня нет. Мне предлагали готовую связку за 45 000 рублей, но это была другая услуга (1 000 перехваченных клиентов), а не автоматизация заявок клиники.

Техническая схема подходит при небольшом потоке обращений и понятном количестве действий на одну заявку. Apps Script для потребительского аккаунта имеет квоту `URL Fetch calls` 20 000 в день, максимальное время одного выполнения 6 минут и ограничения на одновременные запуски.

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

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

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

## Что сделать сегодня, если технологии пугают?

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

Начни с рутины, которая повторяется каждый день:

1. Запиши, что беспокоит пациента и какие поля нельзя пропускать.
2. Определи, куда администратору удобнее получать уведомление.
3. Создай таблицу со статусом и следующим действием.
4. Подготовь тестовую форму.
5. Собери связку по одному шагу за раз.
6. Проверь повторную отправку и недоступность Telegram.

На практикуме этому учат руками на собственной задаче. Там вайб-кодинг перестраивает конкретную работу и учит чинить её без ожидания программиста.

## Вопросы и ответы

Заявка с сайта может одновременно попасть в Telegram и Google Таблицу через POST-запрос, Apps Script и Telegram Bot API. Для маленького потока отдельный сервер не обязателен, но нужны бот, токен, `chat_id`, доступ к форме и проверка дублей, ошибок webhook, квот и резервного канала.

Бот для автоматического приема заявок в телеграм работает так: форма сайта отправляет POST-запрос на URL веб-приложения Apps Script. Скрипт получает поля, записывает строку в Google Таблицу и вызывает Telegram Bot API методом `sendMessage`.

Они должны появляться в рабочем Telegram-чате и в Google Таблице. Если сообщения нет, сначала проверь журнал Apps Script и строку с той же заявкой в таблице.

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

Для небольшой связки можно использовать опубликованное веб-приложение Google Apps Script. Отдельный сервер понадобится, если поток, требования к надёжности или объём обработки выйдут за границы квот Apps Script.

Да, если форма умеет отправлять данные через Webhook. Tilda передаёт данные методом POST, требует HTTPS и ожидает ответ скрипта в течение пяти секунд.

Webhook - это способ, при котором сервис сам отправляет обновление на указанный HTTPS-адрес. Telegram передаёт туда POST-запрос с данными обновления.

`chat_id` указывает, в какой личный чат, группу или канал Telegram отправлять сообщение. Одного токена бота для отправки недостаточно.

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

В этой схеме используется Google Таблица. Apps Script получает поля формы и добавляет их новой строкой через `appendRow`.

Сравни `lead_id`, `update_id` и время повторной доставки. Добавь проверку постоянного `lead_id`, чтобы повторная обработка обновляла существующую строку, а не создавала новую.

Создай Telegram-канал, добавь бота администратором с правом отправки сообщений и укажи идентификатор канала. После этого отправь тестовую заявку и проверь результат.

Минимальная связка состоит из формы сайта, Google Apps Script, Google Таблицы и Telegram Bot API. Для Tilda дополнительно включается Webhook.

Заявка должна сохраниться в таблице независимо от результата отправки. В колонке результата ставь `unknown` или `failed`, а затем отправляй уведомление через резервный канал.

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

Отправь тестовую форму, проверь одну строку в таблице и одно сообщение в Telegram. Затем повтори отправку, проверь отсутствие дубля, ответы `401`, `403`, `429`, журнал Apps Script и работу резервного канала.

- [Telegram: Bots](https://core.telegram.org/bots)
- [Telegram Bot API](https://core.telegram.org/bots/api)
- [Telegram: Webhooks](https://core.telegram.org/bots/api#setwebhook)
- [Telegram Bots Features](https://core.telegram.org/bots/features)
- [Google Apps Script: Web Apps](https://developers.google.com/apps-script/guides/web)
- [Google Apps Script: метод appendRow](https://developers.google.com/apps-script/reference/spreadsheet/sheet#appendRow%28Object%29)
- [Google Apps Script: квоты](https://developers.google.com/apps-script/guides/services/quotas)
- [Google Apps Script: устранение неполадок](https://developers.google.com/apps-script/guides/support/troubleshooting)
- [Tilda: Webhook для отправки данных формы](https://help.tilda.cc/forms/webhook)
- [Google Drive: ограничения Google Таблиц](https://support.google.com/drive/answer/37603)
- [Telegram Bot API: проблема с отправкой пользователю](https://github.com/yagop/node-telegram-bot-api/issues/233)
- [Повторная отправка сообщений после таймаута](https://github.com/python-telegram-bot/python-telegram-bot/discussions/4630)
- [Повторные вызовы webhook после ответа 500](https://github.com/openclaw/openclaw/issues/16763)
- [Отозванный токен бота](https://github.com/tdlib/telegram-bot-api/issues/77)

_Это собирательная история выпускников практикума, а не рассказ одного человека: так эта работа устроена в большинстве таких дел._
