Интеграция с «1С», «ERP», CRM-системами и CommerceAPI

Назад
[Показать все инструкции на странице]
Видеоинструкции Управление сайтом Основные модули Поиск по сайту JSON поиск / Стилизация подсказок при поиске Поисковый фильтр и Типы продукта (Характеристики товара). Пример callback функций после выполнения Java Script Готовые скрипты Выгрузки XML/RSS/YML Домены/Domain Почта/E-mail Уведомления Скрытые данные (Системная разметка / Микроразметка) ShortCode (автозамена данных) Конвертация Cookie в GET переменные. Языки Изменение блоков сайта и редактор дизайна Статистика и подключение Google Analytics / Tag Manager Интеграция с «1С», «ERP», CRM-системами и CommerceAPI Продвижение сайтов и SEO Доступ к сайту Кеш

Интеграция с «1С», «ERP», CRM-системами и CommerceAPI

Автоматический экспорт при заказе / Отправка POST данных о заказе в JSON формате

Автоматический экспорт при заказе вы можете включить в настройках сайта, во вкладке «Магазин», указав путь для отправки данных.
На указанный адрес будет отправляться POST запрос, со всеми данными о заказе, в том числе и контактные данные заказчика, и перечень товаров. Контактные данные и информация о заказе будет передаваться в JSON формате, POST запросом.
Например, в 1с вы можете реализовать прием заказов через «HTTP сервис»->«SiteExchange» -> «POSTData»

После оформления заказа, на указанный выше адрес будет отправлен POST запрос, со следующими данными:
 Code: JSON
{
  "ORDER": {
    "buyer_name": "NAME",
    "buyer_soname": "SONAME",
    "buyer_phone": "PHONENUMBER123",
    "buyer_email": "email@email.com",
    "buyer_address": "ADDRESS",
    "delivery_storehouse_title": "Extend PICKUP POINT (Selected)",
    "buyer_address_eform0": "Extend ADDRESS (Selected)",
    "buyer_address_eform1": "Extend ADDRESS (Region)",
    "buyer_address_eform2": "Extend ADDRESS (City)",
    "buyer_address_eform3": "Extend ADDRESS (Street)",
    "buyer_address_eform4": "Extend ADDRESS (Home number)",
    "buyer_address_eform5": "FLAT",
    "buyer_address_eform6": "Extend ADDRESS (Branch number)",
    "buyer_sendedtext": "ADD TEXT",
    "post": "1596538754",
    "lang": "en",
    "form_delivery": "",
    "form_delivery_country_code": "",
    "order_id": "XXXXX",
    "customer_id": "XXXX",
    "order_discount": "",
    "order_hash": "55d4ed2ed42b2c116d9927c2b2ce7fef",
    "time": "2025-06-28T12:31:49+00:00",
    "delivery": "",
    "delivery_id": 0,
    "abtesting": 0,
    "referral_group": "",
    "group": "",
    "referral_url": "https://hotlist.biz/....",
    "referral_utm": "",
    "site_id": "10954",
    "site_url": "hotlist.biz",
    "transaction_id": "XXXXX",
    "total": 2264,
    "currency": "UAH",
    "shipping": "0",
    "items": [
      {
        "id": "284430",
        "name": "Adidas Originals Streetball Trainers FX9701 (42)",
        "sku": "200976_42",
        "sku_parent": "200976",
        "variant": "42",
        "category": "sport_shoes",
        "quantity": "1",
        "price": "686",
        "currency": "UAH",
        "variations_id": "409151"
      },
      {
        "id": "284436",
        "name": "Shoe bag with pocket Kite Education College",
        "sku": "200982",
        "sku_parent": "200982",
        "variant": "",
        "category": "bags_for_shoes",
        "quantity": "1",
        "price": "736",
        "currency": "UAH",
        "variations_id": 0
      },
      {
        "id": "284438",
        "name": "ASICS Gel-Venture 8 Gs Trainers (43)",
        "sku": "200984_43",
        "sku_parent": "200984",
        "variant": "43",
        "category": "sport_shoes",
        "quantity": "1",
        "price": "842",
        "currency": "UAH",
        "variations_id": "409154"
      }
    ]
  }
}


Если после отправки запроса, ваш сервис вернет JSON данные, с содержанием «Number» или «crm_order_id», то к заказу будет добавлен внешний номер заказа.

Автоматический экспорт статистики продаж / Отправка POST данных о заказе в JSON формате

Автоматический экспорт статистики продаж вы можете включить в настройках сайта, во вкладке «Магазин», указав путь для отправки данных.
На указанный адрес будет отправляться POST запрос, со всеми данными о заказе, которые изменяются в Статистике продаж. Информация будет передаваться POST запросом в JSON формате.
Например, в 1с вы можете реализовать прием заказов через «HTTP сервис»->«SiteExchange» -> «POSTData»
Кроме того вы можете включить внешний доступ к вашей статистике, указав «Ключ для доступа к статистике продаж».

После изменения статуса заказа (кроме быстрого редактирования статусов), на указанный выше адрес будет отправлен POST запрос в JSON формате, со следующими данными:
 Code: JSON
{
  "ORDER": {
    "crm_order_id": "123",
    "total": "2264",
    "currency": "UAH",
    "discount": "",
    "discount_before": "",
    "total_before": "2264",
    "currency_before": "UAH",
    "shop_cart_statistic_selldone_datestump_unsted": "0",
    "status": "0",
    "status_pay": "0",
    "allow_online_pay": "0",
    "status_for_customer": "0",
    "delivery_status": "0",
    "products_preview": "",
    "admin_note": "",
    "delivery_selected_id_before": "3482",
    "delivery_selected_id": "3482",
    "delivery_track_id": "",
    "delivery_track_id_link": "",
    "buyer_name": "NAME SONAME",
    "buyer_phone": "PHONENUMBER123",
    "buyer_address": "ADDRESS",
    "buyer_address_eform0": "Extend ADDRESS (Selected)",
    "buyer_address_eform1": "Extend ADDRESS (Region)",
    "buyer_address_eform2": "Extend ADDRESS (City)",
    "buyer_address_eform3": "Extend ADDRESS (Street)",
    "buyer_address_eform4": "Extend ADDRESS (Home number)",
    "buyer_address_eform5": "Extend ADDRESS (Flat)",
    "buyer_address_eform6": "Extend ADDRESS (Branch number)",
    "buyer_email": "email@email.com",
    "payment_method": "PaymentMethod (Selected)",
    "group": "",
    "referral_group": "",
    "referral_url": "http://hotlist.biz",
    "referral_utm": "",
    "site_manager_id_operator": "1",
    "buyer_id": "16532",
    "manager_id_operator": "0",
    "order_products": "284430|284436|284438",
    "order_products_sku": "200976_42|200982|200984_43",
    "order_products_num": "1|1|1",
    "order_products_variations_id": "409151|407678|409154",
    "order_products_prices": "686|736|842",
    "order_products_currency": "UAH|UAH|UAH",
    "order_products_titles": "Adidas Originals Streetball Trainers FX9701|Shoe bag with pocket Kite Education College|ASICS Gel-Venture 8 Gs Trainers",
    "order_products_variations_titles": "42||43",
    "order_products_prices_without_discount": "||",
    "post": "1596578917",

    "Save": "Save",
    "order_id": 63738,
    "order_discount": "",
    "time": "2025-06-28T12:31:49+00:00",
    "delivery": null,
    "delivery_id": "3482",
    "referral_group": "",
    "group": "",
    "referral_url": "http://hotlist.biz/ru/pers_shop/sport_shoes/284438.htm",
    "referral_utm": "",
    "site_url": "hotlist.biz",
    "transaction_id": 63738,
    "crm_oder_id": "123",
    "total": "2264",
    "currency": "UAH",
    "items": [
      {
        "id": "284430",
        "name": "Adidas Originals Streetball Trainers FX9701",
        "sku": "200976_42",
        "variant": "42",
        "quantity": "1",
        "price": "686",
        "currency": "UAH",
        "variations_id": "409151",
        "price_without_discount": ""
      },
      {
        "id": "284436",
        "name": "Shoe bag with pocket Kite Education College",
        "sku": "200982",
        "variant": "",
        "quantity": "1",
        "price": "736",
        "currency": "UAH",
        "variations_id": "407678",
        "price_without_discount": ""
      },
      {
        "id": "284438",
        "name": "ASICS Gel-Venture 8 Gs Trainers",
        "sku": "200984_43",
        "variant": "43",
        "quantity": "1",
        "price": "842",
        "currency": "UAH",
        "variations_id": "409154",
        "price_without_discount": ""
      }
    ]
  }
}

