У великого маркетплейсу є проблема, про яку зовні не здогадуються: контент. Щоб товар з’явився на порталі, його треба отримати від постачальника, привести до внутрішнього формату, розкласти по категоріях і регулярно оновлювати. Постачальників десятки, і кожен віддає дані по-своєму.
Почали з одного прайсу. Зараз працює близько двадцяти джерел, і нові додаються регулярно.

Модель роботи: платіж за джерело
Домовилися одразу: оплата рахується за кожне джерело окремо, щомісяця. Ця схема виявилася зручною обом сторонам, і я тепер часто її пропоную.
- Замовнику зрозуміло, за що платить. Додали постачальника – додався платіж. Постачальник відвалився – платіж пішов. Ніяких переговорів про перегляд загальної суми.
- Легко почати. Перший прайс коштує стільки ж, скільки один прайс, а не як “проєкт інтеграції”. Поріг входу низький.
- Виконавцю чесно. Кожне джерело – це реальна робота і реальний ризик поломки. Двадцять джерел вимагають у двадцять разів більше уваги, ніж одне.
- Зростання відбувається само. Замовник не питає дозволу і не запускає процес узгодження бюджету, він просто пише: “ось ще один постачальник”.
Ще один плюс такої схеми: якщо бізнесу потрібно тимчасово скоротити витрати, можна зупинити частину джерел, а не весь проєкт, і потім так само легко їх повернути.
Що приходить від постачальників
Двадцять джерел – це чотири принципово різні типи.
XML-фіди за посиланням
Найзручніший варіант. Постачальник дає адресу, за якою лежить актуальний файл. Складність тільки в тому, що структура у всіх різна: різні назви полів, різна вкладеність, різна логіка категорій і характеристик.
Google Таблиці
Приблизно чверть джерел ведеться руками в таблицях. Це найнепередбачуваніший формат: люди додають колонки, міняють порядок, пишуть примітки в комірках з цінами, вставляють порожні рядки-роздільники. Обробка таких джерел має бути параноїдальною і не вірити нічому.
Особисті кабінети з авторизацією
Постачальник видає доступ до свого кабінету, звідки треба забирати каталог. Скрипт заходить під виданими даними і збирає інформацію. Тут головне – акуратність: сесія, ліміти, коректна поведінка. Роботу від імені клієнта з його ж доступом я роблю тільки за прямим дорученням.
Звичайні сайти
Іноді у постачальника немає ніякого вивантаження, є тільки сайт. Тоді дані збираються прямо з нього.
Єдиний внутрішній формат – головне архітектурне рішення
Спокуса написати двадцять окремих скриптів “з джерела одразу у формат порталу” велика. Це помилка, яка стає очевидною на п’ятому джерелі.
Правильна схема – два шари:
- Адаптер джерела. Знає тільки одне: як дістати дані з конкретного постачальника і привести їх до єдиної внутрішньої структури.
- Формувач вивантаження. Знає тільки внутрішню структуру і вимоги порталу.
Що це дає:
- портал змінив вимоги до фіда – правиться один формувач, а не двадцять скриптів;
- новий постачальник – пишеться тільки адаптер, решта вже готова;
- перевірки якості даних пишуться один раз і працюють для всіх джерел;
- новий адаптер додається швидко і без переробки решти.
Саме тому додавання нових прайсів у цьому проєкті йде потоком і не викликає у мене паніки.
Перевірки, без яких не можна
Коли джерел двадцять, руками перевіряти неможливо. Тому кожне вивантаження проходить автоматичний контроль:
- кількість товарів різко впала порівняно з попереднім разом – стоп і сповіщення;
- у більшості позицій зникла ціна – стоп;
- з’явилися нульові або від’ємні ціни – позиції відкидаються;
- дублі за артикулом усередині одного джерела – зводяться за заданим правилом;
- кодування і спецсимволи – перевіряються перед формуванням файлу.
Принцип простий: краще не оновити каталог зовсім, ніж оновити його сміттям. Порожній прайс на порталі помітять за годину, а тихо зіпсовані ціни можуть жити тижнями і коштувати грошей.
Оновлення раз на дві години
Частота підібрана під бізнес: дані мають бути свіжими, але постійне довбання джерел нікому не потрібне. Двадцять джерел оновлюються за розкладом, рознесеним у часі, щоб не створювати піків навантаження ні на сервері, ні у постачальників.
Окремо варто сказати про різні швидкості. Не всі джерела потрібні однаково часто: у когось прайс міняється кілька разів на день, у когось раз на тиждень. Розклад під кожне джерело налаштовується окремо.
Що це дає бізнесу
- Контент-команда не займається механічною роботою. Люди працюють над якістю карток, а не над перекладанням колонок.
- Новий постачальник підключається швидко. Це прямо впливає на швидкість зростання асортименту.
- Дані однорідні. Усі товари на порталі виглядають однаково незалежно від того, від кого прийшли.
- Проблеми видно одразу. Якщо постачальник зламав свій прайс, про це відомо в той самий день, а не коли поскаржиться покупець.
Кому підходить така схема
Маркетплейсам, агрегаторам, дистриб’юторам і будь-яким магазинам, що працюють більш ніж з трьома-чотирма постачальниками. Точка, після якої ручна обробка стає дорожчою за автоматизацію, настає дуже швидко – зазвичай на третьому-четвертому джерелі.
Ознака, що вам це вже потрібно: у компанії є людина, яка значну частину тижня займається перекладанням прайсів у потрібний формат.
Опишіть, скільки у вас постачальників і в якому вигляді вони віддають дані. Я скажу, скільки часу займе перше джерело і як буде виглядати підключення наступних. Детальніше про формати – на сторінці конвертація прайс-листа постачальника в YML.
