1C-Bitrix Integration with Yandex.Market

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Our competencies:
Development stages

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:

  1. YML-feed (Yandex Market Language) — XML file with products that Market periodically retrieves by URL. The main channel for the catalog.
  2. 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:

  1. Through integration module — Market's category tree is loaded, and for each infoblock section appropriate match is selected.
  2. Through market_category in 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:

  1. Market sends POST to your endpoint (callback URL) with order data.
  2. Bitrix handler creates order in sale module via Bitrix\Sale\Order::create().
  3. When order status changes in Bitrix — PUT request sent to Partner API to update status on Market.

Market statuses: PROCESSINGDELIVERYDELIVERED / 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