'status' - '3', статус сделки //0 - Не обработан, 1 - Заказ в обработке, 3 - Обработан, 2 - Отменен, 5 - Отменен (Нет в наличии), 6 - Отменен (Отказ), delete - Удалить заказ
'status_pay' - '0', Статус заказа //0-Не указано, 1 - Оплачен онлайн, не проверен, 4 - Оплачен онлайн и проверен, 2 - Оплачен, 3 - Предоплачен, 5 - Ожидается оплата
'status_for_customer' - '1', Статус для покупателя //0 - Не обработан, 1 - Обрабатывается, 3 - Отправлен / Обработан, 2 - Отменен
'admin_note' - 'Примечание администратору',
'delivery_status' - '0', '0 - Не указано, 1 - Доставлено, 2 - Не доставлено, 3 - Ожидается отправка, 4 - Передано курьеру, 5 - В пути, 6 - Отправлено на почтовое отделение, 7 - Отправлено на адрес получателя, 8 - Доставлено на почтовое отделение, 9 - Доставлено на адрес получателя'
'crm_order_id' - 'XXX', 'Внешний код заказа (для использования в сторонних CRM)'

Подробнее ознакомиться с полямы вы можете в статистике продаж, при редактировании заказа.

При изменении товаров в заказе, отправляется JSON запрос с перечнем item, а также номер заказа:
 Code: JSON
{
  "ORDER": {
    "crm_order_id": "123",
    "order_id": 63738,
    "total": "2264",
    "currency": "UAH",
    "discount": "",
    "discount_before": "",
    "total_before": "2264",
    "currency_before": "UAH",
    "shop_cart_statistic_selldone_datestump_unsted": "0",
    "status": "0",
    "status_pay": "0",
    "allow_online_pay": "0",
    "status_for_customer": "0",
    "delivery_status": "0",
    "products_preview": "",
    "admin_note": "",
    "delivery_selected_id_before": "3482",
    "delivery_selected_id": "3482",
    "delivery_track_id": "",
    "delivery_track_id_link": "",
    "buyer_name": "NAME SONAME",
    "buyer_phone": "PHONENUMBER123",
    "buyer_address": "ADDRESS",
    "buyer_address_eform0": "Extend ADDRESS (Selected)",
    "buyer_address_eform1": "Extend ADDRESS (Region)",
    "buyer_address_eform2": "Extend ADDRESS (City)",
    "buyer_address_eform3": "Extend ADDRESS (Street)",
    "buyer_address_eform4": "Extend ADDRESS (Home number)",
    "buyer_address_eform5": "Extend ADDRESS (Flat)",
    "buyer_address_eform6": "Extend ADDRESS (Branch number)",
    "buyer_email": "email@email.com",
    "payment_method": "PaymentMethod (Selected)",
    "group": "",
    "referral_group": "",
    "referral_url": "http://hotlist.biz",
    "referral_utm": "",
    "site_manager_id_operator": "1",
    "buyer_id": "16532",
    "manager_id_operator": "0",
    "order_products": "284430|284436|284438",
    "order_products_sku": "200976_42|200982|200984_43",
    "order_products_num": "1|1|1",
    "order_products_variations_id": "409151|407678|409154",
    "order_products_prices": "686|736|842",
    "order_products_currency": "UAH|UAH|UAH",
    "order_products_titles": "Adidas Originals Streetball Trainers FX9701|Shoe bag with pocket Kite Education College|ASICS Gel-Venture 8 Gs Trainers",
    "order_products_variations_titles": "42||43",
    "order_products_prices_without_discount": "||",
    "post": "1596578917",

    "Save": "Save",
    
    "order_discount": "",
    "time": "2025-06-28T12:31:49+00:00",
    "delivery": null,
    "delivery_id": "3482",
    "referral_group": "",
    "group": "",
    "referral_url": "http://hotlist.biz/ru/pers_shop/sport_shoes/284438.htm",
    "referral_utm": "",
    "site_url": "hotlist.biz",
    "transaction_id": 63738,
    

    "items": [
      {
        "id": "284430",
        "name": "Adidas Originals Streetball Trainers FX9701",
        "sku": "200976_42",
        "variant": "42",
        "quantity": "1",
        "price": "686",
        "currency": "UAH",
        "variations_id": "409151",
        "price_without_discount": ""
      },
      {
        "id": "284436",
        "name": "Shoe bag with pocket Kite Education College",
        "sku": "200982",
        "variant": "",
        "quantity": "1",
        "price": "736",
        "currency": "UAH",
        "variations_id": "407678",
        "price_without_discount": ""
      },
      {
        "id": "284438",
        "name": "ASICS Gel-Venture 8 Gs Trainers",
        "sku": "200984_43",
        "variant": "43",
        "quantity": "1",
        "price": "842",
        "currency": "UAH",
        "variations_id": "409154",
        "price_without_discount": ""
      }
    ]
  }
}

Доступ к статистике продаж / JSON


Укажите ключ для доступа к статистике продаж в настройках, во вкладке «Магазин». Если вам необходимо получить доступ к статистике продаж внешним приложением, то вы можете выполнить (POST/GET или AJAX) запрос по адресу «/ajax.php?statistic_sell»

При этом необходимо указать ключ в запросе, с шифрованием MD5. Например, если у вас указан ключ «123», то в запросе это будет «202cb962ac59075b964b07152d234b70».

В таком случае запрос будет выглядеть так: «/ajax.php?statistic_sell&key=202cb962ac59075b964b07152d234b70»
В запросе можно указать данные для сортировки или поиска (GET/POST параметры), которые можно взять на вашей странице статистики продаж в админ-центре (/page.php?p=statistic_sell&mystat). Сортировка и выбор параметров осуществляется GET/POST запросом, например, «&sort_dateperiod=1week» означает, что будет отображаться статистика продаж за неделю.

Данные отображаются в JSON формате.

Обратите внимание, что если вы используете открытые для посетителей запросы странице, то при помощи вашего ключа они смогут получить доступ к вашей статистике продаж.

Доступ к прайсу магазина / Полная выгрузка прайса в CSV


Укажите ключ для доступа к прайсу магазина в настройках, во вкладке «Магазин». Полная выгрузка прайса находится по адресу «/csv_export_products.csv»

При этом необходимо указать ключ в запросе, с шифрованием MD5. Например, если у вас указан ключ «123», то в запросе это будет «202cb962ac59075b964b07152d234b70».

В таком случае запрос будет выглядеть так: «/csv_export_products.csv?key=202cb962ac59075b964b07152d234b70»
В запросе можно указать данные для сортировки и выборке полей, которые можно взять на вашей странице экспорта в админ-центре (/page.php?p=submit_catalog_page&subpage&export_from_shop). Сортировка и выбор параметров осуществляется GET/POST запросом, например, «&export_product_access=export_product_access» означает, что будет выгружать поле с данными о доступе к товару.

Данные отображаются в CSV формате.

