
Shared Stock для WooCommerce — один остаток для нескольких карточек товара без перепродаж
Плагин для WooCommerce, который объединяет карточки одной физической вещи в пул с общим остатком: та же рубашка отдельно и в подарочной коробке, рулон ткани под несколькими названиями цвета, товар в двух каталогах. Продажа любой карточки снимает с пула, все карточки показывают, сколько ещё осталось, а одновременные чекауты не продадут последнюю единицу дважды. Базовая версия бесплатная; Pro — единицы на продажу (упаковка 6 шт., 0,5 кг), история изменений пула с CSV, письма «мало» и «закончился», массовое добавление.
- Совместимость
- WordPress 6.2+ · WooCommerce 8.0+ (проверено на WordPress 7.1 и WooCommerce 11.1) · PHP 7.4+ · HPOS и классическое хранилище · блочный и классический чекаут · MySQL / MariaDB · интерфейс на английском и немецком
- Лицензия
- один сайт, годовая
- Триал
- 7 дней, без карты, один на сайт
- Обновлено
- сентябрь 2026
Что есть во Free,
а что даёт Pro
Бесплатная версия работает без ограничения по времени. Pro добавляет остальные функции из таблицы.
Как это выглядит
Главное о модуле
Как это выглядит для покупателя
Каждая карточка пула показывает один и тот же остаток — сколько пул ещё может покрыть.
Что получает админ
Раздел WooCommerce → Shared Stock → Stock pools: список пулов с остатком, сколько удерживают неоплаченные заказы и сколько доступно.
Pro: упаковки, вес, журнал пула
Единицы на продажу. Упаковка из 6 бутылок снимает с пула 6, одиночная бутылка — 1; продажа по полкилограмма снимает 0,5 кг.

Триал стартует, когда вы попросите
Свежая установка — бесплатная версия, ничего не включается само. Кнопка «Попробовать Pro 7 дней» → e-mail → ключ сразу в окне и письмом.

Один ключ — один сайт
Переносите магазин — отвяжите лицензию на старом домене и активируйте на новом сами. Если наш сервер недоступен, Pro работает ещё 14 дней. Для студий — ключи на 5, 25 сайтов или без ограничений.
Технические требования
WordPress 6.2+ и WooCommerce 8.0+. Сквозной прогон — на WordPress 7.1 и WooCommerce 11.1.
PHP 7.4+. Прогон — на PHP 8.3 и 7.4 без предупреждений от модуля.
«Удержание запаса (мин.)» больше 0 в WooCommerce → Настройки → Товары → Запасы — без этого защиты от перепродажи на чекауте нет.
База. MySQL или MariaDB с InnoDB, как у WooCommerce. Блокировка между чекаутами — именованная блокировка MySQL (GET_LOCK); на базе без таких блокировок модуль работает, но без дополнительной блокировки. Проверено на MariaDB 10.11.
Размер пула. Каждая продажа синхронно обновляет все карточки пула — на пуле с сотнями карточек оплата замедлится.
Языки интерфейса: английский, немецкий (du и Sie). Русского и украинского нет.
История версий
Первый публичный релиз: пулы общего остатка для товаров и вариаций, резервирование пула на чекауте под блокировкой, проверка корзины по пулу, «Add or take», ежедневный ремонт, WP-CLI, HPOS…
Вместе с Shared Stock для WooCommerce покупают
4 модуля одним заказом — на 40% дешевле, чем по отдельности


Nova Poshta Premium — модуль Новая Почта для OpenCart 2.3, 3.x и 4.x

LiqPay — оплата картой для OpenCart 2.3, 3.x и 4.x

