-10%Переходите к нам от другого подрядчика — дадим скидку на первый этап работ

Уведомление «Сообщить о поступлении»: проектируем правильно

Функция «Сообщить о поступлении» в интернет-магазине на 1С-Битрикс: подписка на товар и уведомление по остаткам из 1С

Покупатель нашёл нужный товар, открыл карточку — а там серое «Нет в наличии». В большинстве магазинов на этом история заканчивается: человек закрывает вкладку и идёт искать дальше. Но спрос-то был, живой и оплатоспособный, и вы его только что потеряли, ничего не получив взамен. Функция «Сообщить о поступлении» разворачивает этот сценарий: вместо тупика — форма, вместо ухода — контакт, вместо потерянной продажи — отложенный заказ.

В этом гайде разберём, как спроектировать подписку на поступление в интернет-магазине на 1С-Битрикс правильно: от формы в карточке до триггера по остаткам из 1С, от письма до антиспама и аналитики. Материал опирается на нашу практику автоматизации на 1С и обмена данными между учётной системой и сайтом.

Коротко

  • Подписка на поступление превращает нулевой остаток в зафиксированный спрос и точку контакта.
  • Ядро функции — триггер «остаток стал больше нуля», который ловят по данным обмена с 1С.
  • Обязательны порог срабатывания и очередь, иначе уведомление уйдёт всем при поступлении одной штуки.
  • Письма требуют корректных SPF/DKIM/DMARC и антиспам-логики, иначе не дойдут до подписчика.

Зачем магазину подписка на поступление

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

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

Как это выглядит для покупателя

Со стороны пользователя сценарий должен быть предельно коротким. В карточке товара без остатка вместо кнопки «В корзину» показывается кнопка «Сообщить о поступлении». По клику открывается компактная форма — по сути одно поле e-mail (для авторизованного клиента почта подставляется автоматически). После отправки — понятное подтверждение: «Мы напишем вам, как только товар появится».

Персональные рекомендации на основе модели Поведениепросмотры, покупкиМодельэмбеддинги / MLПохожие товарырядом в вектореРекомендациив карточке и корзине
Схема: поведение покупателей превращается в векторы (эмбеддинги), похожие товары оказываются рядом в пространстве — и попадают в блоки рекомендаций.

Что происходит под капотом

За простой формой стоит цепочка из нескольких звеньев, и надёжность функции определяется самым слабым из них. Схематично поток такой: покупатель оставляет подписку, она сохраняется в хранилище со статусом «активна»; параллельно из 1С регулярно приходят остатки; когда остаток товара становится положительным, срабатывает триггер, который выбирает активные подписки по этому товару и ставит их в очередь на отправку; подписчик получает письмо, а подписка помечается как отработанная.

Ключевое проектное решение — где именно ловить момент появления остатка. Есть два подхода: реактивный (обработчик события на изменение цены/остатка) и периодический (агент, который раз в N минут сверяет активные подписки с текущими остатками). У каждого свои плюсы, и выбор зависит от того, как устроен ваш обмен с 1С. Разберём это ниже.

Модель данных подписки

Подписка — это запись, связывающая товар, контакт покупателя и статус. От того, как спроектирована эта модель, зависит и скорость выборок, и возможность масштабирования. На небольших магазинах подписки ведут в инфоблоке или highload-блоке; на крупных — в отдельной таблице через D7 ORM с индексами.

ПолеНазначениеПример
ID товара / SKUНа что подпискаID элемента или торгового предложения
КонтактКуда слатьe-mail, Telegram chat_id
КаналСпособ доставкиemail / telegram / sms
СтатусСтадия обработкиактивна / отправлена / отписан
Дата созданияОчередь и аналитикаtimestamp
Дата отправкиФакт уведомленияtimestamp

Для крупного каталога и высоких объёмов подписок собственная ORM-таблица предпочтительнее: индекс по паре «товар + статус» позволяет мгновенно выбирать активные подписки при появлении остатка. Как грамотно проектировать такие сущности штатными средствами платформы, мы разбираем в статье про D7 ORM в Битрикс.

