Зв'язатись
  • WordPress
  • Import/Export
  • v1.0.0

Shared Stock для WooCommerce — один залишок для кількох карток товару без перепродажу

Плагін для WooCommerce, який об’єднує картки однієї фізичної речі в пул зі спільним залишком: та сама сорочка окремо й у подарунковій коробці, рулон тканини під кількома назвами кольору, товар у двох каталогах. Продаж будь-якої картки знімає з пулу, усі картки показують, скільки ще лишилось, а одночасні чекаути не продадуть останню одиницю двічі. Базова версія безкоштовна; Pro — одиниці на продаж (упаковка 6 шт., 0,5 кг), історія змін пулу з CSV, листи «мало» й «закінчився», масове додавання.

Завантажити Free
Pro · ліцензія на рік Чим більше сайтів, тим дешевше кожен
Сумісність
WordPress 6.2+ · WooCommerce 8.0+ (перевірено на WordPress 7.1 і WooCommerce 11.1) · PHP 7.4+ · HPOS і класичне сховище · блоковий і класичний чекаут · MySQL / MariaDB · інтерфейс англійською й німецькою
Ліцензія
один сайт, річна
Тріал
7 днів, без картки, один на сайт
Оновлено
вересень 2026
Або всі 144 Pro-модулів з All Access — 4 990 ₴ / рік

Що є в Free,
а що дає Pro

Безкоштовна версія працює без обмеження в часі. Pro додає решту функцій з таблиці.

Функція Free Pro
Пули спільного залишку: будь-яка кількість простих товарів, варіацій і варіативних товарів із залишком на рівні товару ✔ ✔
Кожна зміна залишку WooCommerce (оплата, скасування, повернення з рестоком, правка замовлення) — у пул одним відносним записом ✔ ✔
Цифра, введена в будь-яку картку (редактор, швидке й масове редагування, REST API, імпорт), стає залишком пулу ✔ ✔
Резервування пулу на чекауті під замком бази з урахуванням утримань усіх карток — класичний і блоковий чекаут ✔ ✔
Перевірка кошика по пулу: при додаванні, на сторінці кошика і в блоковому чекауті ✔ ✔
«Add or take»: поставка додається до поточного залишку, а не перезаписує його ✔ ✔
Бейдж пулу в списку товарів і поле «Shared stock pool» у картці товару й варіації ✔ ✔
Щоденний ремонт розсинхрону і WP-CLI: list, members, set, adjust, resync ✔ ✔
HPOS, блоки Cart і Checkout ✔ ✔
Одиниці на продаж: упаковка 6 шт. поряд із поодинокими, продаж по 0,5 кг — ✔
Історія кожної зміни пулу з джерелом, замовленням і користувачем, експорт CSV — ✔
Лист «мало на складі» з порогом на пул і лист «закінчився» — ✔
Масове додавання: усі варіації варіативного товару або список SKU — ✔

Як це виглядає

Список товарів WooCommerce: у колонці «Запаси» дві картки з однаковим залишком 13 і позначкою пулу
Список товарів: «Лляна сорочка» і «Лляна сорочка в подарунковій коробці» показують той самий залишок 13 і позначку «Shared: …» — це один пул.
Кошик: помилка — дві картки з одного пулу разом перевищують доступний залишок
Кошик: дві картки одного пулу разом просять більше, ніж є, — покупець бачить це до оплати. Тестовий магазин без фото товарів, повідомлення вітрини англійською.
Екран пулу: залишок, утримання, доступно, картки пулу, додавання товарів та історія змін
Екран пулу: «Set to» і «Add or take», перейменування, ресинк карток, картки пулу з одиницями на продаж, додавання товарів, масове додавання і історія змін з джерелом і номером замовлення. Одиниці на продаж, поріг «мало», масове додавання й історія — 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). Української й російської немає.

Історія версій

v1.0.0 Поточна вересень 2026

Перший публічний реліз: пули спільного залишку для товарів і варіацій, резервування пулу на чекауті під замком, перевірка кошика по пулу, «Add or take», щоденний ремонт, WP-CLI, HPOS і…

Разом з Shared Stock для WooCommerce купують

4 модулі одним замовленням — на 40% дешевше, ніж окремо

Набір «Старт магазину» Shared Stock Nova Poshta Premium Mono Acquiring Telegram-сповіщення і Viber/SMS покупцям Потрібно більше — усі 144 модулі в All Access за 4 990 ₴.
2 490 ₴ / рік замість 4 160 ₴ поштучно
Купити набір →

Повний опис модуля

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 для інших карток пропонує склади за їхнім власним розкладом.

Як це працює — крок за кроком

  1. Ви створюєте пул і додаєте в нього картки. Кожна картка починає показувати залишок пулу.
  2. Покупець оформлює замовлення. Під замком бази модуль перевіряє, що пул покриває замовлення з урахуванням того, що вже утримують неоплачені замовлення всіх карток пулу, і утримує одиниці. Паралельні чекаути того самого пулу йдуть по черзі; довше 10 секунд черги (налаштовується) — покупець бачить «спробуйте ще раз».
  3. Коли WooCommerce списує залишок (оплата, «В обробці», «На утриманні»), модуль замінює списання картки одним відносним записом у пул, і всі картки отримують нову цифру.
  4. Скасування, невдала оплата, повернення з рестоком чи правка замовлення менеджером повертають одиниці в пул.
  5. Раз на добу модуль вирівнює картки за цифрою пулу — на випадок плагіна, що пише залишок прямо в базу.

Що перевірено, а що ні

Модуль протестовано наскрізно в локальному стенді: 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 фактично не списав залишок, — це закриває вікно, коли замовлення вже оплачене, а залишок ще не знято.
  • Картки завжди керують запасами. Якщо зняти «Керування запасами» з картки пулу, ресинк увімкне його знову.
  • Видалення прибирає таблиці, налаштування й крон; картки лишають собі цифру, яку показували.

Як встановити

  1. Завантажте безкоштовну версію catcode-shared-stock-for-woocommerce-free-1.0.0.zip кнопкою вгорі сторінки (або Pro-архів з кабінету після оплати): Плагіни → Додати новий → Завантажити плагін → Встановити → Активувати.
  2. Перевірте, що в WooCommerce → Налаштування → Товари → Наявність «Утримання запасу (хв.)» більше 0.
  3. WooCommerce → Shared Stock: створіть пул і додайте в нього картки однієї речі — на екрані пулу або полем «Shared stock pool» у картці товару чи варіації.
  4. Встановіть залишок пулу або залиште 0 — тоді пул візьме залишок першої доданої картки.
  5. Для Pro: вставте ліцензійний ключ із листа після оплати або натисніть «Try Pro for 7 days» у розділі «Pro licence».

Питання
про модуль

Не знайшли відповідь? Напишіть у Telegram — відповімо протягом робочого дня.

@catcode_support Налаштування, сумісність, активація
Це справді захищає від перепродажу, коли двоє платять одночасно?

Так, у межах того, як 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-функції назавжди, а термін покриває оновлення й підтримку.

Не той варіант, що шукаєте?

Робимо кастомні модулі під WordPress, WooCommerce, OpenCart і Shopify. Розкажіть про задачу — підготуємо оцінку.

Замовити кастомний модуль