Telegram-уведомления и Viber/SMS покупателям для OpenCart
Полное описание модуля
Shared Stock для WooCommerce — плагин для магазина, который продаёт одну физическую вещь несколькими карточками. Та же рубашка отдельно и в подарочной коробке, рулон ткани под несколькими названиями цвета, товар в двух каталогах, вещь отдельно и в наборе. WooCommerce считает остаток каждой карточки отдельно, поэтому владелец магазина исправляет цифры вручную — и всё равно продаёт последнюю единицу дважды.
Shared Stock объединяет такие карточки в пул — одну цифру остатка, из которой продают все они. Продажа любой карточки снимает с пула, а каждая карточка показывает, сколько пул ещё может покрыть. Два покупателя, которые в ту же секунду оформляют разные карточки одного пула, не заберут «последнюю единицу» оба. Товар лежит на нескольких складах? Парный модуль Multi Warehouse раскладывает остаток по складам — они работают вместе.
Как это выглядит для покупателя
Каждая карточка пула показывает один и тот же остаток — сколько пул ещё может покрыть. Покупатель кладёт в корзину рубашку, потом рубашку в коробке: если вместе это больше, чем есть, он узнаёт об этом сразу — при добавлении в корзину, на странице корзины или в блочном чекауте, а не после оплаты.
Когда пул заканчивается, все его карточки вместе становятся «Нет в наличии», а после поставки — снова «В наличии».
Что получает админ
Раздел WooCommerce → Shared Stock → Stock pools: список пулов с остатком, сколько удерживают неоплаченные заказы и сколько доступно. Новый пул с нулём берёт остаток первого добавленного товара.
На экране пула — «Set to» (установить остаток) и «Add or take» (добавить или снять относительно текущего: поставка на 10 единиц, оформленная пока идут заказы, не потеряется), переименование, ресинк карточек, список карточек и добавление товаров поиском. В Pro там же — единицы на продажу, порог письма «мало на складе», массовое добавление всех вариаций или списка SKU и история каждого изменения с источником (заказ, отмена, возврат, редактор товара, REST API, WP-CLI), номером заказа и пользователем, с экспортом в CSV.
Добавить товар в пул можно и из карточки товара или вариации: на вкладке Inventory появляется поле «Shared stock pool». Цифра, введённая в любую карточку пула — в редакторе, быстром или массовом редактировании, через REST API или импорт, — становится остатком всего пула. В списке товаров карточки пула имеют отметку «Shared: …».
Pro: упаковки, вес, журнал пула
Единицы на продажу. Упаковка из 6 бутылок снимает с пула 6, одиночная бутылка — 1; продажа по полкилограмма снимает 0,5 кг. Каждая карточка показывает, сколько целых продаж пул ещё может покрыть: при 13 бутылках — 13 одиночных или 2 упаковки. История записывает каждое изменение пула с источником, заказом, пользователем и остатком после него, с экспортом в CSV. Письма: «мало на складе» с порогом на каждый пул и «закончился». Массовое добавление: все вариации вариативного товара или список SKU за раз.
Вместе с Multi Warehouse
Если товар лежит на нескольких складах, Multi Warehouse для WooCommerce раскладывает остаток каждой карточки по складам, а Shared Stock держит одинаковой цифру всех карточек пула. Мы проверили их вместе: 42 проверки совместимости на каждом прогоне (HPOS включён и выключен, PHP 7.4 и 8.3), одновременные чекауты восьми покупателей, возвраты и отмены — склады, карточки и пул после каждого шага совпадали.
Одно ограничение: Multi Warehouse не знает, что карточки пула — одна вещь, и раскладка по складам у каждой карточки своя. Раскладку по складам ведите на одной карточке пула; остальные карточки фактически держат остаток на основном складе — когда продаётся одна карточка, у других цифра снимается с основного склада, дальше со складов по приоритету, без минусов. Самовывоз Multi Warehouse для других карточек предлагает склады по их собственной раскладке.
Как это работает — шаг за шагом
- Вы создаёте пул и добавляете в него карточки. Каждая карточка начинает показывать остаток пула.
- Покупатель оформляет заказ. Под блокировкой базы модуль проверяет, что пул покрывает заказ с учётом того, что уже удерживают неоплаченные заказы всех карточек пула, и удерживает единицы. Параллельные чекауты одного пула идут по очереди; дольше 10 секунд очереди (настраивается) — покупатель видит «попробуйте ещё раз».
- Когда WooCommerce списывает остаток (оплата, «Обработка», «На удержании»), модуль заменяет списание карточки одной относительной записью в пул, и все карточки получают новую цифру.
- Отмена, неудачная оплата, возврат с рестоком или правка заказа менеджером возвращают единицы в пул.
- Раз в сутки модуль выравнивает карточки по цифре пула — на случай плагина, который пишет остаток прямо в базу.
Что проверено, а что нет
Модуль протестирован сквозным прогоном на локальном стенде: nginx + PHP-FPM с пятью воркерами (настоящая параллельность), PHP 8.3 и 7.4, MariaDB 10.11, HPOS включён и выключен — 71 проверка на прогоне плюс гонка восьми покупателей на пул из трёх единиц: в каждом из 10 раундов оформлено ровно 3 заказа, ни одной продажи сверх пула. Не проверяли: MySQL 8, Redis или Memcached как объектный кэш, CSV-импорт WooCommerce, REST API и быстрое редактирование через настоящие формы (форму товара в браузере — да). Настоящий лицензионный сервер и триал в тесте не участвовали. Немецкие переводы носитель языка не вычитывал.
Что под капотом
- Пул — в собственной таблице. Реальная цифра живёт в пуле и всегда читается из базы, не из кэша; карточки обновляются штатными функциями остатка WooCommerce, которые сами чистят кэши товаров.
- Относительные записи. Продажа, отмена и поставка меняют пул одним относительным UPDATE, поэтому одновременные изменения не перетирают друг друга. В тесте 12 одновременных оплат на пул из 20 оставили ровно 8.
- Резерв на уровне пула. WooCommerce резервирует остаток отдельно для каждого товара, поэтому две разные карточки одного пула могли бы в ту же секунду взять «последнюю единицу». В тесте без модуля WooCommerce на пуле из 1 единицы дал 2 резерва из 6 попыток, с модулем — ровно 1.
- Удержание до списания. Удержание оплаченного заказа учитывается, пока WooCommerce фактически не списал остаток, — это закрывает окно, когда заказ уже оплачен, а остаток ещё не снят.
- Карточки всегда управляют запасами. Если снять «Управление запасами» с карточки пула, ресинк включит его снова.
- Удаление убирает таблицы, настройки и крон; карточки оставляют себе цифру, которую показывали.
Как установить
- Скачайте бесплатную версию
catcode-shared-stock-for-woocommerce-free-1.0.0.zipкнопкой вверху страницы (или Pro-архив из кабинета после оплаты): Плагины → Добавить новый → Загрузить плагин → Установить → Активировать. - Проверьте, что в WooCommerce → Настройки → Товары → Запасы «Удержание запаса (мин.)» больше 0.
- WooCommerce → Shared Stock: создайте пул и добавьте в него карточки одной вещи — на экране пула или полем «Shared stock pool» в карточке товара или вариации.
- Установите остаток пула или оставьте 0 — тогда пул возьмёт остаток первой добавленной карточки.
- Для Pro: вставьте лицензионный ключ из письма после оплаты или нажмите «Try Pro for 7 days» в разделе «Pro licence».
Вопросы
о модуле
Не нашли ответ? Напишите в Telegram — ответим в течение рабочего дня.
Это действительно защищает от перепродажи, когда двое платят одновременно?
Да, в пределах того, как WooCommerce удерживает остаток: пул резервируется в момент оформления заказа под блокировкой базы, с учётом остатка, удержанного неоплаченными заказами всех карточек пула. Условие одно: в WooCommerce → Настройки → Товары → Запасы «Удержание запаса (мин.)» должно быть больше 0. Если удержание выключено, WooCommerce на чекауте ничего не резервирует — и модуль тоже не может.
А заказы, созданные в админке или через REST API?
Они меняют пул, когда WooCommerce списывает для них остаток (обычно при статусе «Обработка», «Завершён» или «На удержании»). Резервирования на чекауте для них нет — так же, как у самого WooCommerce.
Что будет с собственным остатком товара, когда он входит в пул?
Товар начинает управлять запасами (если не управлял) и показывает остаток пула. Пустой новый пул берёт остаток первого добавленного товара, поэтому первая карточка не обнуляет цифру. Когда товар выходит из пула или пул удаляют, товар оставляет себе цифру, которую показывал в тот момент.
А если карточка разрешает заказы без наличия (backorder)?
Такой товар пул не останавливает — так же WooCommerce относится к товару с backorder. Его продажи всё равно снимают с пула, и пул может уйти в минус; остальные карточки тогда показывают «Нет в наличии».
Модуль работает вместе с Multi Warehouse?
Да, мы проверили их вместе. Раскладка по складам у каждой карточки пула своя, поэтому ведите её на одной карточке пула — остальные карточки фактически держат остаток на основном складе.
Чем это отличается от синхронизации остатков между магазинами?
Shared Stock работает внутри одного магазина WooCommerce. Если у вас несколько отдельных сайтов с общим складом — это модуль Multi-Store Stock Sync.
Интерфейс на русском?
Нет. Модуль сделан для рынка Германии и ЕС: интерфейс на английском и немецком (du и Sie). Русского и украинского перевода модуля нет.
Сколько стоит?
Базовая версия бесплатная. Pro — 990 грн в год, более длинный срок дешевле: 2 года — 1 880 грн, 5 лет — 3 710 грн. Автосписаний нет. Купленная лицензия оставляет Pro-функции навсегда, а срок покрывает обновления и поддержку.
Пока нет ни одного отзыва. Будьте первым.
Пока вопросов нет. Спроси — мы ответим в течение 24 часов.
Не тот вариант, что искали?
Делаем кастомные модули под WordPress, WooCommerce, OpenCart и Shopify. Расскажите о задаче — подготовим оценку.
Заказать кастомный модуль
Покупка модуля
—