Файл выгрузки кешируется для уменьшения нагрузки и обновляется раз в сутки. Удалить кеш можно при помощи кнопки «Очистить кеш XML/CSV выгрузок».

Пример: https://templatedemo437544.hotlist.biz/csv_export_products.csv?key=202cb962ac59075b964b07152d234b70

Дополнительно реализован механизм обмена данными через API, схожий с WooCommerce API. API позволяет получать и обновлять инофмация о заказах и товарах, а также категориях. Инструкции и настройки в разделе «Магазин» - «Обмен данными JSON Commerce API».

Commerce API (Products/Categories/Sales Statistics)

Commerce API — Краткий мануал по методам

Ключ доступа

Для работы с API нужен ключ доступа (Consumer Secret), который вы создаете в резделе «Настройка», «Магазин», «Доступ к статистике продаж». Ключ формируется на основе Ключа для доступа к статистике продаж.

Методы API (HTTP)

Все запросы идут на базовый URL вашего сайта, например: https://site.com/api/commerce/ или https://site.com/wp-json/wc/v3/

1. Статистика продаж

МетодURLОписание
GET/ordersПолучить статистику заказов
GET/orders/{id}Получить статистику отдельного заказа по ID
GET/crm_orders/{id}Получить статистику отдельного заказа по внещнему CRM ID
DELETE/orders/{id}Удалить заказ по ID
DELETE/crm_orders/{id}Удалить заказ по внещнему CRM ID
POST/ordersДобавить новый заказ
UPDATE/orders/{id}Обновить заказ по ID (PATCH/PUT/UPDATE)
UPDATE/crm_orders/{id}Обновить заказ по внещнему CRM ID (PATCH/PUT/UPDATE)

2. Товары

МетодURLОписание
POST/productsМассовое добавление и обновление товаров
GET/productsПолучить список товаров
GET/products/{id}Просмотр отдельного товара по ID
GET/products/sku/{sku}Просмотр отдельного товара по SKU (коду товара)
UPDATE/products/{id}Обновить товар по ID (PATCH/PUT/UPDATE)
UPDATE/products/sku/{sku}Обновить товар по SKU (коду товара) (PATCH/PUT/UPDATE)
UPDATE/productsМассовое обновление нескольких товаров (PATCH/PUT/UPDATE)
DELETE/products/{id}Удалить товар по ID
DELETE/products/sku/{sku}Удалить товар по SKU (коду товара)

3. Категории магазина

МетодURLОписание
POST/products/categoriesМассовое добавление и обновление категорий
GET/products/categoriesПолучить список категорий товаров
GET/products/categories/{id}Получить категорию по ID
GET/products/categories/id/{id}Получить категорию по ID (альтернативный вариант)
GET/products/categories/name/{name}Получить категорию по имени
UPDATE/products/categoriesМассовое обновление нескольких категорий (PATCH/PUT/UPDATE)
UPDATE/products/categories/{id}Обновить категорию по ID (PATCH/PUT/UPDATE)
UPDATE/products/categories/id/{id}Обновить категорию по ID (альтернативный вариант)
UPDATE/products/categories/name/{name}Обновить категорию по по имени

Параметры родительских категорий

ПараметрТипОписание
category_parent_id int ID родительской категории. Используется в первую очередь, если задан.
category_parent_name string Латинское имя (alias / slug, адрес для открытия категории) родительской категории. Используется, если category_parent_id не задан. При совпадении имён можно уточнить через category_lang.
category_lang string Язык категории. Применяется для разрешения коллизий одинаковых category_parent_name в разных языках. Язык категории должен соответствовать языку родительской категории.

Принцип работы:

  1. Сначала проверяется category_parent_id.
  2. Если он не задан – используется category_parent_name.
  3. При совпадении имён – добавляется проверка по category_lang.

Особое правило:
Чтобы добавить категорию в корневую (основную) категорию, необходимо указать category_parent_name = "main" и обязательно задать параметр category_lang - язык родительское категории.

Обновление и удаление:
update_exists (bool) – если true, обновляет категорию при повторном добавлении (по умолчанию false).
delete (bool) – если true, категория будет удалена.

4. Производители

МетодURLОписание
POST/products/producersМассовое добавление и обновление производителей
GET/products/producersПолучить список производителей
GET/products/producers/{id}Получить производителя по ID
GET/products/producers/id/{id}Получить производителя по ID (альтернативный вариант)
GET/products/producers/name/{name}Получить производителя по имени
UPDATE/products/producersМассовое обновление нескольких производителей (PATCH/PUT/UPDATE)
UPDATE/products/producers/{id}Обновить производителя по ID (PATCH/PUT/UPDATE)
UPDATE/products/producers/id/{id}Обновить производителя по ID (альтернативный вариант)
UPDATE/products/producers/name/{name}Обновить производителя по имени

Параметры привязки производителей

ПараметрТипОписание
producer_parent_id int ID родительского производителя (группы). Используется в первую очередь, если задан.
producer_parent_name string Латинское имя (alias / slug, адрес для открытия производителя). Используется, если producer_parent_id не задан. При совпадении имён можно уточнить через producer_lang.
producer_lang string Язык производителя. Применяется для разрешения коллизий одинаковых producer_parent_name в разных языках.

Принцип работы:

  1. Сначала проверяется producer_parent_id.
  2. Если он не задан – используется producer_parent_name.
  3. При совпадении имён – добавляется проверка по producer_lang.

Особое правило:
Чтобы добавить производителя в корневую (основную) группу производителей, необходимо указать producer_parent_name = "main" и обязательно задать параметр producer_lang – язык родительской группы.

Обновление и удаление:
update_exists (bool) – если true, обновляет производителя при повторном добавлении (по умолчанию false).
delete (bool) – если true, производитель будет удалён.

5. Коллекции

МетодURLОписание
POST/products/collectionsМассовое добавление и обновление коллекций
GET/products/collectionsПолучить список коллекций
GET/products/collections/{id}Получить коллекцию по ID
GET/products/collections/id/{id}Получить коллекцию по ID (альтернативный вариант)
GET/products/collections/name/{name}Получить коллекцию по имени
UPDATE/products/collectionsМассовое обновление нескольких коллекций (PATCH/PUT/UPDATE)
UPDATE/products/collections/{id}Обновить коллекцию по ID (PATCH/PUT/UPDATE)
UPDATE/products/collections/id/{id}Обновить коллекцию по ID (альтернативный вариант)
UPDATE/products/collections/name/{name}Обновить коллекцию по имени

Параметры привязки коллекций

ПараметрТипОписание
collection_parent_id int ID родительской коллекции. Используется в первую очередь, если задан.
collection_parent_name string Латинское имя (alias / slug, адрес для открытия коллекции). Используется, если collection_parent_id не задан. При совпадении имён можно уточнить через collection_lang.
collection_lang string Язык коллекции. Применяется для разрешения коллизий одинаковых collection_parent_name в разных языках.

Принцип работы:

  1. Сначала проверяется collection_parent_id.
  2. Если он не задан – используется collection_parent_name.
  3. При совпадении имён – добавляется проверка по collection_lang.

Особое правило:
Чтобы добавить коллекцию в корневую (основную) коллекцию, необходимо указать collection_parent_name = "main" и обязательно задать параметр collection_lang – язык родительской коллекции.

Обновление и удаление:
update_exists (bool) – если true, обновляет коллекцию при повторном добавлении (по умолчанию false).
delete (bool) – если true, коллекция будет удалена.

6. Сортировка и пагинация

Для методов /orders и /products доступны параметры для постраничного вывода и сортировки:

Параметры пагинации

ПараметрТипОписание
pageintНомер страницы (по умолчанию 1)
per_pageintКол-во элементов на страницу (по умолчанию 90, максимум 2000)

Параметры сортировки

