Двостороння синхронізація каталогу товарів з PIM-системою

Реалізація двосторонньої синхронізації каталогу товарів з PIM-системою

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Двостороння синхронізація каталогу товарів з PIM-системою
Складний
від 2 тижнів до 3 місяців

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

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

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1418
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    983
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1243
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    983
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    997

Реалізація двосторонньої синхронізації каталогу товарів з PIM-системою

Уявіть: ви вивантажуєте товари з Akeneo в Excel, потім вручну завантажуєте на сайт. Через тиждень менеджер змінює ціну в PIM, а на сайті залишається стара. Покупці йдуть до конкурентів. За статистикою, неактуальні ціни призводять до втрати до 30% потенційного виторгу. Двостороння синхронізація вирішує цю проблему: зміни в PIM миттєво потрапляють на сайт, а дані з сайту (рейтинги, залишки) — назад в PIM. Це не теорія — ми реалізували такі інтеграції для 20+ проєктів. Результат: актуальні ціни, єдине джерело правди, відсутність ручної праці. У порівнянні з ручним оновленням двостороння синхронізація в 3 рази швидше виводить товари на ринок.

Типовий сценарій: в PIM оновили опис товару, додали нові фотографії, але на сайті інформація залишилася попередньою. Потенційний покупець бачить застарілі дані та йде до конкурента. Або навпаки: на сайті з'явився новий відгук, а маркетинг в PIM не бачить його. Двостороння синхронізація усуває цю асиметрію. Фінансова економія від автоматизації може бути суттєвою.

У цій статті розберемо технічну архітектуру, типові проблеми та як їх уникнути. Розглянемо на прикладі Akeneo, але підхід застосовний до будь-якої PIM: Pimcore, Salsify, Plytix. Для розуміння базової концепції Product Information Management можна звернутися до Вікіпедії.

Проблеми, які вирішує двостороння інтеграція

Типові болі:

  • Невідповідність даних — ручне введення призводить до помилок у назвах, цінах, характеристиках; до 15% позицій можуть містити неточності.
  • Затримки оновлення — товар з'являється на сайті через добу після додавання в PIM, що критично для акційних пропозицій.
  • Втрата зворотного зв'язку — рейтинги та відгуки з сайту не потрапляють в PIM, маркетинг не бачить повної картини.
  • Конфлікти при паралельному редагуванні — два менеджери правлять один товар, перезаписуючи дані одне одного.
  • Складність масштабування — при додаванні нового каналу продажу (маркетплейс, мобільний додаток) доводиться повторно налаштовувати інтеграцію, що займає до 10 робочих днів.

Ці проблеми знижують конверсію на 20–40% та збільшують операційні витрати. Двостороння синхронізація скорочує час виведення товару на ринок в 3 рази та зменшує витрати на 30%. Впровадження двосторонньої синхронізації дозволяє знизити операційні витрати на десятки тисяч гривень щомісяця.

Як ми це робимо: стек та архітектура

Використовуємо Akeneo REST API v1.0+ з OAuth2. Для оперативного оновлення — webhooks (тільки Enterprise). Базовий код на Laravel 10/11, але підхід застосовний до будь-якого фреймворку.

Приклад пагінованого імпорту товарів

