Автоматична синхронізація каталогу з Ozon, WB, Яндекс.Маркет
Автоматична синхронізація каталогу з Ozon, Wildberries та Яндекс.Маркет вирішує проблему розсинхронізації товарів. Уявіть: у вас 5000 SKU, три маркетплейси, а менеджери вручну правлять описи та ціну. Через місяць розсинхронізація: на Ozon товару немає, на Wildberries ціна застаріла, на Яндекс.Маркеті фото не те. Щодня менеджери витрачають години на перевірку карток, а клієнти скаржаться на дублікати та невірні залишки. Ця ситуація знайома багатьом: за нашою статистикою, ручне управління каталогом на трьох майданчиках займає до 20 годин на тиждень і дає 15–20% помилкових карток. Наша команда інженерів з досвідом в e-commerce понад 7 років реалізувала понад 50 проектів з інтеграції каталогів з маркетплейсами. Система автоматично передає нові товари, оновлює зміни та знімає з продажу видалені позиції — без ручної праці. Ми використовуємо детектор змін на основі хешування, що дозволяє обробляти 10 000 товарів за 15 хвилин — у 5 разів швидше, ніж повний перебір.
Чому ручна синхронізація не працює?
Кожен маркетплейс має свій формат даних: Ozon вимагає унікальний ідентифікатор у полі offer_id, Wildberries використовує артикул, Яндекс.Маркет — свій SKU. Категорії та атрибути відрізняються: на Ozon потрібно вказати тип товару (наприклад, 'Взуття' в категорії 17032750), а на Wildberries — прив'язатися до предмета. Ручний маппінг 5000 товарів займає тиждень і дає 20% помилок. Автоматизація з нашим маппером скорочує час до 3 годин і знижує помилки до 1%.
Як працює детектування змін?
Використовуємо хешування полів: назва, опис, бренд, ціна, зображення, розміри. При кожному оновленні продукту у вашій CMS або ERP обчислюється SHA-256 хеш і порівнюється зі збереженим у таблиці marketplace_product_mappings. Якщо хеш відрізняється — товар потрапляє в чергу на синхронізацію. Це дозволяє знизити навантаження на API маркетплейсів: типовий магазин з 10 000 товарів і 100 змінами на день робить лише 100 запитів замість 10 000. Для прискорення ми використовуємо черги Laravel Horizon із затримками між запитами, щоб не перевищувати ліміти (наприклад, у Wildberries — 1 запит/сек).
Чому маппінг категорій — вузьке місце?
Без маппінгу категорій вивантажити товар неможливо: у кожного майданчика своє дерево. Ми зберігаємо відповідність у БД і даємо UI для зв'язування. Для Ozon використовуємо пошук категорій за назвою через API. Для Wildberries — ручний маппінг з автодоповненням. Приклад:
class CategoryMapper { public function getMarketplaceCategory(int $siteCategoryId, string $marketplace): ?int { return DB::table('category_mappings') ->where('site_category_id', $siteCategoryId) ->where('marketplace', $marketplace) ->value('marketplace_category_id'); } public function suggestOzonCategory(string $categoryName): array { return Http::withHeaders($this->ozonHeaders) ->post('https://api-seller.ozon.ru/v1/description-category/search', [ 'language' => 'DEFAULT', 'query' => $categoryName, ]) ->json('result'); } } Процес роботи: від аудиту до деплою
- Аналітика — розбираємо поточні інтеграції (CMS, ERP, API маркетплейсів).
- Проектування — схема даних, маппінг, черги завдань (Laravel Horizon + Redis).
- Реалізація — пишемо адаптери для кожного маркетплейсу з використанням REST API.
- Тест — перевіряємо на копії каталогу: детектування змін, обробка помилок, навантаження.
- Деплой — розгортаємо на вашому сервері або хмарі (AWS, Vercel).
Що входить в підсумкове рішення?
Крім адаптерів, ми поставляємо дашборд моніторингу на основі Laravel Telescope. Він відображає кількість активних, очікуваних та помилкових товарів по кожному маркетплейсу. Якщо кількість помилок перевищує 5% від загальної кількості товарів, система надсилає сповіщення в Telegram або Slack. Також ми налаштовуємо логування всіх операцій в таблиці sync_logs для аудиту.
-- Поточний стан каталогу по маркетплейсах SELECT marketplace, COUNT(*) FILTER (WHERE status = 'active') AS active, COUNT(*) FILTER (WHERE status = 'pending') AS pending, COUNT(*) FILTER (WHERE status = 'error') AS errors, MAX(last_synced_at) AS last_sync FROM marketplace_product_mappings GROUP BY marketplace; Терміни та що входить в роботу
| Етап | Тривалість | Результат |
|---|---|---|
| Аналітика | 2-3 дні | Документація з вимогами та схемою API |
| Проектування | 3-4 дні | ER-діаграма, структура черг |
| Розробка адаптерів | 8-12 днів | Робочі адаптери для 3 маркетплейсів |
| Тестування | 3-5 днів | Звіт про тести, виправлені баги |
| Деплой та навчання | 2-3 дні | Система в продакшені, інструкція для менеджерів |
Разом: 18–24 робочих дні. Гарантія на підтримку — 1 місяць після здачі. У вартість входить документація, налаштування дашборду та навчання співробітників. Така автоматизація дозволяє заощадити від $300–500ів щомісячно на ручному управлінні.
Порівняння вимог маркетплейсів
| Параметр | Ozon | Wildberries | Яндекс.Маркет |
|---|---|---|---|
| Формат зображень | JPEG, PNG, не більше 10 MB | JPEG, не більше 8 MB | JPEG, PNG, не більше 5 MB |
| Обов'язкові поля | offer_id, назва, ціна, залишок | артикул, бренд, ціна | SKU, назва, URL зображення |
| Ліміт API запитів | 10 запитів/сек | 1 запит/сек | 5 запитів/сек |
Типові помилки при синхронізації
Невірний маппінг категорій — товар йде не туди. Рішення: завантажити пробну партію та перевірити вручну.
Перевищення лімітів API — маркетплейси блокують. Рішення: queue із затримками та retry через 5 хвилин.
Різні формати зображень — майданчики вимагають певні розміри. Рішення: налаштувати пресети стиснення.
Технічні деталі реалізації черг
Ми використовуємо Laravel Horizon з налаштуваннями: кожне завдання синхронізації поміщається в чергу "marketplace-sync". Між запитами встановлюється затримка, залежна від лімітів майданчика. Для Wildberries, де ліміт 1 запит/сек, затримка становить 1.2 секунди.
Отримайте консультацію з автоматизації каталогу вже сьогодні. Зв'яжіться з нами, і ми підготуємо індивідуальне рішення.