ПараметрТипДопустимые значенияОписание
orderbystringid, title, price, date, viewsПоле для сортировки
orderstringasc, descНаправление сортировки

Параметры языка

ПараметрТипДопустимые значенияОписание
lstringru, ua, en, de, fr, es, it, plЯзык отображения значений

Дополнительно для заказов

Можно фильтровать заказы по дате и статусу:

  • ?after=YYYY-MM-DD — Начальная дата (в формате ISO)
  • ?before=YYYY-MM-DD — Конечная дата
  • ?status=pending|processing|on-hold|completed|cancelled|0|1|2|3|5|6|7|8 — Статус заказа (можно указать текстовый WooCommerce статус или числовой код)
    • 0 — Не обработанные (pending)
    • 1 — Заказ в обработке (processing)
    • 7 — Заказ в обработке, ожидает поставки (on-hold)
    • 3 — Обработанные (completed)
    • 8 — Обработанные и завершённые (completed)
    • 2 — Отменённые (cancelled)
    • 5 — Отменённые: нет в наличии (cancelled)
    • 6 — Отменённые: отказ (cancelled)
  • ?show_deleted=1 — Показать скрытые заказы

Примеры

GET /orders?page=2&per_page=100&after=2024-06-01&before=2024-06-30
GET /products?orderby=price&order=asc&per_page=50

Пример авторизации в запросе

В запросе передаются ключи:

 Code: PHP
?consumer_secret=ВАШ_СЕКРЕТ (внимание не публикуйте ключ в общий доступ!)

Или через заголовок Authorization с OAuth 1.0a.



Добавить новый заказ (POST /orders)

Чтобы создать новый заказ через API, нужно отправить POST-запрос на /orders с JSON-телом. Обязательно должно быть указано минимум:

  • email — Email покупателя (обязательно!)
  • line_items — Список добавляемых товаров

Параметры заказа

При создании заказа можно указывать дополнительные поля, например:

{
  "first_name": "Name",
  "last_name": "Soname",
  "email": "alex@example.com",
  "phone": "+380671112233",
  "address": "Full address of not used address eform",
  "buyer_address_eform1": "State",
  "buyer_address_eform2": "City",
  "buyer_address_eform3": "Street",
  "buyer_address_eform4": "house number",
  "buyer_address_eform5": "flat",
  "postcode": "01001",
  "total": "999",
  "status": "processing",
  "status_for_customer": "processing",
  "line_items": [ ... ]
}

Описание поля total:

  • total — финальная сумма заказа (строка или число). Если это поле указано, оно будет использовано как итоговая цена заказа.
  • Если total не указано, сумма заказа будет автоматически пересчитана по сумме добавленных товаров в line_items.
  • Поле total не является обязательным и может быть использовано для заказов без товаров.

Формат line_items

Параметр line_items — это массив товаров, каждый товар задаётся объектом со следующими полями:

"line_items": [
  {
    "product_id": 478734,
    "quantity": 1,
    "price": 100,
    "currency": "USD"
  },
  {
    "product_id": 478268,
    "quantity": 10,
    "variation": "51"
  },
  {
    "product_id": 478266,
    "quantity": 1,
    "variation_id": 735302
  }
]
  • product_id — ID товара (обязательно!).
  • quantity — Количество единиц товара (обязательно!).
  • price — (необязательно) Если указана цена — берётся именно эта цена и не вычисляется по данным сайта.
  • currency — (необязательно) Валюта конкретного товара (например, USD или UAH). Если указана и отличается от общей валюты заказа (currency), система сконвертирует цену автоматически.
  • variation_id — ID разновидности (вариации товара) — способ указать разновидность, если она есть.
  • variation — Название или код разновидности — используется если нет variation_id. Если указаны оба — приоритет у variation_id.

Важно: Если общая валюта заказа (currency) не указана — будет использоваться валюта по умолчанию для сайта.

Если валюта товара отличается от общей валюты — цена конвертируется автоматически.


Обновление товаров

Обновление товара осуществляется через HTTP-метод UPDATE (или PATCH/PUT) по URL с указанием ID товара или его SKU (кода товара), либо сразу нескольких товаров одним запросом:

  • /products/{id} — обновление товара по ID
  • /products/sku/{sku} — обновление товара по коду (SKU)
  • /products — массовое обновление нескольких товаров (до 5000 за один запрос)

При массовом обновлении путь /products не содержит ID или SKU. В этом случае необходимо передавать массив объектов товаров в параметре products. Каждый элемент массива должен содержать хотя бы id или sku. Если указан id, он имеет приоритет и может использоваться для замены кода товара (sku). Если id не указан, поиск осуществляется по sku - коду товара.

При обновлении передается полный набор данных товара в формате JSON. Все переданные данные заменяют существующие значения, включая:

  • Основные свойства товара (название, описание, цены, статус и др.)
  • Атрибуты (характеристики)
  • Вариации (разновидности товара)
  • Изображения
  • Категории и теги
  • Дополнительные настройки и мета-поля

Обновление вариаций происходит с использованием следующего алгоритма для каждой вариации из массива variations:

  1. Если в вариации указан id, обновление производится по нему.
  2. Если id отсутствует, но указан sku (код вариации), поиск и обновление происходит по нему.
  3. Если нет ни id, ни sku, но есть title (название вариации), поиск и обновление производится по названию.
  4. Если вариация не найдена по указанным критериям, создается новая вариация с заданными параметрами.

Обновление по SKU удобно, когда ID вариации неизвестен, но известен уникальный код.

При обновлении все поля, указанные в JSON, заменят текущие значения товара; чтобы оставить какое-то поле без изменений, просто не включайте его в запрос.

  • Дубликаты разновидностей: если в массиве разновидностей встречаются повторяющиеся по коду (SKU) и названию (title), такие разновидности будут пропущены — одна и та же комплектация не добавится дважды.
  • Главное изображение: в массиве images главным считается то, что под индексом 0. Если images[0] отсутствует или не загружено, главным станет первое успешно загруженное изображение.
  • Максимум изображений: для одного товара можно загрузить не более 10 изображений. Если попытаться загрузить больше, лишние файлы будут проигнорированы.
  • Работа с изображениями:
    • Удаление изображений: чтобы удалить изображение по индексу, укажите для элемента массива images значение "delete". Например, images[2] = "delete" удалит файл с индексом 2. Можно удалять и загружать одновременно, указывая несколько ключей: images[3] = "delete", images[1] = "https://...".
    • Пропуски индексов изображений: если указать пустую строку или false, этот индекс будет пропущен без ошибок.
    • Перезапись изображений: параметр images_replace: если true, система перезапишет существующие файлы изображений по переданным индексам (удалит старый файл и кеш). Если false или не указан — перезапись запрещена.
    • Пропуск занятых индексов: параметр images_skip_index: если true, то при занятом индексе и запрещённой перезаписи система найдёт следующий свободный индекс и сохранит файл туда. Если false или не указан — индекс берётся строго как передан.
    • Сохранение под новым индексом при конфликте: параметр images_replace_new_index: если true, то при занятом индексе и отключённых перезаписи и автоматическом пропуске файл будет сохранён под новым свободным индексом. Если все три параметра false или не заданы и индекс занят — файл не будет загружен.

Параметры товара


