ICML — это XML-формат, через который RetailCRM импортирует товарный каталог из интернет-магазина. Понимание структуры файла помогает настроить корректную выгрузку, избежать дублей и передать все нужные поля: категории, предложения, цены и остатки.
Что такое ICML
ICML (Intaro Catalog Markup Language) — формат выгрузки каталога, разработанный для RetailCRM на основе YML (Yandex Market Language) с расширениями. Это обычный XML-файл, который CMS формирует по постоянному адресу, а RetailCRM периодически скачивает и разбирает.
Формат описывает всё, что нужно каталогу CRM:
- дерево категорий (групп товаров);
- товары и их торговые предложения;
- цены, закупочные цены и остатки;
- характеристики, бренды, картинки и ссылки.
Для большинства CMS файл генерирует готовый модуль интеграции, поэтому вручную собирать XML обычно не требуется — но понимать структуру полезно для отладки.
Структура файла
Корень файла — элемент <yml_catalog>, внутри которого находится <shop> с двумя главными блоками: категориями и предложениями.
<yml_catalog date="2026-07-14 10:00">
<shop>
<name>Мой магазин</name>
<categories>
<category id="1">Обувь</category>
<category id="2" parentId="1">Кроссовки</category>
</categories>
<offers>
<offer id="1042" productId="57" quantity="8">
<categoryId>2</categoryId>
<price>5990</price>
<purchasePrice>3200</purchasePrice>
<name>Кроссовки Nova, 42, чёрные</name>
<productName>Кроссовки Nova</productName>
<vendor>Nova</vendor>
<param name="Размер" code="size">42</param>
</offer>
</offers>
</shop>
</yml_catalog>Категории связываются в дерево через parentId, а предложения ссылаются на категорию через categoryId.
Обязательные и важные поля
Часть полей критична для корректного импорта, остальные — желательны для полноты каталога.
| Поле | Роль |
|---|---|
offer id | Уникальный идентификатор предложения (артикул) |
productId | Связывает вариации в один товар |
quantity | Остаток предложения |
price | Цена продажи |
purchasePrice | Закупочная цена для расчёта маржи |
productName | Название товара для группировки вариаций |
categoryId | Привязка к группе товаров |
Дополнительно передают picture, url, vendor, штрихкод, вес и габариты, признак активности productActivity.
Как подключить выгрузку
Подключение сводится к трём шагам.
- На стороне CMS установить и настроить модуль выгрузки ICML — он сформирует файл по постоянному адресу.
- В RetailCRM в настройках магазина указать URL этого файла и включить синхронизацию каталога.
- Запустить пробную загрузку и проверить сопоставление категорий, товаров и цен.
Частые ошибки формата
Большинство проблем импорта — это дефекты самого файла, а не настроек RetailCRM.
offer id — источник дублей номер один. Если артикул генерируется заново при каждой выгрузке (например, из внутреннего автоинкремента), система теряет связь со старыми позициями и плодит копии.- Неэкранированные спецсимволы (
&,<) ломают XML. - Разный
productIdу вариаций — размеры расходятся по разным товарам. - Ссылки на несуществующие категории — товары попадают «в никуда».
- Пустые обязательные поля — предложение не импортируется.
Перед боевым запуском файл полезно прогнать через валидатор XML и проверить кодировку UTF-8.
Обновление и расписание
После подключения RetailCRM обходит файл по расписанию и синхронизирует изменения. Работает это по принципу сопоставления: система сравнивает предложения из файла с каталогом по артикулу и обновляет только то, что изменилось.
- Новые артикулы добавляются как новые предложения.
- Существующие обновляются по цене, остатку и характеристикам.
- Пропавшие из файла позиции можно деактивировать по настройке.
Именно поэтому стабильность артикулов так важна: весь механизм обновления держится на том, что offer id у одной и той же единицы не меняется от выгрузки к выгрузке.
Итог
ICML — это XML-формат на базе YML, через который RetailCRM импортирует каталог: категории, товары, предложения, цены и остатки. Корректный файл со стабильными артикулами, единым productId у вариаций и валидным XML обновляется автоматически и без дублей. Первую загрузку всегда стоит проверять на тестовой выборке.
Мы настраиваем генерацию ICML на стороне CMS, подключаем и отлаживаем выгрузку в RetailCRM, устраняем дубли и ошибки формата. Это типовая задача при интеграции и внедрении системы.
Частые вопросы
Что такое формат ICML?
Это XML-формат выгрузки каталога для RetailCRM на основе Yandex Market Language с расширениями. Файл описывает категории, товары, предложения, цены и остатки.
Нужно ли писать XML вручную?
Обычно нет. Для популярных CMS есть готовые модули, которые формируют корректный ICML автоматически. Вручную структуру собирают редко, чаще её изучают для отладки.
Как связать вариации товара в файле?
Предложения одного товара должны иметь одинаковый productId и разные offer id. По совпадающему productId RetailCRM собирает их под одной карточкой.
Почему после загрузки появились дубли?
Чаще всего из-за нестабильного offer id, который меняется при каждой выгрузке. Система не находит старую позицию по артикулу и создаёт новую.
Какие поля обязательны в ICML?
Ключевые — offer id, productId, price, quantity, productName и categoryId. Без них предложение либо не импортируется, либо попадает в каталог некорректно.
Как подключить выгрузку в RetailCRM?
Указать URL файла ICML в настройках магазина и включить синхронизацию каталога. Предварительно модуль выгрузки настраивается на стороне CMS.
Что происходит с товарами, пропавшими из файла?
В зависимости от настройки их можно автоматически деактивировать. Система сопоставляет файл с каталогом по артикулу и обрабатывает отсутствующие позиции по заданному правилу.
Поможем с настройкой и поддержкой RetailCRM
Поможем с настройкой, доработкой и поддержкой RetailCRM.