Телеграм-бот для селлера WB обычно начинается с уведомлений о каждом заказе. Первую неделю это радует, через месяц сообщения перестают читать. Важный сигнал тонет среди обычных, и бот превращается в шум.
Коротко
- Бот нужен для сигналов, на которые вы что-то делаете: заказы упали ниже порога, остаток дошёл до точки перезаказа, реклама вышла за предел.
- Уведомления о каждом заказе при 40 заказах в день дают 1 200 сообщений в месяц. Одна утренняя сводка даёт 30.
- Порог «среднее минус два корня из среднего» даёт около одной ложной тревоги за два месяца. Порог «минус один корень» даёт четыре-пять ложных тревог в месяц.
- Свой бот собирается из трёх частей: бот от @BotFather, Google Таблица с цифрами и скрипт Apps Script, который раз в день проверяет пороги и пишет в Телеграм.
- Сигналы рынка (спрос категории, новые продавцы, цены соседей) из своего кабинета не получить. Для них нужны данные витрины.
Какие уведомления нужны телеграм-боту для селлера WB
Нужны уведомления, за которыми стоит действие. Проверка такая: если сообщение пришло, а вы ничего не меняете, его надо убрать или поднять порог.
Вот пять сигналов, которые проходят эту проверку. Пороги взяты из опубликованных статей блога, ссылки на расчёты в последней колонке.
| Сигнал | Порог | Что делать | Откуда порог |
|---|---|---|---|
| Заказы упали | ниже «среднее − 2 × √среднее» | проверить остатки, цену, рекламу | пороги тревоги |
| Остаток кончается | дни остатка ниже точки перезаказа в днях | заказать поставку | страховой запас |
| Реклама вышла за предел | ДРР выше предельного 7 дней подряд при 30+ заказах | снизить ставку | предельный ДРР |
| Расход рекламы против плана | больше плана на день на 20% | проверить ставки и кампании | что смотреть каждый день |
| Плохие отзывы | новый отзыв с оценкой 1–3 | ответить и разобрать причину | там же |
ДРР здесь означает долю рекламных расходов: сколько процентов выручки ушло на рекламу. Точка перезаказа означает остаток, при котором пора заказывать следующую поставку, чтобы товар не кончился до её приезда.
Сигналы из таблицы различаются частотой. Остатки и расход рекламы стоит проверять каждый день. Падение заказов и ДРР надёжнее видны за неделю, но дневная проверка с правильным порогом тоже работает, как показывает расчёт ниже.
Уведомления о заказах: почему бот на каждый заказ бесполезен
Уведомления о заказах по одному не дают решения. При 40 заказах в день это 1 200 сообщений в месяц, и ни одно из них не говорит, всё ли в порядке.
Решение даёт отклонение от обычного уровня. Утренняя сводка «вчера 31 заказ при среднем 40 и пороге 27,4» говорит больше, чем 31 отдельное сообщение. Если заказов меньше порога, бот пишет тревогу. Если выше, бот может молчать или прислать одну строку.
Сколько ложных тревог даёт каждый порог
Заказы колеблются сами по себе, даже когда в магазине ничего не случилось. Разброс заказов около корня из среднего: при 40 заказах в день корень равен 6,3, и день с 34 заказами ничего не значит.
Посчитаем по распределению Пуассона, как часто бот поднимет ложную тревогу, если на самом деле спрос не менялся. Распределение Пуассона описывает число случайных событий за период, когда среднее известно.
| Среднее в день | Порог | Ложная тревога в день | За 30 дней |
|---|---|---|---|
| 40 | среднее − 1 × √среднее = 33,7 | 15,1% | 4,5 |
| 40 | среднее − 2 × √среднее = 27,4 | 1,9% | 0,6 |
| 40 | среднее − 3 × √среднее = 21,0 | 0,07% | 0,02 |
| 15 | среднее − 2 × √среднее = 7,3 | 1,8% | 0,5 |
| 100 | среднее − 2 × √среднее = 80,0 | 1,75% | 0,5 |
Порог «минус два корня» даёт примерно одну ложную тревогу за два месяца при любом среднем. Порог «минус один корень» поднимает тревогу четыре-пять раз в месяц впустую, и через месяц его перестанут читать.
Как быстро бот заметит настоящее падение
Строгий порог реже ошибается, но позже замечает. Допустим, среднее 40 заказов, а спрос на самом деле упал. Вот вероятность, что бот с порогом 27,4 напишет в первый же день и хотя бы в один из первых двух дней:
| Падение | Новое среднее | Тревога в первый день | Хотя бы раз за два дня |
|---|---|---|---|
| 20% | 32 | 21,6% | 38,6% |
| 30% | 28 | 47,5% | 72,4% |
| 40% | 24 | 76,8% | 94,6% |
Падение на 20% дневной порог ловит плохо. Для таких падений есть второе правило: тревога, если два дня подряд заказы ниже «среднего минус один корень». При 40 заказах в день оно даёт 0,66 ложной тревоги в месяц. Падение на 20% оно замечает с вероятностью 37,8% за первые два дня, падение на 30% с вероятностью 72,3%.
Рабочая схема: два правила вместе. Один день ниже «минус два корня» или два дня подряд ниже «минус один корень». Это даёт около одной ложной тревоги в месяц и ловит крупные падения за один-два дня. Мелкие падения надёжнее проверять по неделям, как в статье про то, когда бить тревогу.
Среднее считайте за последние 28 дней без особых дней: распродаж, дней без остатка, праздников. Иначе порог уедет вниз вместе с провалом, который вы хотите поймать.
Бот по остаткам: что взять из «Истории остатков» WB
Бот по остаткам пишет, когда дней остатка меньше, чем точка перезаказа в днях. Сам по себе остаток в штуках ничего не говорит: 150 штук для товара с 16 продажами в день кончатся за девять дней, для товара с двумя продажами за два с половиной месяца.
Нужны две цифры:
Дни остатка = (Остаток на складах + Товар в пути) ÷ Скорость продаж в день
Точка перезаказа в днях = Срок пополнения + Дни страховки
Скорость продаж считайте как среднее за 14–28 дней, в которые товар был в наличии. Дни страховки берите по рабочему правилу из статьи про страховой запас и точку перезаказа. Это половина срока пополнения, но не меньше 3–5 дней продаж.
Пример: органайзер продаётся по 16 штук в день, поставка приходит за 8 дней. Страховка 4 дня, точка перезаказа 12 дней, или 192 штуки. На складах 150 штук, дней остатка 9,4. Бот напишет: «Органайзер: остатка на 9,4 дн., точка перезаказа 12 дн.». Поставку пора было заказать позавчера.
Остатки по дням на Wildberries лежат в отчёте «История остатков», раздел «Аналитика» → «Аналитика остатков». Глубина отчёта около трёх месяцев. Если вы ведёте таблицу для бота, переносите туда остаток раз в день, тогда история будет храниться у вас дольше.
Как собрать свой бот на Google Таблице
Свой бот собирается без сервера и без программиста. Нужны три вещи: бот в Телеграме, Google Таблица с цифрами и скрипт Apps Script, встроенный язык Google для автоматизации таблиц.
Шаг 1. Создайте бота и получите токен
Напишите @BotFather в Телеграме команду /newbot и пройдите шаги: имя бота и его адрес. В конце BotFather выдаст токен. Токен означает строку, которая даёт доступ к управлению ботом через Bot API. Его никому нельзя показывать.
Затем откройте своего бота и напишите ему любое сообщение. По документации Телеграма пользователь должен сам написать боту первым, иначе бот не сможет ему отправить сообщение.
Шаг 2. Узнайте номер чата
Бот отправляет сообщения в чат по его номеру, chat_id. Откройте в браузере адрес вида https://api.telegram.org/bot<токен>/getUpdates. В ответе найдите ваше сообщение и номер в поле chat → id. Это и есть номер чата. Входящие сообщения хранятся на сервере Телеграма не дольше 24 часов, поэтому открывайте адрес сразу после того, как написали боту.
Если хотите, чтобы сигналы видели двое, создайте группу, добавьте туда бота и возьмите номер группы тем же способом.
Шаг 3. Подготовьте таблицу
Сделайте лист «Сигналы» с одной строкой на товар:
| Товар | Заказов вчера | Среднее за 28 дней | Остаток, шт. |
|---|---|---|---|
| Органайзер | 24 | 40 | 150 |
| Термос | 45 | 42 | 600 |
| Ланч-бокс | 30 | 30 | 80 |
Ещё две колонки справа: «Скорость в день» и «Точка перезаказа, дн.». Для примера 16 и 12, 14 и 10, 9 и 11.
Цифры в таблицу можно вносить руками из кабинета или тянуть через API площадки. Как получить ключ API Wildberries и Ozon и что он даёт, мы разбирали в статье про API-ключ для WB и Ozon. Для начала хватит ручного ввода раз в день: так вы заодно проверите, что пороги работают.
Шаг 4. Вставьте скрипт
В таблице откройте «Расширения» → «Apps Script» и вставьте код:
const props = PropertiesService.getScriptProperties();
const TOKEN = props.getProperty('TG_TOKEN');
const CHAT_ID = props.getProperty('TG_CHAT');
function sendTg(text) {
UrlFetchApp.fetch('https://api.telegram.org/bot' + TOKEN + '/sendMessage', {
method: 'post',
payload: { chat_id: CHAT_ID, text: text }
});
}
function checkShop() {
const sheet = SpreadsheetApp.getActive().getSheetByName('Сигналы');
const rows = sheet.getDataRange().getValues().slice(1);
const alerts = [];
rows.forEach(function (r) {
const sku = r[0], yesterday = r[1], avg = r[2];
const stock = r[3], speed = r[4], reorderDays = r[5];
const limit = avg - 2 * Math.sqrt(avg);
if (yesterday < limit) {
alerts.push(sku + ': заказов вчера ' + yesterday + ', порог ' + limit.toFixed(1));
}
const days = stock / speed;
if (days < reorderDays) {
alerts.push(sku + ': остатка на ' + days.toFixed(1) + ' дн., точка перезаказа ' + reorderDays + ' дн.');
}
});
if (alerts.length) sendTg(alerts.join('\n'));
}
Токен и номер чата не пишите в основной код: тот, кому вы покажете таблицу, получит доступ к боту. Сохраните их один раз в свойствах скрипта. Добавьте под основным кодом функцию, впишите в неё свои значения и запустите её один раз кнопкой запуска в редакторе:
function setup() {
props.setProperties({ TG_TOKEN: 'ваш токен', TG_CHAT: 'номер чата' });
ScriptApp.newTrigger('checkShop').timeBased().everyDays(1).atHour(9).create();
}
После запуска сотрите токен и номер чата из функции setup: значения уже сохранены в свойствах скрипта, а вторая строка поставила ежедневный запуск проверки.
На таблице из шага 3 скрипт пришлёт одно сообщение из трёх строк: органайзер упал ниже порога 27,4 и ушёл ниже точки перезаказа, у ланч-бокса остатка на 8,9 дня при точке перезаказа 11. Термос в сообщение не попадёт: у него всё в порядке.
Шаг 5. Проверьте запуск по расписанию
Функция setup поставила триггер: проверка будет запускаться раз в день около 9 утра. Google не обещает точную минуту: по документации время запуска может немного сдвигаться, и Apps Script сам выбирает момент между 9 и 10 часами. Если запустите setup второй раз, появится второй триггер и сообщения начнут приходить дважды.
Ограничения, которые стоит знать
У Телеграма и у Google есть лимиты. Для одного магазина они далеко, но их полезно держать в голове:
| Что | Лимит |
|---|---|
| Сообщения бота в один чат | не чаще одного в секунду |
| Сообщения бота в группу | до 20 в минуту |
| Длина одного сообщения | до 4 096 символов |
| Запросы из Apps Script, бесплатный аккаунт | 20 000 в сутки |
| Время работы триггеров, бесплатный аккаунт | 90 минут в сутки |
| Одно выполнение скрипта | до 6 минут |
Если товаров сотни и тревог много, собирайте их в одно сообщение и делите на части по 4 000 символов. Одна проверка в день расходует один-два запроса из 20 000.
Сигналы рынка: чего бот на своих цифрах не увидит
Свой бот видит только ваш магазин. Он не скажет, что упал спрос во всей категории, что зашёл крупный продавец или что соседи сдвинули цены вниз. Эти сигналы часто объясняют, почему у вас упали заказы, и без них непонятно, что делать с тревогой.
Вручную такие сигналы собираются раз в неделю. Возьмите выборку из 20–40 карточек категории, выпишите цены и число отзывов, сравните с прошлой неделей. Метод и пороги для новичков в категории мы показывали в статье о том, как узнать, что в нишу зашёл новый конкурент. На это уходит час-два в неделю на категорию, и это самая тяжёлая часть мониторинга.
«Радар» берёт эту часть на себя. Он каждый день пересчитывает ваши категории на четырёх площадках и показывает экраны по площадкам, ценовым диапазонам и неделям. Когда в категории что-то меняется, приходит сигнал в телеграм. Так тревога вашего бота и сигнал рынка приходят в один мессенджер, и их можно сверить в то же утро.
Ошибки при настройке бота
Уведомление на каждый заказ. Сообщений много, решений ноль. Замените на утреннюю сводку с порогом.
Слишком мягкий порог. «Минус один корень» за один день даёт четыре-пять ложных тревог в месяц. Через пару недель сообщения перестают открывать, и настоящую тревогу пропускают.
Среднее вместе с провалами. Если в 28 дней попали распродажа или дни без остатка, среднее и порог сдвигаются. Убирайте такие дни из расчёта.
Остаток в штуках вместо дней. Порог «меньше 100 штук» одинаково плох для быстрого и медленного товара. Считайте дни остатка.
Токен в коде. Таблицу показывают бухгалтеру или менеджеру, токен уходит вместе с ней. Храните его в свойствах скрипта.
Бот без хозяина. Если сигнал пришёл, а отвечать за него некому, он бесполезен. Для каждого сигнала запишите, кто и что делает.
Чек-лист: бот, который читают
- Оставьте только сигналы, после которых вы что-то делаете.
- Для заказов поставьте два правила: один день ниже «среднее − 2 × √среднее» или два дня подряд ниже «среднее − √среднее».
- Считайте среднее за 28 дней без особых дней.
- Для остатков считайте дни остатка и сравнивайте с точкой перезаказа в днях.
- Создайте бота у @BotFather, напишите ему первым, возьмите номер чата через
getUpdates. - Запустите
setupодин раз: токен и номер чата уйдут в свойства скрипта, появится ежедневный триггер. - Сотрите токен из функции
setupпосле запуска. - Через месяц посчитайте, сколько тревог было и сколько из них потребовали действий. Если меньше половины, поднимите пороги.
Частые вопросы
Какие уведомления нужны селлеру в первую очередь?
Остатки ниже точки перезаказа и падение заказов ниже порога. Первое защищает от дней без товара, второе показывает проблему, пока она не стала дорогой. Потом добавьте расход рекламы против плана и отзывы с оценкой 1–3.
Нужен ли телеграм-бот для селлера WB, если заказов мало?
Да, но с другим окном. При 5–10 заказах в день дневные колебания слишком велики, и тревоги по заказам лучше считать по неделе. Бот по остаткам полезен при любом объёме.
Сколько ложных оповещений для селлера нормально?
Около одного в месяц. Порог «среднее минус два корня» за один день даёт примерно 0,5–0,6 ложной тревоги в месяц. Правило двух дней ниже «минус один корень» добавляет ещё 0,66. Если ложных тревог больше двух в месяц, порог слишком мягкий.
Можно ли сделать бот без программирования?
Скрипт из статьи короткий и вставляется целиком, менять в нём нужно только название листа. В отдельной функции setup нужно вписать токен и номер чата. Писать код с нуля не придётся.
Почему бот не присылает сообщения?
Чаще всего вы не написали боту первым или номер чата взят не тот. Проверьте адрес getUpdates, напишите боту ещё раз и возьмите номер из свежего ответа. Затем запустите checkShop вручную из редактора и посмотрите журнал выполнения.
Чем бот на своих цифрах отличается от сигналов по категории?
Свой бот видит заказы, остатки и рекламу вашего магазина. Сигналы по категории показывают спрос, число продавцов и цены у соседей. Первые говорят, что что-то случилось, вторые часто объясняют почему.
Что дальше
Начните с двух сигналов: остатки и заказы. Через месяц посмотрите, сколько тревог было полезными, и добавьте рекламу и отзывы. Полный список проверок на день, неделю и месяц лежит в статье о том, что смотреть селлеру каждый день.
Если хотите получать в тот же телеграм сигналы рынка по своим категориям, посмотрите, как устроен «Радар»: подписка 4 900 ₽ в месяц, ежедневный пересчёт ваших категорий на четырёх площадках, экраны по площадкам, ценовым диапазонам и неделям.
Посмотреть, что внутри «Радара» →
Источники
- Bots FAQ: My bot is hitting limits, Telegram, проверено 06.11.2026.
- From BotFather to «Hello World», Telegram, проверено 06.11.2026.
- Telegram Bot API: Making requests, getUpdates, Chat, Telegram, версия Bot API 10.3 от 24.08.2026, проверено 06.11.2026.
- Telegram Bot Features: BotFather, Telegram, проверено 06.11.2026.
- Quotas for Google Services, Google Apps Script, проверено 06.11.2026.
- Installable Triggers, Google Apps Script, проверено 06.11.2026.
- Class UrlFetchApp, Google Apps Script, проверено 06.11.2026.
- Poisson distribution, Wikipedia.
- Когда бить тревогу: на сколько упали заказы, Страховой запас и точка перезаказа, Предельный ДРР, Что смотреть селлеру каждый день, блог RADAR, прочитаны 06.11.2026.