Доступные значения вы можете посмотреть в коде примеров ниже. Также приведена дополнительная расшифровка некоторых значений, которая может быть полезна.
  • Доступные значения price_for

    Для каждого товара можно указать параметр price_for, который задаёт единицу измерения цены. Допустимо использовать числовой код или текст (например, «За 1 кг» или «Per 1 kg»). Вот полный список значений:

    Показать / Скрыть
    • 0 — Не указано
    • 1 — За 1 шт
    • 2 — За 100 шт
    • 3 — За 1000 шт
    • 4 — За 1 упаковку
    • 5 — За 1 кг
    • 6 — За 1000 кг
    • 7 — За 1 м² (квадратный метр)
    • 8 — За 1 метр
    • 9 — За 1 км
    • 10 — За комплект
    • 11 — За 1 час
    • 12 — За 1 день
    • 13 — За 1 месяц
    • 14 — За 1 год
    • 15 — За сотку
    • 16 — За акр
    • 17 — За гектар
    • 18 — За участок
    • 19 — За объект
    • 30 — За 1 мл (миллилитр)
    • 31 — За 1 л (литр)
    • 32 — За 1 км³ (кубический километр)
    • 33 — За 1 м³ (кубический метр)
    • 34 — За 1 дм³ (кубический дециметр)
    • 35 — За 1 см³ (кубический сантиметр)
    • 36 — За 1 мм³ (кубический миллиметр)
    • 37 — За 1 hl (гектолитр)
    • 38 — За 100 грамм
    • 39 — За 1 фунт
    • 40 — За 1 грамм
    • 41 — За 10 кг
    • 42 — За 1 центнер (100 кг)
    • 43 — За 1 тонну
    • 44 — За 1 ар
    • 45 — За 1 пару
    • 46 — За 1 дюжину
    • 47 — За 1 галлон
    • 48 — За 1 баррель
    • 49 — За 1 минуту
    • 50 — За 1 неделю
    • 51 — За 1 услугу
    • 52 — За 1 поездку
    • 53 — За 1 человека
    • 54 — За 1 машину
    • 55 — За 1 м.п. (метр погонный)

    Можно использовать как числовое значение, так и текст — система автоматически распознает и приведёт к правильному коду.

  • Доступные значения stock_status

    Для каждого товара можно указать параметр stock_status, который определяет статус доступности товара и его поведение на сайте. Можно использовать числовой код или ключевое слово — система распознает оба варианта.

    Показать / Скрыть
    • 0 — В наличии
    • 1 — Нет в наличии
    • 2 — Под заказ
    • 3 — Нет в наличии + Скрыть товар из списка
    • 4 — Нет в наличии + Запретить добавлять товар в корзину
    • 5 — Наличие уточняйте

    Можно использовать как числовое значение, так и текст — система автоматически распознает и приведёт к правильному коду.

    Если для товара выбран вариант 3, он будет скрыт из списков товаров на сайте. Если выбран вариант 4, товар будет виден, но его нельзя будет добавить в корзину. Вариант 5 показывает покупателю, что наличие нужно уточнить.

  • Акция и Доступные значения promotion_expires_job

    Для каждого товара можно указать параметр promotion_expires_job, который управляет тем, что делать с акцией после истечения её срока.
    Можно использовать числовой код или ключевое слово — система распознает оба варианта.

    Показать / Скрыть
    • 0 — Ничего не делать (скрыть таймер)
    • 1 — Перенести «Старая цена» в основную цену и удалить старую цену
    • 2 — Убрать пометку «Акция»
    • 3 — Перенести «Старая цена» в основную цену и убрать пометку «Акция»
    • 5 — Запустить таймер заново сроком на 1 день
    • 6 — Запустить таймер заново сроком на 10 дней
    • 7 — Запустить таймер заново с предыдущим сроком (дата таймера минус дата последнего редактирования)
    • 8 — Убрать пометку «Акция» и удалить «Старая цена»

    Можно указывать как числовое значение, так и текст — система автоматически распознает и приведёт к нужному коду.

    Важно: Для активации таймера акции обязательно укажите promotion равным 1 — это означает, что акция активна.

    Также необходимо указать дату окончания акции в параметре promotion_expires — она может быть задана как UNIX-время (например, time()), так и в формате YYYY-MM-DDTHH:MM:SS+00:00 (например, 2025-06-28T00:00:00+00:00).

  • Больше значений

    Доступные значения title

    Текст (максимум 255 символов) - наименование товара


    Доступные значения sku

    Текст (максимум 100 символов) - код товара


    Доступные значения status
    • 1 — Доступ открыт
    • 0 — Доступ закрыт (403)

    Доступные значения yml

    Включить/Выключить выгрузку товара в XML (Goolge Merchant и прочие)

    • 1 — Выгрузка включена
    • 0 — Выгрузка выключена

    Доступные значения noimport

    Включить/Выключить обновление товара при импорте (Магазин - Импортировать товары)

    • 1 — Обновлять при импорте
    • 0 — Не обновлять при импорте

    Доступные значения delete
    • 0 — Не удалять
    • 1 — Удалить товар

    Доступные значения show_period

    Период размещения товара. Позволяет скрыть товар после истечения указанного срока.

    • 0 — На всегда
    • 1 — 1 день
    • 2 — Неделя
    • 3 — Месяц
    • 4 — Полгода
    • 5 — Год

    Доступные значения priority

    Число от 0 до 100. Чем больше — тем выше товар в списке.


    Доступные значения custom_label_4

    Текст (максимум 95 символов)


    Доступные значения meta_title

    Текст (максимум 255 символов)


    Доступные значения meta_description

    Текст (максимум 500 символов)


    Доступные значения meta_keywords

    Текст (максимум 2000 символов)


    Доступные значения multilangid

    Текст (максимум 50 символов)


    Доступные значения categories

    Массив со значениями

    • id — ID категории
    • name — Наименование категории
    • lang — Язык категории

    Доступные значения producer

    Массив со значениями

    • id — ID производителя
    • name — Наименование производителя
    • lang — Язык производителя

    Доступные значения producer_country

    Текст (максимум 100 символов)


    Доступные значения collection

    Массив со значениями

    • id — ID коллекции
    • name — Наименование коллекции
    • lang — Язык коллекции

    Доступные значения short_description

    Текст (максимум 2000 символов) - краткое описание товара (если включено в стилистике сайта, то отображается при просмотре списка товаров)


    Доступные значения description

    Текст длинный - полное описание товара, отображается при отдельном просмотре карточки товара


    Доступные значения description_tab_1

    Текст длинный - вкладка 1 с описанием (Заголовок вкладки укажите в настройках магазина)


    Доступные значения description_tab_2

    Текст длинный- вкладка 2


    Доступные значения description_tab_3

    Текст длинный- вкладка 3


    Доступные значения description_tab_4

    Текст длинный- вкладка 4


    Доступные значения description_tab_5

    Текст длинный- вкладка 5


    Доступные значения bought_with

    Текст (максимум 255 символов) - список значения С товаров покупают, через запятую (ID или SKU товаров)


    Доступные значения bought_with_email

    Текст (максимум 255 символов) - список значения С товаров покупают, отправляемый покупателю на почту при заказе, через запятую (ID или SKU товаров)


    Доступные значения discount

    Текст (максимум 20 символов) - размер скидки (информационное поле о скидке, отображается и в списке товаров и при отдельном просмотре)


    Доступные значения new

    Пометить товар как Новинка

    • 0 — Не установлено
    • 1 — Установлено

    Доступные значения featured

    Пометить товар как Хит продаж

    • 0 — Не установлено
    • 1 — Установлено

    Доступные значения promotion

    Пометить товар как Акция

    • 0 — Не установлено
    • 1 — Установлено

    Доступные значения reducedprice

    Пометить товар как Цена снижена

    • 0 — Не установлено
    • 1 — Установлено

    Доступные значения shipping
    • 0 — Не указаны
    • 1 — Установлены

    Доступные значения shipping_settings (связаны с shipping)
    • 2 — Из Общих настроек
    • 0 — Нет доставки
    • 1 — Есть доставка
    • 3 — Указать только заметку по поводу доставки

    Доступные значения shipping_price (связаны с shipping_settings)

    Текст (максимум 40 символов)


    Доступные значения shipping_note (связаны с shipping_settings)

    Текст (длинный)


    Доступные значения shipping_days (связаны с shipping_settings)

    Текст (максимум 10 символов)


    Доступные значения shipping_sum (связаны с shipping_settings)
    • 0 — Не учитывать количество товара
    • 1 — Учитывать количество товара
    • 2 — Не добавлять доставку к сумме заказа

    Доступные значения attributes

    Массив с характеристиками - отображаются в карточке товара, учитываются при сравнении товара и в поисковом фильтре

    • id — ID характеристики (если есть)
    • name — Название характеристики (поиск происходил тибо по name либо по value_parent_id / value_ints)
    • options — Массив значений характеристики
    • value_ints — Массив числовых ID значений (если есть)
    • value_parent_id — Родительский ID характеристики (если есть)

    Пример:
    [
      {
        "id": 1298,
        "name": "Product type",
        "options": ["Кросівки"]
      },
      {
        "name": "Виробник",
        "options": ["Adidas"],
        "value_ints": [10081],
        "value_parent_id": 1762
      },
      {
        "name": "Розмір",
        "options": ["43", "43,5"],
        "value_ints": [10107, 10108],
        "value_parent_id": 1763
      }
    ]

    Другие значения

    Другие значения вы можете узнать получив методом GET /products или в примерах ниже