Триггер: как ловить появление остатка

Сердце функции — момент, когда «было 0, стало больше 0». Поймать его можно двумя способами, и выбор влияет на надёжность и нагрузку.

  1. Реактивный триггер. Вешаем обработчик на событие изменения остатка/доступности элемента. Как только количество товара обновилось и стало положительным — сразу проверяем, есть ли по нему активные подписки, и ставим их в очередь. Быстрая реакция, но обработчик должен корректно ловить именно переход через ноль.
  2. Периодический агент. Агент раз в несколько минут выбирает товары с активными подписками, сверяет их текущие остатки и по перешедшим в наличие запускает рассылку. Проще и устойчивее к особенностям обмена, но уведомление приходит с задержкой в интервал агента.

На практике часто выбирают агент: обмен с 1С обновляет остатки пакетно, и ловить каждое отдельное изменение обработчиком сложнее, чем раз в 5–10 минут пройтись по списку ожидаемых товаров. Работу агентов в Битрикс важно настроить на cron, а не на «хиты», иначе рассылка будет зависеть от посещаемости. Тонкости фоновых процессов и деплоя таких механизмов мы описывали в материале про CI/CD и деплой на Битрикс.

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

Остатки из 1С и обмен CommerceML

Вся функция стоит на данных об остатках, а они приходят на сайт из учётной системы. В типовой связке 1С выгружает остатки по складам через обмен CommerceML, и Битрикс обновляет количества у товаров и торговых предложений. Значит, точность и своевременность уведомлений напрямую зависят от качества этого обмена: если остатки выгружаются раз в сутки, то и «товар появился» магазин узнает не раньше следующей выгрузки.

Несколько принципов, чтобы триггер работал предсказуемо:

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

Порог срабатывания и очередь рассылки

Самая частая ошибка проектирования — разослать уведомление всем подписчикам мгновенно, как только остаток стал положительным. Представьте: на товар подписалось 200 человек, а поставка пришла в количестве 3 штук. Уведомление уходит всем 200, из них 197 откроют карточку и снова увидят «нет в наличии» — и это раздражает сильнее, чем изначальное отсутствие.

Защита от этого — два механизма:

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

Письмо: содержание и доставляемость

Уведомление сработает только если письмо дойдёт и его откроют. Содержание должно быть коротким и по делу: товар снова в наличии, его фото и название, актуальная цена и одна заметная кнопка «Купить». Никаких длинных подборок «а ещё вам понравится» — человек ждал конкретную позицию.

Техническая доставляемость не менее важна, чем текст:

Каналы: e-mail, Telegram, SMS

E-mail — базовый канал, но не единственный. Часть аудитории охотнее подпишется на уведомление в мессенджер, и открываемость там заметно выше. Архитектурно это решается через понятие «канал» у подписки: сама подписка на товар одна, а способов доставки уведомления может быть несколько.

КаналПлюсыОграничения
E-mailУниверсален, дёшев, есть у всехНиже открываемость, риск спама
TelegramВысокая открываемость, мгновенноНужен бот и подписка на него
SMSДоходит почти всегдаПлатно за сообщение, нужен согласие

Отправка в мессенджеры и внешние сервисы обычно идёт через их API. Если каналов много, логику отправки удобно вынести в отдельный сервис, который принимает событие «товар поступил» и рассылает по нужным транспортам. Как безопасно организовать такие внешние вызовы, мы разбираем в статье про REST, вебхуки и безопасность в Битрикс.

Согласия, антиспам и 152-ФЗ

Подписка на товар — это сбор персональных данных (как минимум e-mail), поэтому она попадает под требования законодательства о персональных данных. Правила простые, но их нельзя игнорировать: у формы должно быть согласие на обработку данных и ссылка на политику конфиденциальности, а использовать собранные адреса можно только по назначению — уведомить о поступлении, а не добавить в общую рассылку.

Аналитика и метрики эффективности

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

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

Частые ошибки

