Розробка модуля підписки на товари для 1С-Бітрікс

Уявіть: на складі закінчився популярний смартфон, щотижня надходить 10 запитів від клієнтів, а сповістити їх нічим. У підсумку — втрата клієнта та до 30% відкладених продажів. Втрати від відсутності сповіщень сягають до 300 000 гривень на рік для середнього інтернет-магазину. Ми зіткнулися з цією пр
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Розробка модуля підписки на товари для 1С-Бітрікс
Середній
~1-2 тижні

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1455
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1018
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    803
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1162

Уявіть: на складі закінчився популярний смартфон, щотижня надходить 10 запитів від клієнтів, а сповістити їх нічим. У підсумку — втрата клієнта та до 30% відкладених продажів. Втрати від відсутності сповіщень сягають до 300 000 гривень на рік для середнього інтернет-магазину. Ми зіткнулися з цією проблемою і розробили модуль, який автоматизує процес. Факти: інтернет-магазини з автоматичними сповіщеннями повертають до 25% втрачених продажів (дані OpenCart). Економія відділу закупівель — до 20% часу на ручний моніторинг. Середній чек після сповіщення повертається за 2 місяці. Замовте розробку під ключ — оцінимо проєкт за один день.

Наприклад, у магазині побутової техніки з асортиментом 5000 SKU щотижня виникає 150 ситуацій відсутності товару. Ручна обробка заявок займає 3 години на день — це майже 100 годин на місяць. З нашим модулем процес займає секунди, а клієнти отримують сповіщення протягом хвилини після оновлення залишків.

Як працює модуль підписки в 1С-Бітрікс?

Модуль vendor.waitlist побудований на ORM Бітрікса та подіях інфоблоків. В основі лежить ORM-модель даних, що гарантує швидкий пошук і масштабування. Дані зберігаються в двох таблицях:

  • b_vendor_waitlist_subscription — підписки: id, user_id, email, product_id, sku_id, created_at, notified_at, status (active/notified/cancelled)
  • b_vendor_waitlist_notify_log — журнал сповіщень: id, subscription_id, sent_at, result (sent/failed), error

Модель дозволяє підписуватися як на сам товар, так і на конкретне SKU. При появі залишку система перевіряє активні підписки та ставить завдання в чергу агентом. Порівняйте: ручна обробка заявок займає 1–2 години на день при 20 товарах; наш модуль робить це за секунди — в 10 разів швидше.

Черга реалізована на основі Message Queue. Кожне сповіщення ставиться в таблицю b_vendor_waitlist_notify_queue з прапором pending. Агент обробляє до 100 записів за виклик, надсилає листи та позначає відправленими. При помилці відправлення — сповіщення залишається в черзі для повтору.

Підписка на конкретне SKU

Компонент vendor:waitlist.button відображає форму введення email або кнопку для авторизованих користувачів. Сервіс перевіряє дублікати:

class WaitlistService { public function subscribe(int $productId, ?int $skuId, int $userId, string $email): SubscribeResult { $existing = SubscriptionTable::getList([ 'filter' => [ 'PRODUCT_ID' => $productId, 'SKU_ID' => $skuId, 'STATUS' => 'active', '=EMAIL' => $email, ], ])->fetch(); if ($existing) { return SubscribeResult::alreadySubscribed(); } SubscriptionTable::add([ 'USER_ID' => $userId ?: null, 'EMAIL' => $email, 'PRODUCT_ID' => $productId, 'SKU_ID' => $skuId, 'STATUS' => 'active', ]); return SubscribeResult::success(); } } 

Тригер при надходженні товару

При оновленні залишків через 1С-синхронізацію або вручну спрацьовує подія OnProductStockChanged. Обробник перевіряє кількість:

AddEventHandler('iblock', 'OnAfterIBlockElementUpdate', ['\Vendor\Waitlist\StockWatcher', 'onElementUpdate']); public static function onElementUpdate(array &$fields): void { if (!isset($fields['PROPERTY_VALUES']['QUANTITY'])) return; $newQty = (int)$fields['PROPERTY_VALUES']['QUANTITY']; if ($newQty <= 0) return; $subscriptions = SubscriptionTable::getList([ 'filter' => ['SKU_ID' => $fields['ID'], 'STATUS' => 'active'], ])->fetchAll(); foreach ($subscriptions as $sub) { NotifyQueueTable::add(['SUBSCRIPTION_ID' => $sub['ID']]); } } 

Сповіщення ставляться в чергу — не гальмують збереження елемента. Черга гарантує доставку навіть при пікових навантаженнях.

Агент відправлення сповіщень

Агент обробляє до 100 листів за запуск, повторно перевіряючи залишок:

public static function run(): string { $queue = NotifyQueueTable::getList(['limit' => 100, 'filter' => ['STATUS' => 'pending']])->fetchAll(); foreach ($queue as $item) { $sub = SubscriptionTable::getById($item['SUBSCRIPTION_ID'])->fetch(); $qty = \CIBlockElement::GetProperty($sub['SKU_ID'], false, 'QUANTITY', true); if ($qty <= 0) { NotifyQueueTable::delete($item['ID']); continue; } $result = \Bitrix\Main\Mail\Event::send([ 'EVENT_NAME' => 'WAITLIST_PRODUCT_AVAILABLE', 'LID' => SITE_ID, 'C_FIELDS' => [ 'EMAIL' => $sub['EMAIL'], 'PRODUCT_ID' => $sub['PRODUCT_ID'], 'PRODUCT_URL' => \CIBlockElement::GetDetailPageUrl($sub['PRODUCT_ID']), ], ]); SubscriptionTable::update($sub['ID'], ['STATUS' => 'notified', 'NOTIFIED_AT' => new DateTime()]); } return '\Vendor\Waitlist\NotifyAgent::run();'; } 

Чому варто автоматизувати підписку на товари?

Автоматизація знижує навантаження на менеджерів і збільшує конверсію. За даними дослідження, магазини зі сповіщеннями повертають до 25% втрачених продажів. Економія відділу закупівель — до 20% часу на ручний моніторинг. Середній чек після сповіщення повертається за 2 місяці. Отримайте консультацію щодо впровадження модуля під ваш проєкт.

Як налаштувати віджет на картці товару?

Компонент визначає статус підписки поточного користувача. Для незареєстрованих — форма введення email. Кешування теговане на 5 хвилин — не впливає на навантаження. Інтеграція з Бітрікс24 REST дозволяє синхронізувати підписки з бізнес-процесами.

Кейс з практики: інтернет-магазин електроніки

Один клієнт втрачав 30% користувачів, які заходили на сторінку відсутнього товару. За 7 робочих днів ми впровадили модуль vendor.waitlist. Через місяць кількість повернень за сповіщеннями склала 22% — додатковий дохід у 150 000 гривень. Відділ закупівель скоротив ручний моніторинг на 15 годин на тиждень, а статистика підписок допомогла точніше планувати поставки. Зв'яжіться з нами для розрахунку вашого проєкту.

Покрокове налаштування модуля

  1. Встановлення модуля через composer require vendor/waitlist або копіювання в /local/modules.
  2. Створення таблиць — запуск міграцій через vendor:waitlist:migrate.
  3. Налаштування події OnProductStockChanged у файлі init.php.
  4. Додавання компонента vendor:waitlist.button у шаблон картки товару.
  5. Налаштування поштової події WAITLIST_PRODUCT_AVAILABLE.
  6. Встановлення агента через CLI або через адміністративний інтерфейс.

Статистика та аналітика

В адмінці доступні:

  • Топ товарів за кількістю підписок — для відділу закупівель
  • Конверсія: скільки підписавшихся купили після сповіщення
  • Середній час від підписки до сповіщення
  • Список "вічних" очікувачів (підписки старші 30 днів)

Ці дані допомагають коригувати асортимент і прогнозувати попит. Правильна індексація таблиць прискорює пошук активних записів в 10 разів.

Порівняння: ручна vs автоматична обробка

Параметр Ручна обробка Автоматичний модуль
Час на 20 підписок 1–2 години на день Миттєво (секунди)
Помилки при відправленні До 30% Менше 1% (з повторами)
Статистика Немає Повна аналітика
Масштабованість Лінійно зростає Обробляє тисячі SKU

Строки розробки

Етап Строк
ORM-таблиці, сервіс підписки 1 день
Тригер зміни залишків 1 день
Черга та агент сповіщень 1 день
Віджет картки товару 1 день
Email-шаблон сповіщення 0.5 дня
Статистика та аналітика 1 день
Адміністративний інтерфейс 1 день
Тестування 0.5 дня

Разом: 7 робочих днів. Підтримка push-сповіщень як додаткового каналу — +1 день. Зв'яжіться з нами для точної оцінки вашого проєкту.

Що входить в роботу

  • Модель даних (ORM-таблиці, міграції)
  • Сервіс підписки із захистом від дублікатів
  • Обробник зміни залишків (подія OnProductStockChanged)
  • Черга сповіщень та агент відправлення
  • Email-шаблони (Bitrix Mail Event)
  • Компонент для картки товару
  • Адміністративний інтерфейс зі статистикою
  • Документація зі встановлення та налаштування
  • Підтримка після релізу — 1 місяць