Добавление товаров

Этот метод позволяет добавить один или несколько товаров одним запросом (до 3000 за один запрос). Формат запроса полностью совпадает с методом обновления: можно передавать массив products или одиночный товар.

  • Поиск по ID: при добавлении нового товара поле id должно быть пустым или отсутствовать. Если id указан и товар с таким ID уже существует, то система обновит этот товар вместо создания нового.
  • Поиск по коду (SKU): перед добавлением система проверяет, есть ли товар с таким SKU. Если такой товар найден, он будет обновлён, а не создан заново.

Вы можете добавить новые товары и обновить существующие одним запросом.

Это базовое описание основных методов для работы с Commerce API / WooCommerce API v3 по заказам, товарам и категориям.
Ниже расположены скрипты с примерами, которые помогут правильно использовать методы API на практике.


  • Script: Api: ORDER DETAILS

     Code: PHP
    ORDER DETAILS
      $url = "https://yourdomain.com/api/commerce/orders/ORDERID"; // Set the endpoint URL (replace with your actual API endpoint)
      $authKey = "your_authorization_token_here"; // Authorization token (use your real key)
      $ch = curl_init($url); // Initialize cURL session
      // Set cURL options
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Return response as string
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
      "Authorization: Bearer " . $authKey, // Set Authorization header
      "Content-Type: application/json" // Optional: declare expected response type
      ]);
      // Execute request
      $response = curl_exec($ch);
      // Check for cURL error
      if (curl_errno($ch)) {
      echo "Request error: " . curl_error($ch);
      } else {
      // Parse and print the JSON response
      $data = json_decode($response, true);
      print_r($data); // Output server response
      }
      // Close cURL session
      curl_close($ch);
      
  • Script: Api: UPDATE ORDER

     Code: PHP
    UPDATE ORDER
      $url = "https://yourdomain.com/api/commerce/orders/ORDERID";// Order API endpoint
      $authKey = "your_authorization_token_here"; // Authorization token
    // Data to update (use API keys, not raw DB field names)
      $updateData = [
      "first_name"  => "Alex",
      "last_name"   => "Las",
      "email"       => "alex@example.com",
      "phone"       => "+380671112233",
     // Full address in plain text (if needed)
      "address"   => "Full address not tied to structured eform fields",
     // Structured address fields (eform system)
      "buyer_address_eform1" => "Region / State",         
      "buyer_address_eform2" => "City",                   
      "buyer_address_eform3" => "Street",                 
      "buyer_address_eform4" => "House number",           
      "buyer_address_eform5" => "Apartment",              
      "buyer_address_eform6"             => "01001",       // Zip/Postal code/Department
     // Order details
      "total" => "999",                        // Total price
      "status" => "processing",                // Internal status or number
      "status_for_customer" => "completed",    // Customer-facing status or number
      ];
      $ch = curl_init($url); 
    // cURL options
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PATCH");
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($updateData, JSON_UNESCAPED_UNICODE));
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
      "Authorization: Bearer " . $authKey,
      "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
      echo "Request error: " . curl_error($ch);
      } else {
      $data = json_decode($response, true);
      print_r($data); 
      }
    curl_close($ch);
  • Script: Api: CREATE ORDER

     Code: PHP
    CREATE ORDER
      $url = "https://yourdomain.com/api/commerce/orders"; // Order API endpoint
      $authKey = "your_authorization_token_here"; // Authorization token (use your real key)
    // Order data + products
      $orderData = [
      // Buyer info
      "first_name"  => "Name",                // Buyer's first name
      "last_name"   => "Soname",              // Buyer's last name
      "email"       => "alex@example.com",    // Buyer's email (required)
      "phone"       => "+380671112233",       // Buyer's phone number
      "address"     => "Full address of not used address eform", // General address
      "buyer_address_eform1" => "State",      // State / Region
      "buyer_address_eform2" => "City",       // City
      "buyer_address_eform3" => "Street",     // Street
      "buyer_address_eform4" => "house number", // House number
      "buyer_address_eform5" => "flat",       // Apartment / Flat
      "postcode"    => "01001",               // Postcode / ZIP
     // Total order amount (optional)
      // If you set "total", it will be used as the final order total.
      // If you skip "total", the system will calculate the total automatically
      // based on the products in "line_items".
      //"total"       => "999",
     "status"      => "processing",          // Internal status
      "status_for_customer" => "processing",  // Status shown to the customer
     "currency"   => "USD",                  // Order currency / an optional currency parameter that is specified by default in the site settings
     // Products in the order
      "line_items" => [
        [
         "product_id" => 478734,         // Product ID (required)
         "quantity"   => 0,              // Quantity (required) / default - 1
         "price"      => 100,            // Custom price (optional, overrides site price)
        ],
        [
         "product_id" => 478268,
         "quantity"   => 10,
         "variation" => "51"             // Variation name or code
        ],
        [
         "product_id" => 478266,
         "quantity"   => 1,
         "variation_id" => 735302        // Variation ID (priority over "variation")
        ]
       ]
      ];
      
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($orderData, JSON_UNESCAPED_UNICODE));
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
      "Authorization: Bearer " . $authKey,
      "Content-Type: application/json"
      ]);
    
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
      echo "Request error: " . curl_error($ch);
      } else {
      $data = json_decode($response, true);
      print_r($data);
      }
    curl_close($ch);
    
  • Script: Api: UPDATE PRODUCT

     Code: PHP
    UPDATE PRODUCT
     $url = "https://yourdomain.com/api/commerce/products/PRODUCT_ID";// Product API update endpoint
      $authKey = "your_authorization_token_here"; // Authorization token (use your real key)
    // Product data
    $productData = [
      "id" => 479077, // Product ID is ignored here because it's specified in the URL
      "name" => "Basketballshoesconverseallstarbbprototypecx", // Internal name for database  (does not affect front-end display)
      "title" => "Basketball shoes Converse All Star BB Prototype CX", // Product title (required for new)
      "type" => 1298, // Product type for filtering and attributes
      "access" => true, // Product availability (true = active)
      "description" => "<p>Sneakers Converse All Star BB Prototype CX — Basketball shoes...</p>", // Full product description (HTML allowed)
      "short_description" => "", // Short description of product 
      "sku" => "AO2515C", // Product SKU code
      "sku_show" => 0, // Whether to show SKU publicly (0 = no)
      "price" => "3000", // Current price
      "currency" => "UAH", // Currency code
      "regular_price" => "5760", // Old (regular) price 
      "price_for" => "0", // Unit for pricing (see documentation for accepted values  https://hotlist.biz/en/user_guide.html#autohrefinside13_7)
      "stock_quantity" => 0, // Quantity in stock (0 - unlimited)
      "stock_status" => 0, // Stock status (0 = in stock, 1 = out of stock, others see docs)
      "weight" => 0, // Weight value
      "weight_units" => 0, // Weight units: 0 = grams, 1 = kilograms
      "dimensions" => [
        "length" => 0, // Length
        "width"  => 0, // Width
        "height" => 0, // Height
        "units"  => "0", // Dimension units: 0 = centimeters, 1 = meters
     ],
     "categories" => [
        ["id" => 30519, "name" => null], // Product category (by ID, name, or both)
      ],
      "tags" => "tag1, tag2", // Tags, comma separated, max 8 tags
     "images" => [
        "0" => "-uploadshopcat-s16572/479077/479077_1.webp", // Local image path (won`t be uploaded)
        "1" => "https://hotlist.biz/upload/shop_catalog/s16572/479077/479077_2.webp", // Remote image URL (will be downloaded and attached)
      ],
     "images_replace" => false, // By default: do NOT replace images with the same index. If true, replace existing images by index.
     "images_skip_index" => false, // If true, find next free index if the given index is occupied and save image there.
     "images_replace_new_index" => false, // If true, even if replace and skip are false, save under new free index if original index is occupied.
     "variations_only_update" => false, // If true, new variations will be added without deleting old ones; otherwise all old variations are removed before adding new
     "variations" => [
      [
        "priority" => 0, // Display priority of the variation
        "id" => 736413, // Variation ID for updating existing variation; if not provided, search by SKU or title
        "sku" => "SKU1234", // Variation SKU (recommended)
        "title" => "42", // Variation name (required)
        "status" => "true", // access ( true / false / forbidden)
        "description" => "",
        "stock_status" => 0, // Stock status, same logic as main product
        "show_stock" => 0, // Whether to show stock count
        "instock" => 10, // Quantity in stock for this variation
        "image_num" => 0, // Image index linked to this variation
        "price" => "+100", // Price adjustment: absolute, or relative (+/-)
        "price_old" => "120", // Old price
        "price_cost" => "80", // Cost price
        "bulk_prices" => [ // Bulk pricing rules
          [
          "moq" => 10, 
           "price" => 5000
          ], // Price if order >= 10 units
          [
          "moq" => 15, 
          "price" => 4500
          ], // Price if order >= 15 units
      ],
      "dimensions" => [ // Variation dimensions, same units as product
        "length" => 0, // Length
        "width" => 0,  // Width
        "height" => 0, // Height
        "units" => 0,  // Dimension units: 0 = centimeters, 1 = meters
      ],
      ],
      [
        "priority" => 0,
        "title" => "43",
        "description" => "",
        "stock_status" => 0,
        "show_stock" => 1,
        "instock" => 1,
        "image_num" => 2,
        "price" => "+100",
        "price_old" => "120",
        "price_cost" => "80",
        "bulk_prices" => [
      ["moq" => 10, "price" => 5000],
      ["moq" => 15, "price" => 4500],
      ],
      "dimensions" => [
        "length" => 0,
        "width" => 0,
        "height" => 0,
        "units" => 0,
      ],
    
      ],
      ],
     "products_synonyms" => "", // Comma-separated list of grouped or similar product IDs or SKUs
     "priority" => 12, // Sorting priority (higher number = higher position, max 99)
     "producer" => ["id" => 4713, "name" => null], // Producer category by ID and/or name
     "producer_show" => 0, // Show producer on product page
     "producer_country" => "", // Producer country (text)
     "collection" => ["id" => null, "name" => null], // Collection category (ID and/or name)
     "collection_show" => 0, // Show collection flag
     "supplier" => ["id" => null, "name" => null], // Supplier info
     "bulk_prices" => [ // Bulk prices for main product
        ["moq" => 10, "price" => 5000],
        ["moq" => 15, "price" => 4500],
      ],
     "price_cost" => "", // Cost price for the main product
     "settings_comments" => "e_shop_page_hoteng_com|e_shop_page_hoteng_rating_com|e_shop_page_hoteng_show_rating_com|e_shop_page_hoteng_com_captcha|e_shop_page_hoteng_vis_com|e_shop_page_hoteng_num30",
     "password" => "", // Password protection (if any)
     "show_tree" => 0, // Category tree display setting
     "show_stock" => 0, // Show stock on product page
     "moq" => 0, // Minimum order quantity
     "shipping" => 0, // Shipping enabled flag
     "shipping_settings" => 0, // Shipping configuration
     "shipping_price" => 0, // Shipping cost
     "shipping_note" => "", // Notes about shipping
     "shipping_days" => 0, // Delivery time in days
     "shipping_sum" => 0, // Combine shipping for same products flag
     "show_period" => 0, // Product display period
     "bought_with" => "", // Comma-separated list of products often bought together
     "bought_with_email" => "", // Email to send bought-together product lists
     "new" => 1, // Is product new (1 = yes, 0 = no)
     "reduced_price" => 0, // Price reduced flag
     "discount" => "-20%", // Discount text (informational)
     "featured" => 1, // Featured product flag
     "promotion" => 1, // Has promotion flag
     "promotion_text" => "", // Promotion text
     "promotion_expires" => 1751113909, // Promotion end timestamp
     "promotion_expires_job" => 0, // Job to execute after promotion ends
     "variations_title" => "", // Title above variation selectors
     "variations_type" => 0, // Variation type (Google Merchant Size Type): 0=default from category settings, 1=color, 2=pattern, 3=material, 4=age_group, 5=gender, 6=size
     "variations_require" => 0, // Require variation selection before purchase
     "variations_cartexplode" => 0, // Variation display method settings
     "yml" => 0, // Export to YML/XML flag
     "noimport" => "0", // Disable import via admin panel flag
     "custom_label_4" => "", // Custom label for Google Merchant
     "description_tab_1" => "", // Description tab 1 content
     "description_tab_2" => "", // Description tab 2 content
     "description_tab_3" => "", // Description tab 3 content
     "description_tab_4" => "", // Description tab 4 content
     "description_tab_5" => "", // Description tab 5 content
     "video" => "", // Video URL
     "video_duration" => "", // Video duration in HH:MM:SS format
     "delete" => "delete", // delete product ( true or delete )
     // Product attributes for filtering and characteristics
     "attributes" => [
       [
      // "id"      => 1298,  // Attribute name You can use or NAME or ID
        "name" => "Product type", // Attribute name
        "options" => ["Sneakers"] // Attribute values (multiple allowed)
       ],
       [
        "name" => "Producer", //  Attribute name
        "options" => ["Converse"] //Attribute values (multiple allowed)
       ],
       [
        "name" => "Size", //Attribute name
        "options" => ["37,5", "40"] //Attribute values (multiple allowed)
         // "value_ints"      => [10096, 10101], //You can use or NAME or ID
         // "value_parent_id" => 1763 You can use or NAME or ID
       ],
      ]
     ];
    
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "UPDATE"); // Use UPDATE method for update operation (UPDATE / PUT / PATCH)
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($productData, JSON_UNESCAPED_UNICODE));
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
      "Authorization: Bearer " . $authKey,
      "Content-Type: application/json"
      ]);
    
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
      echo "Request error: " . curl_error($ch);
      } else {
      $data = json_decode($response, true);
      print_r($data);
      }
    curl_close($ch);
    
  • Script: Api: UPDATE MULTIPLE PRODUCT

     Code: PHP
    UPDATE MULTIPLE PRODUCT (up to 5000 same time)
    $url = "https://yourdomain.com/api/commerce/products"; // Product API update endpoint
    $authKey = "your_authorization_token_here"; // Authorization token (use your real key)
    // Product data
      $productsData = [
      "products" => [
       [
        "id" => 479077,
        "title" => "New Product Title 1"
        ...
       ],
       [
        "sku" => "SKU123456",
        "title" => "New Product Title 2"
        ...
       ],
       [
        "id" => 479078,
        "title" => "New Product Title 3"
        ...
       ]
      ]
     ];
     
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "UPDATE"); // UPDATE / PUT / PATCH
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($productsData, JSON_UNESCAPED_UNICODE));
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer " . $authKey,
    "Content-Type: application/json"
    ]);
    $response = curl_exec($ch);
    if (curl_errno($ch)) {
      echo "Request error: " . curl_error($ch);
    } else {
      $data = json_decode($response, true);
      print_r($data);
    }
    curl_close($ch);
  • Script: Api: UPDATE PRODUCT CATEGORIES

     Code: PHP
    UPDATE MULTIPLE CATEGORIES (up to 3000 same time)
    $url = "https://yourdomain.com/api/commerce/products/categories"; // Categories API update endpoint
    $authKey = "your_authorization_token_here"; // Authorization token (use your real key)
    // Categories data
     $categoriesData = [
      "categories" => [
        [
          "category_id" => 30518, // Category ID
          "category_name" => "sneakers", // System category name (slug) REQUIRED
          "category_title" => "Sneakers", // Category title
          "category_parent_id" => 1, // Parent category ID
          "category_parent_name" => "ParentCategory", // Parent category Name
          "category_position" => 0, // Position in the list
          
          "category_visible" => 0, // Visibility (0 = hidden, 1 = visible)
          "category_lang" => "ru", // Category language
          
          "category_show_tree" => 0, // Show tree (0/1)
          "category_multilangid" => 0, // Multilanguage binding ID
    
          "category_image" => [
            "0" => "https://hotlist.biz/upload/catalog/16572/files/style/categories/30518.webp", // Image URL
          ],
          "images_replace" => 1, // Image replace if exists
          "category_image_settings" => 7, // Image display settings
          "category_button" => "", // Custom button (without href)
          "category_access" => 0, // Access level
          "category_title_seo_append" => "", // SEO: title suffix
          "category_description_seo_append" => "", // SEO: description suffix
          "category_meta_d" => "", // Meta description
          "category_meta_k" => "", // Meta keywords
          "category_title_inpage" => "Sneakers", // Title shown inside the category page
          "category_text" => "", // Category description text
          "category_text_position" => 0, // Description position
          "category_settings_comments" => "", // Comment settings
          
          
          "category_settings_rating" => 0, // Enable rating (0/1)
          "category_datestamp" => "2025-09-16T12:41:07+00:00", // Datetime of creation/update
         
          "category_googlegoods_catid" => 0, // Google Goods category ID
          "category_promua_catid" => 0, // Prom.ua category ID
          "category_rozetkaua_title" => "", // Rozetka.ua category title
          "category_merchant_product_category" => "", // Merchant product category
          "category_gm_product_type" => 0, // Google Merchant product type
          "category_gm_sizetype" => 0, // Google Merchant size type
          
          "category_priceappend_rozetka" => "", // Extra price settings for Rozetka
          "category_priceappend_promua" => "", // Extra price settings for Prom.ua
          "category_settings_childproductshow" => 0, // Show products from subcategories (0/1)
          "category_settings_style" => 0, // Style settings
          "category_settings_sibling" => 0, // Show sibling categories (0/1)
          "update_exists" => 1, // Update exists category (0/1)
          "delete" => 0, // For delete category (0/1)
        ]
      ]
    ];
    
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "UPDATE"); // UPDATE / PUT / PATCH
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($_
    
  • Script: Api: UPDATE PRODUCT PRODUCERS

     Code: PHP
    UPDATE MULTIPLE PRODUCERS (up to 3000 same time)
    $url = "https://yourdomain.com/api/commerce/products/producers"; // Producers API update endpoint
    $authKey = "your_authorization_token_here"; // Authorization token (use your real key)
    // Categories data
     $producersData = [
      "producers" => [
        [
          "producer_id" => 30518, // Category ID
          "producer_name" => "sneakers", // System category name (slug) REQUIRED
          "producer_title" => "Sneakers", // Category title
          "producer_parent_id" => 1, // Parent category ID
          "producer_parent_name" => "ParentCategory", // Parent category Name
          "producer_position" => 0, // Position in the list
          
          "producer_visible" => 0, // Visibility (0 = hidden, 1 = visible)
          "producer_lang" => "ru", // Category language
          
          "producer_show_tree" => 0, // Show tree (0/1)
          "producer_multilangid" => 0, // Multilanguage binding ID
    
          "producer_image" => [
            "0" => "https://hotlist.biz/upload/catalog/16572/files/style/categories/30518.webp", // Image URL
          ],
          "images_replace" => 1, // Image replace if exists
          "producer_image_settings" => 7, // Image display settings
          "producer_button" => "", // Custom button (without href)
          "producer_access" => 0, // Access level
    
          "producer_meta_d" => "", // Meta description
          "producer_meta_k" => "", // Meta keywords
          "producer_title_inpage" => "Sneakers", // Title shown inside the category page
          "producer_text" => "", // Category description text
          "producer_text_position" => 0, // Description position
          "producer_settings_comments" => "", // Comment settings
          
          
          "producer_settings_rating" => 0, // Enable rating (0/1)
          "producer_datestamp" => "2025-09-16T12:41:07+00:00", // Datetime of creation/update
         
          "update_exists" => 1, // Update exists category (0/1)
          "delete" => 0, // For delete category (0/1)
        ]
      ]
    ];
    
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "UPDATE"); // UPDATE / PUT / PATCH
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($_
    
  • Script: Api: UPDATE PRODUCT COLLECTIONS

     Code: PHP
    UPDATE MULTIPLE COLLECYIONS (up to 3000 same time)
    $url = "https://yourdomain.com/api/commerce/products/collections"; // Collections API update endpoint
    $authKey = "your_authorization_token_here"; // Authorization token (use your real key)
    // Categories data
     $collectionsData = [
      "collections" => [
        [
          "collection_id" => 30518, // Category ID
          "collection_name" => "sneakers", // System category name (slug) REQUIRED
          "collection_title" => "Sneakers", // Category title
          "collection_parent_id" => 1, // Parent category ID
          "collection_parent_name" => "ParentCategory", // Parent category Name
          "collection_position" => 0, // Position in the list
          
          "collection_visible" => 0, // Visibility (0 = hidden, 1 = visible)
          "collection_lang" => "ru", // Category language
          
          "collection_show_tree" => 0, // Show tree (0/1)
          "collection_multilangid" => 0, // Multilanguage binding ID
    
          "collection_image" => [
            "0" => "https://hotlist.biz/upload/catalog/16572/files/style/categories/30518.webp", // Image URL
          ],
          "images_replace" => 1, // Image replace if exists
          "collection_image_settings" => 7, // Image display settings
          "collection_button" => "", // Custom button (without href)
          "collection_access" => 0, // Access level
    
          "collection_meta_d" => "", // Meta description
          "collection_meta_k" => "", // Meta keywords
          "collection_title_inpage" => "Sneakers", // Title shown inside the category page
          "collection_text" => "", // Category description text
          "collection_text_position" => 0, // Description position
          "collection_settings_comments" => "", // Comment settings
          
          
          "collection_settings_rating" => 0, // Enable rating (0/1)
          "collection_datestamp" => "2025-09-16T12:41:07+00:00", // Datetime of creation/update
         
          "update_exists" => 1, // Update exists category (0/1)
          "delete" => 0, // For delete category (0/1)
        ]
      ]
    ];
    
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "UPDATE"); // UPDATE / PUT / PATCH
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($_
    
Назад