Інтернет-магазин на WooCommerce мав бути підключений до BaseLinker так, щоб товари, ціни та залишки працювали узгоджено. На перший погляд задача виглядала стандартною: зв’язати товари магазину Plantalux з каталогами BaseLinker і запустити синхронізацію.
У процесі роботи стало зрозуміло, що проблема не тільки в самому підключенні. У магазині вже була історія ручного наповнення, пізнішого імпорту з BaseLinker, перекладів товарів з польської на румунську, дубльованих артикулів і частково відсутніх штрихкодів EAN.
Тому задача перетворилася з простого підключення на повне впорядкування товарної бази і створення інструмента, який показує, що насправді відбувається під час синхронізації.
Контекст
Сайт працює на WordPress і WooCommerce. Товари на сайті румунською мовою, а частина даних у BaseLinker була польською. Частина товарів спочатку додавалася вручну, а пізніше каталог поповнювався через імпорт.
У BaseLinker використовувалися кілька каталогів:
- головний каталог
- каталог TM
- додатковий каталог
За логікою клієнта, однакові товари різних торгових марок могли мати однаковий артикул. Але штрихкод EAN для кожного товару мав бути унікальним.
Це важливий нюанс, тому що WooCommerce очікує унікальні артикули, а BaseLinker для коректної роботи краще прив’язувати до товарів за надійним унікальним кодом.
Початкова проблема
У магазині з’являлися повідомлення про дубльовані артикули. Частина товарів не мала EAN. Частина товарів мала EAN у різних полях, але BaseLinker бачив тільки одне з них.
Також не було зрозуміло:
- які товари вже є на сайті
- які товари є тільки в BaseLinker
- які товари пов’язані з магазином
- які товари не можна прив’язувати автоматично
- чи справді BaseLinker синхронізує ціни та залишки
- чому частина товарів після синхронізації отримує нульовий залишок
Окремою проблемою було те, що в адмінці WooCommerce не було зручного способу побачити реальний стан синхронізації. BaseLinker міг показувати, що операція виконана, але на боці магазину не було зрозуміло, чи запит справді дійшов до WordPress і що саме було змінено. Офіційний плагін BaseLinker не надає інформації про стан синхронізації адміністратору інтернет-магазину.
Що ми зробили спочатку
Першим кроком ми вивантажили повний список товарів із магазину через WP All Export. Експорт містив 1455 товарів.
Після цього перевірили:
- чи є дублікати EAN
- які товари не мають EAN
- які товари можна знайти в каталогах BaseLinker
- які товари мають однакові артикули
- які артикули є парами товарів
- які штрихкоди дублюються в різних каталогах
Було виявлено, що частина товарів без EAN насправді має відповідні значення в файлах BaseLinker. Для них підготували окремі файли для дозаповнення EAN у WooCommerce.
EAN потрібно було записувати у два поля:
- стандартне поле WooCommerce для глобального коду товару
- додаткове поле, яке використовував BaseLinker
Після перевірки старої бази було встановлено, що потрібне додаткове поле має ключ _et_gtin.
Робота з товарами без EAN
Спочатку було знайдено 34 товари, для яких EAN можна було відновити з наданих файлів BaseLinker. Пізніше клієнт додав ще один каталог, і вдалося знайти ще 19 EAN.
Після додаткових перевірок стало зрозуміло, що не всі ці товари можна оновлювати автоматично. Частина з них мала конфлікти зі штрихкодами або потребувала ручної перевірки.
Тому товари з ризиком були переведені в чорновики, щоб не створювати помилкові прив’язки і не запускати неправильну синхронізацію.
Чому не можна було просто прив’язати все автоматично
У BaseLinker були товари, де один EAN зустрічався більше одного разу. Також були товари, які збігалися тільки за артикулом, але мали різні EAN.
Для такого магазину автоматична прив’язка за артикулом небезпечна, тому що артикул може повторюватися в парі товарів. У цьому проєкті надійним ключем для масової прив’язки був саме EAN.
Ми розділили товари на групи:
- безпечні для масової прив’язки
- з дубльованим EAN
- знайдені тільки за артикулом
- чорновики без EAN
- товари, які треба перевірити вручну
Для безпечних товарів були підготовлені окремі файли прив’язок для кожного каталогу BaseLinker.
Масова прив’язка товарів
Після підготовки були завантажені файли прив’язок у BaseLinker.
Результат:
- у головному каталозі прив’язано 1112 товарів
- у каталозі TM прив’язано 288 товарів
- у додатковому каталозі прив’язано 5 товарів
Разом було надійно прив’язано 1405 товарів із 1455.
50 товарів залишилися без автоматичної прив’язки, тому що для них потрібна ручна перевірка. Це були не випадкові помилки, а саме ті позиції, які не можна було безпечно підключати масово.
Перевірка синхронізації
Після прив’язки товарів ми запустили синхронізацію цін і залишків з BaseLinker.
BaseLinker почав надсилати оновлення в магазин. Частина товарів оновлювалася успішно, але під час масових операцій з’явилися помилки відповіді сервера:
- порожня відповідь
- помилка 502
- помилка 503
- обрив відповіді від сервера
Це показало, що зв’язок між BaseLinker і магазином працює, але сервер не завжди стабільно витримує масові оновлення.
Окремо ми перевірили ситуацію з товаром, який після синхронізації став “немає в наявності”. Виявилося, що WooCommerce справді отримав залишок 0. Тобто проблема була не в відображенні товару на сайті, а в тому, який залишок прийшов із BaseLinker або який склад був вибраний як джерело залишків.
Чому знадобився власний плагін
Стандартна адмінка WooCommerce не показує, що саме відбувається під час синхронізації.
Було потрібно бачити:
- чи дійшов запит BaseLinker до WordPress
- чи WooCommerce застосував оновлення
- чи змінювалася ціна
- чи змінювався залишок
- який користувач API виконав дію
- який товар отримав оновлення
- чи була помилка на рівні WordPress
- чи проблема сталася ще до того, як запит дійшов до сайту
Спочатку ми пробували орієнтуватися на файли прив’язок, але це не давало чесної відповіді на головне питання: чи товар справді синхронізується зараз.
Тому було прийнято рішення створити окремий плагін для живої діагностики.
Рішення: Aroks BaseLinker Debugger
Для проєкту був створений мініплагін Aroks BaseLinker Debugger.
Він не імпортує ручні файли і не робить висновків зі старих списків прив’язок. Плагін показує тільки те, що WordPress реально побачив під час роботи BaseLinker.
Плагін додає в адмінку WooCommerce:
- колонку зі станом синхронізації
- фільтр товарів за станом
- окремий блок у картці товару
- журнал останніх подій
Основні стани:
- товар успішно синхронізувався
- запит був, але потрібна перевірка
- немає живого сліду синхронізації
У картці товару видно:
- поточний залишок
- стан наявності
- чи увімкнене керування залишками
- поточну ціну
- останню зміну ціни
- останню зміну залишку
- останній запит від BaseLinker
- останню помилку, якщо вона була
Завантаж плагін Aroks BaseLinker Debugger в магазині Aroks Digital Kits.
Що показала діагностика
Після запуску плагіна стало зрозуміло, що більшість товарів синхронізуються нормально. Але частина товарів не має живого сліду синхронізації.
Ми розібрали ці товари й отримали зрозумілу картину:
- 19 товарів були чорновиками без EAN
- 18 товарів мали EAN, але не були прив’язані в BaseLinker через конфлікти
- 13 товарів збігалися тільки за артикулом, але мали інший EAN
- 5 товарів були прив’язані, але мали нульовий залишок і не отримували нового оновлення
Завдяки цьому стало зрозуміло, що проблема не в одному місці. Частина питань стосувалася даних, частина — налаштувань складів у BaseLinker, частина — стабільності сервера під час масових оновлень.
Результат
У результаті роботи:
- каталог магазину був звірений із трьома каталогами BaseLinker
- знайдено і частково відновлено відсутні EAN
- виявлено товари з дубльованими EAN
- підготовлено безпечну масову прив’язку товарів
- прив’язано 1405 товарів із 1455
- проблемні товари винесено в окремі групи для ручної перевірки
- перевірено роботу синхронізації цін і залишків
- виявлено серверні обмеження під час масових оновлень
- створено власний плагін для контролю живої синхронізації
Головний результат — клієнт отримав не просто підключення BaseLinker, а зрозумілу систему контролю. Тепер можна бачити, які товари справді синхронізувалися, які потребують уваги і де саме шукати причину проблеми.
Що клієнт отримав у підсумку
Підключення BaseLinker до інтернет-магазину — це не завжди тільки питання налаштувань. Якщо в магазині вже є історія ручного наповнення, імпортів, перекладів, дубльованих артикулів і різних джерел товарів, спочатку потрібно навести порядок у даних.
У цьому проєкті ми пройшли шлях від перевірки EAN і товарних каталогів до створення власного інструмента для діагностики. Саме це дозволило не гадати, а бачити фактичну картину: що пов’язано, що синхронізується, що не доходить до WordPress і що потребує ручного рішення.
Такий підхід зменшує ризик помилкових оновлень, неправильних залишків і дублювання товарів. Він також дає клієнту більше контролю над магазином і робить подальшу роботу з BaseLinker передбачуваною.





