1C-Bitrix Integration with Yandex.Market
A catalog on a website is one data structure. Yandex.Market expects another: its own categories, mandatory attributes for each category, feeds in YML format with specific tags. Without proper configuration, products won't pass moderation, and those that do will show incorrect prices or empty characteristics. 1C-Bitrix integration with Yandex.Market is mapping two different data models and maintaining synchronization.
Integration Architecture
Yandex.Market works with a store through two channels:
- YML-feed (Yandex Market Language) — XML file with products that Market periodically retrieves by URL. The main channel for the catalog.
-
Partner API (
https://api.partner.market.yandex.ru/) — REST API for managing orders, prices, inventory, statuses.
In 1C-Bitrix, feed generation is handled by the catalog.export module with the "Yandex.Market (YML)" export profile. API work is handled either by a module from Marketplace (RetailCRM, Kooplex, "MyoDelo"), or by a custom handler.
YML Feed Generation: Deep Configuration
Standard export profile is created in Shop → Settings → Export catalog → Yandex.Market. Basic parameters:
- Trade type: DBS (Delivery by Seller) — seller delivery, FBS (Fulfillment by Seller) — shipment from own warehouse through Market logistics, FBY (Fulfillment by Yandex) — product stored in Yandex warehouse.
- Catalog infoblock: binding to specific product infoblock.
- Export properties: mapping infoblock fields to YML tags.
Mandatory tags for each <offer>:
| YML Tag | Field in Bitrix | Note |
|---|---|---|
<name> |
NAME of element |
Up to 150 characters |
<price> |
Catalog price | In rubles, without discounts |
<currencyId> |
Currency | RUR / USD |
<categoryId> |
Infoblock section | Maps to Market categories |
<picture> |
DETAIL_PICTURE or property |
Minimum 300×300 px, up to 10 photos |
<vendor> |
"Brand" property | Mandatory for most categories |
<barcode> |
"Barcode" property | EAN-13. Without it — placement restrictions |
<description> |
DETAIL_TEXT |
Up to 3000 characters, limited HTML tags |
Critical moment — <param>. Yandex.Market requires product characteristics as <param name="Size">42</param>. In Bitrix, characteristics are infoblock properties. Standard export profile exports only properties explicitly marked in export settings. If property is multiple (multiple values), each value generates separate <param>.
SKU (trade offer) problem. If product has trade offers (size, color), each offer is separate <offer> in feed. Connection is set through <group_id> (combines offers of one product). Standard Bitrix export doesn't always form group_id correctly — may require handler modification in /bitrix/php_interface/include/catalog_export/.
Category Mapping
Yandex.Market uses its own category tree. "Electronics → Smartphones" section in your catalog is specific categoryId in Market's tree. Mapping is set two ways:
- Through integration module — Market's category tree is loaded, and for each infoblock section appropriate match is selected.
-
Through
market_categoryin YML — tag<market_category>Electronics/Smartphones</market_category>inside<offer>. Yandex tries automatic match.
First way is more reliable. Incorrect mapping = product goes to wrong category with different mandatory attributes and fails moderation.
Order Management via Partner API
When buyer orders product on Yandex.Market, order needs to be accepted and processed. Scheme:
- Market sends POST to your endpoint (callback URL) with order data.
- Bitrix handler creates order in
salemodule viaBitrix\Sale\Order::create(). - When order status changes in Bitrix — PUT request sent to Partner API to update status on Market.
Market statuses: PROCESSING → DELIVERY → DELIVERED / CANCELLED. Mapping to Bitrix statuses (N, P, F, C) is configured in integration module.
Inventory updates. Market expects current inventory. Two approaches:
-
Through feed —
<count>tag in<offer>. Feed updates via cron every 30–60 minutes. -
Through API — method
PUT /campaigns/{campaignId}/offers/stocks. Updates inventory in real time. Used for fast-moving products.
Common Integration Errors
Feed doesn't pass validation. Yandex checks XSD schema. Unclosed tags, special characters (&, <, >) in description without CDATA, Cyrillic in image URLs — all cause rejection.
Prices don't match. If site has discounts while feed exports pre-discount price — Market may block store for price mismatch. Solution: in export profile select price type matching site price, or form <oldprice> for strikethrough price.
Product duplicates. When catalog is reindexed, infoblock element IDs change. Market treats new IDs as new offers, old as deleted. Use <shop-sku> based on article (property ARTICLE), not element ID.
Integration Timeline by Scale
| Catalog Scale | Work Volume | Timeline |
|---|---|---|
| Up to 500 products, no SKU | Feed setup + basic mapping | 3–5 days |
| 500–5000, with trade offers | Feed + export modification + inventory API | 1–1.5 weeks |
| 5000+, FBS/FBY, multi-warehouse | Full integration: feed + order API + inventory + statuses | 1.5–2 weeks |

