Подписка на товар — это механизм модуля catalog, который уведомляет покупателя, когда отсутствующий товар снова появился в продаже. Разберём, как он устроен, как включить сбор подписок и как настроить рассылку так, чтобы письма реально доходили.
Что даёт механизм подписки
Когда товара нет на складе, кнопка «Купить» на карточке заменяется на форму подписки. Посетитель оставляет e-mail, а система запоминает связь «товар — почта» в таблице модуля catalog. Как только у товара снова появляется положительный остаток (или, в зависимости от логики компонента, меняется цена), подписчик получает письмо со ссылкой на карточку.
Это стандартный функционал коробки, встроенный в комплексный компонент каталога bitrix:catalog и его элемент bitrix:catalog.element. Отдельный компонент подписки — bitrix:catalog.product.subscribe, он и рисует форму «Уведомить о поступлении».
subscribe (рубрики рассылки) — другой механизм; их часто путают из-за похожего названия.Как включить подписку в каталоге
Функция работает только при учёте остатков. Проверьте настройки модуля торгового каталога: Магазин → Настройки → Настройки модулей → Торговый каталог. Ключевой момент — товар должен уметь становиться «недоступен», иначе форме подписки неоткуда взяться.
- В настройках модуля
catalogвключите контроль наличия — «Считать товары с нулевым остатком отсутствующими» или используйте поле «Доступность» (AVAILABLE). - В параметрах комплексного компонента каталога найдите группу «Подписка на товар» и включите опцию отображения кнопки для отсутствующих позиций.
- Убедитесь, что у товаров заданы количественный учёт (
CATALOG_QUANTITY) и флагCATALOG_AVAILABLE = Nпри нуле остатка.
После этого на карточке отсутствующего товара появится поле ввода почты и кнопка. Для незалогиненного пользователя e-mail спрашивается явно, для авторизованного подставляется из профиля.
Где хранятся подписки
Записи подписок лежат в таблице b_catalog_subscribe. Каждая строка связывает пользователя (или анонимный e-mail), товар и тип подписки. Основные поля:
| Поле | Назначение |
|---|---|
USER_CONTACT | E-mail подписчика |
ITEM_ID | ID товара (элемента инфоблока) |
TYPE | Тип: поступление / изменение цены |
ACTIVE | Активна ли подписка (Y/N) |
DATE_FROM | Дата оформления |
Работать с записями программно удобно через класс \Bitrix\Catalog\SubscribeTable (D7). Через него же можно выгрузить список ожидающих товар пользователей для аналитики спроса.
Почтовые события и шаблоны писем
Само письмо формируется через систему почтовых событий модуля main. За подписку отвечает тип события CATALOG_SUBSCRIBE. Управление здесь: Настройки → Настройки продукта → Почтовые события.
В шаблоне доступны стандартные поля-подстановки, которые компонент передаёт при отправке:
#EMAIL_TO#— адрес получателя;#NAME#— название товара;#PAGE_URL#— ссылка на карточку;#PRICE#— актуальная цена (для событий об изменении цены).
Агент рассылки: как уходят письма
Уведомления отправляются не мгновенно в момент оприходования товара, а фоновым агентом модуля catalog. Агент периодически сканирует активные подписки, сверяет их с текущим наличием и ценой и для совпавших позиций ставит письма в очередь почтовых событий.
Список агентов: Настройки → Настройки продукта → Агенты. Отсюда видно время следующего запуска и периодичность. Есть два принципиальных момента:
- Агенты крутятся на «хитах» сайта. Если посещаемость низкая или включён внешний cron (
define("BX_CRONTAB", true)), убедитесь, что задание/bitrix/php_interface/cron_events.phpреально запускается по расписанию. - После рассылки подписка деактивируется (
ACTIVE = N), чтобы человек не получил письмо повторно при следующем проходе агента.
При отладке смотрите очередь в разделе Настройки → Инструменты → Почтовые события и логи почтовой отправки — так видно, дошла ли задача до отправки или зависла в агенте.
Типичные ошибки и подводные камни
Механизм простой, но чаще всего он «не работает» по одной из бытовых причин:
- Не включён учёт остатков — товар никогда не считается отсутствующим, форма подписки не появляется вовсе.
- Остатки приходят из 1С обменом — при загрузке важно, чтобы обмен корректно снимал и возвращал доступность, иначе агент не увидит «появление» товара.
- Не настроен cron — на малопосещаемом сайте агент запускается редко, письма уходят с задержкой в часы.
- Кэш карточки — форма и статус наличия могут кэшироваться компонентом; проверяйте на реальном отсутствующем товаре без кэша.
Итог
Подписка на товары в 1С-Битрикс — это связка из четырёх частей: контроль наличия в модуле catalog, компонент catalog.product.subscribe, почтовое событие CATALOG_SUBSCRIBE и фоновый агент рассылки. Соберите их корректно — и магазин сам возвращает клиентов за товаром, который они ждали.
Если остатки приходят из 1С, если письма попадают в спам или агент не запускается по cron, механизм работает вполсилы. Мы в B2Bsite настраиваем подписку под конкретный магазин: связываем её с обменом остатков, чиним доставляемость писем и разгружаем агенты на cron. Обращайтесь, если нужно, чтобы уведомления о поступлении работали предсказуемо.
Частые вопросы
Чем подписка на товар отличается от подписки на рассылку?
Подписка на товар — это функция модуля catalog: уведомление о поступлении или изменении цены конкретной позиции. Подписка на рассылку — это модуль subscribe с рубриками новостей. Механизмы разные, хоть и называются похоже.
Почему на карточке товара нет формы подписки?
Чаще всего не включён учёт остатков или товар не считается отсутствующим. Форма появляется только для позиций с флагом недоступности. Проверьте настройки торгового каталога и параметры компонента каталога.
Письма о поступлении приходят с задержкой. В чём причина?
Рассылку выполняет фоновый агент, который срабатывает на хитах или по cron. На малопосещаемом сайте без настроенного cron агент запускается редко. Настройте внешний cron для агентов и почтовых событий.
Где хранятся оформленные подписки?
В таблице b_catalog_subscribe. Программно с ней удобно работать через класс \Bitrix\Catalog\SubscribeTable. Оттуда же можно выгрузить спрос на отсутствующие товары.
Какое почтовое событие отвечает за уведомление?
Тип почтового события CATALOG_SUBSCRIBE. Его шаблон редактируется в разделе Настройки → Настройки продукта → Почтовые события. Там доступны подстановки с названием товара и ссылкой на карточку.
Придёт ли покупателю повторное письмо?
Нет. После успешной отправки агент деактивирует подписку, ставя ACTIVE = N. Чтобы получить новое уведомление, пользователю нужно подписаться снова.
Работает ли подписка, если остатки грузятся из 1С?
Да, но обмен должен корректно менять доступность товара. Если при загрузке остаток становится положительным, а флаг доступности не обновляется, агент не увидит появление товара и письмо не уйдёт.
Можно ли уведомлять о снижении цены, а не только о наличии?
Да, механизм поддерживает подписку по типу изменения цены. Она использует ту же инфраструктуру событий и агента, но срабатывает при изменении цены товара, а не остатка.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.