Перейти к содержимому

Подписка на поступление товара - уведомление о наличии

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

Решение

Включаем подписку в настройках магазина:

COption::SetOptionString('sale', 'subscribe_prod', 'Y');
COption::SetOptionString('catalog', 'default_subscribe', 'Y');
// вторая настройка включает подписку сразу у всех новых товаров
// у отдельного товара подписку можно выключить в его карточке
// подписка предлагается только у товаров с нулевым доступным количеством

Подписка появляется там, где товар нельзя купить прямо сейчас. У позиции в наличии форма подписки не показывается вовсе, и это правильно: подписываться в таком случае просто не на что.

Ставим форму подписки в карточке товара:

$APPLICATION->IncludeComponent('bitrix:catalog.product.subscribe', '', [
'PRODUCT_ID' => $productId,
'BUTTON_CLASS' => 'btn btn-link',
'BUTTON_ID' => 'subscribe_' . $productId,
]);
// у товара с вариантами сюда передают идентификатор предложения, а не родителя

Компонент подписки живёт рядом с кнопкой покупки и заменяет её у отсутствующих товаров. Гость подписывается по адресу своей почты, а авторизованный покупатель - уже имеющейся учётной записью.

Смотрим накопленные подписки:

use Bitrix\Main\Loader;
use Bitrix\Sale\Internals\SubscribeTable;
Loader::includeModule('sale');
$rows = SubscribeTable::getList([
'select' => ['ID', 'ITEM_ID', 'USER_CONTACT', 'NEED_SENDING', 'DATE_FROM'],
'filter' => ['=ACTIVE' => 'Y'],
])->fetchAll();
printf("активных подписок: %d\n", count($rows));

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

Проверяем, кто и когда отправляет письма:

// рассылку выполняет агент модуля продаж, а не событие прихода остатка
$res = CAgent::GetList([], ['MODULE_ID' => 'sale', '%NAME' => 'Subscribe']);
while ($agent = $res->Fetch()) {
printf("%-50s след=%s\n", mb_substr($agent['NAME'], 0, 50), $agent['NEXT_EXEC']);
}

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

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

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

Уведомление о поступлении обещает покупателю только наличие, а вовсе не резерв. Между письмом и приходом покупателя товар может закончиться снова, поэтому такие письма не стоит слать за неделю до реального прихода партии.

Типичные проблемы

Кнопка подписки не появляется.

У товара ненулевое доступное количество либо сама подписка выключена в настройках магазина.

Подписки копятся, письма не уходят.

Не работает агент модуля продаж на этом сайте. Рассылку выполняет именно он, а вовсе не приход остатка.

Письмо ушло, а товара уже нет.

Уведомление о поступлении не резервирует товар. Между письмом и приходом покупателя позицию успевают купить другие.

Повторное поступление не рассылает писем.

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

Письмо приходит без названия товара.

Шаблон почтового события правили и потеряли в нём подстановки. Их состав задаёт тип события, а не компонент подписки.

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

Нужна ли подписка магазину с быстрым оборотом?

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

Можно ли подписаться без регистрации?

Да, гость подписывается по адресу почты. Учётная запись при этом не создаётся, а подписка живёт по адресу.

Как посмотреть спрос по подпискам?

Выборкой из таблицы подписок с группировкой по товару. Такой список показывает, чего не хватает в закупке.

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

Их чистят вместе с товарами: письмо о поступлении по снятой позиции покупателя только раздражает.

Смежное

Первоисточник