# Учет заказов в Telegram: своя связка вместо Make за $20 в месяц

> Я собрала карточку заявки для производства на заказ: Telegram принимает сообщение, таблица хранит параметры, а бот возвращает номер заказа.

Источник: https://vibeceh.ru/cases/uchet-zakazov-v-telegram-vmesto-make
Автор: Сергей Мазур · опубликовано 2026-08-15

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

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

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

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

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

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

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

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

## Что изменилось в моих буднях после учёта заказов в Telegram?

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

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

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

Карточка выглядит примерно так:

```text
Номер | Изделие | Материал | Размеры | Тираж | Желаемый срок | Статус | Что уточнить
ORD-000123 | вывеска | не указан | 1200 x 600 мм | 2 | к 15 сентября | нужно уточнить | материал
```

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

Если клиент прислал только «нужна деталь по размерам», это не повод сразу называть цену. Бот записывает обращение, но оставляет статус «нужно уточнить». Я вижу недостающее поле и задаю один конкретный вопрос.

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

## Почему своя система оказалась удобнее готового сервиса?

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

![Кот сравнивает готовый сервис и свою схему учёта заказа.](https://s3.regru.cloud/crossmark/statejnik/images/guides/uchet-zakazov-v-telegram-vmesto-make/kadr-1.webp)

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

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

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

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

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

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

## Из чего состоит учёт заказа в Telegram?

Схема состоит из пяти звеньев: бот принимает сообщение, Telegram передаёт событие веб-приложению, Apps Script обрабатывает его, Google Sheets добавляет новую строку, а бот отправляет подтверждение. Отдельно хранится счётчик номеров, чтобы следующие заказы получали последовательные идентификаторы.

Сначала я создаю бота через `@BotFather`. Telegram выдаёт токен. Это секретный ключ управления ботом, поэтому его нельзя публиковать, класть в открытую таблицу или отправлять клиенту.

Клиент пишет боту. Telegram формирует событие `Update`. В нём может быть обычное сообщение или команда. Событие передаётся на HTTPS-адрес вебхука, где его принимает Apps Script.

Apps Script запускает функцию `doPost`. Она получает JSON, достаёт текст сообщения и раскладывает его по полям карточки. Если сообщение свободное, помощник может сохранить текст целиком и отметить параметры, которые ещё надо уточнить.

Дальше данные добавляются в [Google Sheets](/concepts/google-tablicy). Для этого используется операция `spreadsheets.values.append`: она добавляет значения в следующую строку таблицы. Счётчик формирует номер, например `ORD-000123`, а новый номер сохраняется отдельно.

После записи бот вызывает `sendMessage`. В запросе нужны `chat_id` клиента и текст ответа. Подтверждение лучше отправлять после записи, а не до неё. Иначе клиент увидит «заявка принята», а строки в таблице может не оказаться.

В документации Telegram описаны два взаимоисключающих способа получать обновления: метод getUpdates и вебхуки ([Telegram Bot API](https://core.telegram.org/bots/api)).

Для этой схемы я выбираю вебхук. Он передаёт событие прямо в опубликованное веб-приложение. `getUpdates` и вебхук одновременно для одного бота не нужны.

## Что нужно поставить и сколько это стоит?

Для сборки нужны Visual Studio Code и помощник Claude Code, который работает внутри редактора. Установить их надо один раз: скачать, запустить и войти в аккаунт. Claude Pro стоит `$20` в месяц официально, а при оплате через посредника ориентир составляет около `2 400 ₽` в месяц.

Visual Studio Code нужен как рабочая папка с файлами. Я не пишу в нём программу вручную. Открываю проект, запускаю помощника и смотрю, какие изменения он предлагает.

[Claude Code](/guides/claude-code-zakryt-sekrety-ot-agenta-pered-pervoj-zadachej) встраивается в редактор и понимает задачу по описанию обычными словами. Я не объясняю ему «сделай красиво». Я описываю, что происходит с заявкой, какие поля обязательны и что должно произойти после записи.

Установка занимает около четверти часа. Скачай редактор, установи помощника, войди в аккаунт и открой отдельную папку проекта. Если помощнику понадобится дополнительный компонент, он должен сказать об этом прямо и провести по установке.

Бесплатный Claude существует, но Claude Code в него не входит. Подписка Pro остаётся постоянной статьёй расходов схемы, и её стоит [контролировать по лимитам Claude Code](/guides/claude-code-limity-podpiski-i-bezopasnyy-byudzhet-proekta). Официальный тариф Anthropic составляет `$20` в месяц. Российский ориентир около `2 400 ₽` получен через посредника, это не официальный рублёвый прайс. Комиссия и курс могут измениться.

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

Бота создай отдельно в Telegram:

1. Открой `@BotFather`.
2. Отправь команду `/newbot`.
3. Придумай имя и username бота.
4. Сохрани выданный токен в закрытом месте.
5. Не вставляй токен в публичный код и не отправляй его в чат.

Подготовь Google-таблицу с заголовками. Например:

```text
order_number | client_name | chat_id | product | material | dimensions | quantity | desired_deadline | status | missing_fields | received_at | update_id
```

Я не добавляю сложные листы и формулы на старте. Сначала нужна одна понятная таблица и один маршрут от сообщения до подтверждения.

## Как собрать бота для заказов без Make по шагам?

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

![Собака удивлённо смотрит на карточки семи шагов сборки бота.](https://s3.regru.cloud/crossmark/statejnik/images/guides/uchet-zakazov-v-telegram-vmesto-make/kadr-2.webp)

Открой отдельную папку в Visual Studio Code и начни не с кода, а с описания своей работы.

   

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

Создай Google-таблицу и добавь одну строку с полями заказа.

   ```text
   order_number | client_name | chat_id | product | material | dimensions | quantity | desired_deadline | status | missing_fields | received_at | update_id
   ```

Название таблицы и листа выбери понятное, например `Заказы` и `Orders`. Не добавляй пока формулы, фильтры и отдельные листы для отчётов. Скопируй идентификатор таблицы из её URL и передай его помощнику только в закрытом рабочем проекте.

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

   

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

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

   

Отправь боту тестовое сообщение после нажатия `Start`. Сначала проверь, что событие дошло до Apps Script. На этом шаге строка в таблице ещё может не появиться, но ошибка должна быть видна в истории запусков.

> [!warning] Один бот - один webhook
> Не подключай один токен одновременно к двум обработчикам. Второй сценарий может перехватить обновления, и бот перестанет принимать сообщения там, где ты их ждёшь.

Теперь попроси помощника разобрать входной JSON и записать данные в следующую строку Google Sheets.

   

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

Номер надо выдавать внутри обработчика, до подтверждения клиенту.

   

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

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

   

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

Так собирают программы с ИИ-помощником по описанию задачи, и называется это [Вайб-кодинг](/concepts/vajb-koding). Я не копировала готовый код из статьи, а просила помощника собрать конкретные части под свою таблицу и правило обязательных параметров.

## Что появится после сборки и что не нужно трогать?

После сборки появятся Telegram-бот, опубликованное веб-приложение Apps Script, обработчик `doPost`, таблица Google Sheets и постоянный счётчик в `ScriptProperties`. Отдельно работает `ScriptLock`, который не даёт двум одновременным заявкам получить один номер.

Веб-приложение принимает HTTP-запрос от Telegram. Функция `doPost` получает событие, передаёт его обработчику и возвращает технический ответ. Сам клиент видит не код, а подтверждение в Telegram.

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

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

Не трогай вручную обработчик после первого рабочего теста. Если надо изменить поле или статус, сначала попроси помощника перечислить, что именно он меняет. Рабочую запись и выдачу номера нельзя переписывать целиком ради одного нового столбца.

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

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

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

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

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

![Человек прикрывает лицо рядом с предупреждениями о сбоях заказа.](https://s3.regru.cloud/crossmark/statejnik/images/guides/uchet-zakazov-v-telegram-vmesto-make/kadr-3.webp)

### Один заказ записался дважды

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

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

### Сообщение обрабатывают два сценария

У одного Telegram-бота должен быть один активный webhook. Если подключить токен к нескольким обработчикам, обновления могут приходить не туда, куда ты ожидаешь.

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

### Обновление потерялось

Telegram хранит необработанные обновления ограниченное время, не дольше 24 часов. Если веб-приложение было недоступно, старое событие может уже не восстановиться.

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

### Таблица вернула ошибку 429

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

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

### Номер увеличился, но строка не появилась

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

Пропуск номера сам по себе не означает потерю заказа. Опаснее, если один номер появился у двух клиентов.

### Строка появилась, подтверждения нет

Сначала открой таблицу и проверь статус записи. Если строка есть, повторно отправь подтверждение по сохранённому `chat_id`, а не создавай новую строку.

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

### Дедупликация не сработала

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

Нельзя обещать, что такая дедупликация уже обнаружит старые дубли. Если `update_id` не сохранялся, надёжного ключа для сравнения могло не быть.

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

Самостоятельная сборка требует платной подписки Claude Pro за `$20` в месяц, это около `2 400 ₽` через посредника, и `0 ₽` обязательных платежей по остальной схеме по данным проверки. Готовые сервисы стоят от `0 ₽` до `2 999 ₽` в месяц, а разработка на заказ считается по запросу подрядчика.

| Вариант | Цена | Что получаешь |
|---|---:|---|
| Самостоятельная сборка | `$20` в месяц официально, около `2 400 ₽` через посредника | Своя схема Telegram, Google Sheets и Apps Script |
| Готовый сервис | от `0 ₽` до `2 999 ₽` в месяц | Интерфейс и функции, предусмотренные тарифом |
| Разработка на заказ | по запросу подрядчика (FreelanceSpace) | Решение под задачу, но изменения зависят от подрядчика |
| Запуск готового решения | по запросу подрядчика | Коммерческий запуск с собственной стоимостью |

Бесплатный тариф Unisender указан в собранных данных, но он не подтверждает интеграцию именно с Google Sheets. Поэтому я не записываю его в готовую замену этой схеме без дополнительной проверки.

У Salebot есть платный тариф «Бизнес». Это уже не нулевая стоимость и не гарантия, что обязательные поля производства на заказ будут устроены так, как надо.

В самостоятельной сборке обязательная платная часть это помощник. Официальная цена Claude Pro составляет `$20` в месяц. Российский ориентир около `2 400 ₽` получен через посредника и может меняться. Telegram, Google Sheets и Apps Script в собранной схеме не дают подтверждённой отдельной обязательной оплаты по данным проверки.

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

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

## Что сделать сегодня, если технологии раздражают?

Начни с одного маршрута: опиши поля заявки обычными словами, подготовь Google Sheets, создай бота через `@BotFather`, попроси помощника подключить Apps Script и проверь одну тестовую запись. Не добавляй сразу каталог, оплату, рассылки и склад: сначала добейся одной строки, номера и честного статуса.

1. Запиши обязательные поля: изделие, материал, размеры, тираж и желаемый срок.
2. Создай лист `Orders` с заголовками.
3. Создай бота через `@BotFather` и сохрани токен закрыто.
4. Открой папку проекта в Visual Studio Code.
5. Отправь помощнику первый промпт из раздела сборки.
6. Проверь тестовое сообщение после нажатия `Start`.
7. Сверь строку, номер, статус и подтверждение.
8. Отправь второе сообщение и проверь защиту от дубля.

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

Если технологии раздражают, не начинай с терминов. Скажи помощнику: «клиент прислал заявку, мне надо сохранить вот эти поля и спросить только то, чего не хватает». Дальше он уточнит технические шаги.

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

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

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

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

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

Подходит для простой отметки выдачи. Добавь статус «выдано», дату выдачи и, если это необходимо, комментарий. Для сложной логистики, нескольких складов и учёта остатков потребуется отдельная проверка. Google Sheets и Telegram не превращаются автоматически в складскую систему.

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

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

В этой схеме обработка идёт так: Telegram принимает сообщение, веб-приложение получает событие, Apps Script проверяет данные, Google Sheets добавляет строку, счётчик выдаёт номер, а бот отправляет подтверждение. Неполная заявка получает статус «нужно уточнить» и список полей для следующего вопроса.

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

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

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

Excel подойдёт для ручного учёта, но в этой схеме запись выполняется в Google Sheets. Таблица нужна как хранилище, которое получает строку после сообщения Telegram. Если работа ведётся только в Excel, автоматический маршрут надо проектировать отдельно, а не считать его готовым из-за похожего формата таблиц.

Клиент отправляет сообщение с телефона, а владелица может открыть Google Sheets или Telegram там же. Но настройка Apps Script и проверка ошибок удобнее на компьютере. Телефон не отменяет резервные копии, контроль доступов и проверку того, появилась ли строка после сообщения.

Прямое сравнение с CallRec по данным проверки не подтверждено. Связка Telegram и Google Sheets закрывает приём сообщения, запись параметров, номер и статус уточнения. Нельзя автоматически считать её заменой CallRec, если нужны функции, которых в этой схеме нет.

Оставь телефон, сайт или ручную запись менеджером. Бот не может начать разговор первым, поэтому клиент должен сам открыть его и отправить сообщение. Заказ из другого канала можно занести в ту же таблицу с источником «телефон» или «сайт» и выдать номер по общему правилу.

- [Telegram Bot API](https://core.telegram.org/bots/api?source=post_page)
- [Bots: An introduction for developers](https://core.telegram.org/bots)
- [Google Apps Script Web Apps](https://developers.google.com/apps-script/guides/web)
- [Google Sheets API: append values](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/append?hl=en)
- [Google Apps Script Properties Service](https://developers.google.com/apps-script/reference/properties/)
- [Google Apps Script Lock Service](https://developers.google.com/apps-script/reference/lock?authuser=4)
- [Google Sheets API usage limits](https://developers.google.com/workspace/sheets/api/limits)
- [Choose a Claude plan](https://support.claude.com/en/articles/11049762-choose-a-claude-plan)
- [Use Claude Code with Pro or Max](https://support.claude.com/en/articles/11145838-use-claude-code-with-your-pro-or-max-plan)
- [Plans and Pricing](https://claude.com/pricing)
- [Where can I access Claude?](https://support.claude.com/en/articles/8461763-where-can-i-access-claude)
- [Как оплатить Claude из России в 2026 году](https://companies.rbc.ru/news/HDRD3kfFia/kak-oplatit-claude-iz-rossii-v-2026-godu-polnyij-gajd/)
- [Оплата Claude через посредника](https://habr.com/ru/companies/tsnis/articles/1061754/)
- [Duplicate Entries in Google Sheet from webhook](https://community.make.com/t/duplicate-entries-in-google-sheet-from-webhook/22290)
- [Telegram bot stopped listening to Watch Updates](https://community.make.com/t/telegram-bot-stopped-listening-to-watch-updates/63393)
- [Resource Exhausted](https://community.make.com/t/resource-exhausted/22742)
- [Overview of error handling](https://help.make.com/overview-of-error-handling)
- [Telegram-заявки через Make и Google Sheets](https://mayai.ru/bot-dlya-zayavok-telegram-make/)
- [ПитБот - Telegram-бот для автомоек, шиномонтажей и автосервисов](https://pit-bot.ru/)

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