Чек-лист внедрения

  1. Форма в карточке. Кнопка «Сообщить о поступлении» вместо «В корзину» для товаров без остатка, отправка через AJAX.
  2. Хранилище подписок. Модель с полями товар, контакт, канал, статус, даты; индекс по «товар + статус».
  3. Триггер настроен. Агент на cron или обработчик события ловит переход остатка через ноль.
  4. Остатки из 1С. Обмен приносит актуальные остатки нужного склада с достаточной частотой.
  5. Порог и очередь. Уведомление уходит при достаточном остатке и порциями, а не всем сразу.
  6. Доставляемость. SPF, DKIM, DMARC настроены; письма идут через надёжный транспорт.
  7. Согласия. Чекбокс согласия, ссылка на политику, отписка в один клик.
  8. Аналитика. Считаются подписки, отправки и заказы; топ ожидаемых товаров уходит в закупки.

Вывод

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

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

Частые вопросы

Чем «Сообщить о поступлении» лучше простой надписи «Нет в наличии»?

Надпись «Нет в наличии» — это тупик: посетитель уходит и, скорее всего, не возвращается. Подписка на поступление превращает нулевой остаток в точку контакта: вы получаете e-mail заинтересованного покупателя, а он — обещание, что его позовут, когда товар появится. Это спрос, который иначе просто утекал бы к конкуренту, а теперь фиксируется и конвертируется в заказ.

Как система узнаёт, что товар снова появился на складе?

Остатки на сайт приходят из учётной системы обменом CommerceML: 1С выгружает актуальные количества по складам, и Битрикс обновляет доступность товаров и торговых предложений. Отследить момент «было 0 — стало больше 0» можно обработчиком события на изменение остатка или регулярным агентом, который сверяет подписки с текущими количествами. Как только остаток становится положительным, запускается рассылка подписчикам.

Нужно ли подтверждать подписку по double opt-in?

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

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

Это классический риск: пришла одна штука, а уведомление ушло сотне человек — 99 откроют карточку и снова увидят «нет в наличии». Решается порогом срабатывания (уведомлять только при остатке выше N) и очередью: разослать первой волне, а не всем сразу, либо резервировать товар под перешедших по ссылке. Логика резерва тянется в 1С, поэтому её проектируют вместе с обменом остатками.

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

Соблюдайте частотные ограничения: одно письмо на факт поступления, а не серию «напоминалок». Не отправляйте повторно, если подписка уже отработала, ведите список отписавшихся и не шлите им ничего. Технически важны корректный SPF, DKIM и DMARC на домене отправителя и отдельный почтовый транспорт, иначе даже полезные письма будут уходить в спам.

Можно ли собирать подписку не только по e-mail, но и в мессенджеры?

Да, и для части аудитории это удобнее. Помимо почты подписку заводят на Telegram-бота или SMS: канал у подписки становится ещё одним свойством, а отправка идёт через соответствующий транспорт. Логика та же — есть подписка на товар и канал доставки уведомления, различается только способ отправки. Мессенджеры дают выше открываемость, но требуют аккуратной работы с согласиями.

Где хранить подписки — в инфоблоке или в отдельной таблице?

На небольших объёмах подписки удобно вести в инфоблоке или highload-блоке, на крупных проектах — в собственной таблице через D7 ORM с индексами по товару и статусу. Главное, чтобы структура позволяла быстро выбирать активные подписки по конкретному товару, помечать их отработанными и хранить историю. Модель данных лучше заложить сразу под нагрузку, а не переделывать потом.

Влияет ли эта функция на SEO и поведенческие факторы?

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

Поделиться:

Хотите возвращать спрос с нулевых остатков?

Спроектируем и внедрим подписку на поступление с триггером по остаткам 1С, очередью и доставляемостью писем. Рассчитаем работу по вашему магазину.

Автоматизация на 1С

Редакция B2Bsite

Команда B2Bsite. С 2014 года разрабатываем интернет-магазины и порталы на 1С-Битрикс: связываем сайт с 1С по остаткам, ценам и заказам, чтобы такие функции, как уведомление о поступлении, работали на живых данных.

← Все статьи блога