class AkeneoSyncService { private AkeneoClient $client; public function syncProducts(): void { $cursor = null; do { $response = $this->client->getProducts([ 'limit' => 100, 'search' => json_encode(['enabled' => [['operator' => '=', 'value' => true]]]), 'search_after'=> $cursor, ]); foreach ($response['_embedded']['items'] as $item) { $this->upsertProduct($item); } $nextLink = $response['_links']['next']['href'] ?? null; $cursor = $nextLink ? $this->extractCursor($nextLink) : null; } while ($cursor !== null); } private function upsertProduct(array $akeneoProduct): void { $values = $akeneoProduct['values']; $name = $this->getLocaleValue($values, 'name', 'ru_RU'); $desc = $this->getLocaleValue($values, 'description', 'ru_RU'); $price = $this->getScopedValue($values, 'price', 'ecommerce'); Product::updateOrCreate( ['akeneo_code' => $akeneoProduct['identifier']], compact('name', 'desc', 'price') + [ 'family' => $akeneoProduct['family'], 'categories' => $akeneoProduct['categories'], 'raw_values' => $values, // JSONB — повні дані з PIM 'synced_at' => now(), ] ); } private function getLocaleValue(array $values, string $attr, string $locale): ?string { return collect($values[$attr] ?? []) ->firstWhere('locale', $locale)['data'] ?? null; } } 

Обробка webhook-подій від Akeneo

Route::post('/webhooks/akeneo', function (Request $request) { $signature = $request->header('X-Akeneo-Request-Signature'); if (!hash_equals( hash_hmac('sha256', $request->getContent(), config('akeneo.webhook_secret')), $signature )) { abort(401); } foreach ($request->json('events') as $event) { match($event['action']) { 'product.created', 'product.updated' => SyncAkeneoProduct::dispatch($event['resource']['identifier']), 'product.removed' => Product::where('akeneo_code', $event['resource']['identifier']) ->update(['active' => false]), }; } return response('ok'); }); 

Маппінг атрибутів

Кожен атрибут товару маппиться з PIM в модель сайту. Наприклад, поле values.name.ru_RU.data трансформується в name; values.price.ecommerce.data — в price. Для вкладених даних використовуємо JSONB-поля, зберігаючи вихідні структури — це спрощує налагодження.

Як забезпечити консистентність даних при збоях?

Використовуємо транзакції на рівні бази даних та механізм повторних спроб для API-запитів. При помилці — автоматичне сповіщення в Telegram. Конфлікти вирішуються за принципом «останній запис перемагає» із збереженням історії змін.

Версіонування записів дозволяє відкотити зміни у випадку некоректної синхронізації. Для критичних даних передбачена ручна верифікація перед публікацією.

Чому варто обрати Akeneo замість самописного PIM?

Akeneo — open-source, гнучкий, з великою спільнотою. Він уже містить готові механізми збагачення, управління асортиментом та локалізації. Налаштування під бізнес-процеси займає дні, а не місяці. Ми допомагаємо з кастомізацією та інтеграцією. За рахунок вбудованих конекторів Akeneo економить на розробці до 60% бюджету в порівнянні з самописним рішенням.

Як обрати режим синхронізації?

Режим синхронізації Затримка Навантаження на API Складність реалізації
Пакетний (CRON) Від 1 хв Середнє Низька
Webhook (реалтайм) Миттєво Висока (піки) Середня

Пакетний режим підходить для каталогів з невисокою частотою оновлень — наприклад, раз на годину. Webhook-режим обов'язковий для інтернет-магазинів з highload, де ціна має оновлюватися негайно. Ми допомагаємо обрати оптимальну стратегію на основі аудиту навантаження.

Процес роботи

  1. Аудит — аналіз поточної схеми даних та виявлення розбіжностей (2-3 дні).
  2. Проєктування — маппінг атрибутів, вибір стратегії синхронізації, узгодження сценаріїв обробки помилок (2-4 дні).
  3. Реалізація — розробка імпорту/експорту, webhook-обробників, unit-тестів (4-6 днів).
  4. Тестування — на копії каталогу з еталонними даними, перевірка крайніх випадків (2-3 дні).
  5. Деплой — розгортання на бойовому сервері, налаштування моніторингу (1-2 дні).
  6. Підтримка — 2 тижні гарантійного супроводу, виправлення можливих багів.

Строки

Етап Строк (робочі дні)
Імпорт з PIM (односторонній) 6–10
Двостороння синхронізація + webhooks 10–16
Кастомізація маппінгу та складні правила +2–5

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

  • Повна документація з інтеграції (схеми даних, опис API-викликів).
  • Вихідний код з коментарями.
  • Інструкція з розгортання (Docker, Ansible).
  • Доступи до репозиторію та CI/CD.
  • Навчання співробітників (до 2 годин).
  • Гарантія стабільної роботи протягом 2 тижнів після здачі.

Приклад конфігурації маппінгу (YAML)

Приклад конфігурації маппінгу (YAML)
mappings: product: identifier: code attributes: name: source: values.name.ru_RU.data target: name type: string description: source: values.description.ru_RU.data target: description type: text price: source: values.price.ecommerce.data target: price type: float categories: source: categories target: categories type: array 

Ми готові оцінити ваш проєкт. Зв'яжіться з нами — розрахуємо строки та вартість під ключ. Двостороння синхронізація з PIM окупається за рахунок скорочення ручної праці та зменшення кількості помилок у каталозі. Отримайте консультацію з інтеграції. Замовте аудит поточної синхронізації — це займе не більше двох днів.