Yandex.Market Product Feed Setup in 1C-Bitrix

We often encounter this scenario: a client launches product ads on Yandex.Market, and the system reports that 30% of items are not participating. Missing required attributes. On one project, out of 12,000 SKUs, only 7,000 were included in ads. The reason — absence of `<param>` tags with characterist

Our competencies:

Frequently Asked Questions

We often encounter this scenario: a client launches product ads on Yandex.Market, and the system reports that 30% of items are not participating. Missing required attributes. On one project, out of 12,000 SKUs, only 7,000 were included in ads. The reason — absence of <param> tags with characteristics: color, memory, size. Without them, Yandex cannot properly match a product to a query, and campaign effectiveness drops by 2–3 times. A well-configured feed solves this problem and saves up to 30% of the advertising budget through better targeting. It reduces cost-per-click by 15–20% due to precise query matching.

What problems does a proper YML feed solve?

A correctly formed feed is not just a catalog export. It is the ability to control how Yandex sees your products. Without <param> tags, products do not appear in refined queries ("buy smartphone 128 GB black"). With them, conversion increases by 15–25%. Additionally, the absence of a product advertising profile means Yandex cannot correctly display ads by model, brand, or category.

Why standard export is not enough

The built-in profile (Catalog → Export → Add profile → Yandex.Market (YML)) generates a basic feed but does not output information block properties as <param>. For product ads, this is critical: without parameters, Yandex cannot show ads for refined queries. Also, the standard export does not allow flexible management of trade offer structure, and for large catalogs (over 50,000 items), generation time reaches 2 hours.

Let's compare the approaches:

Feature Built-in export Custom generator
<param> support Requires modification Full control
Trade offer handling Basic Flexible logic
Performance (100K+ items) Slow – up to 2 hours XMLWriter with streaming – 15 minutes
Structure customization Limited Any schema

A custom generator processes a catalog of 50,000 items 8 times faster – 15 minutes instead of 2 hours. This is especially important for daily feed updates.

How to speed up feed generation?

For large catalogs, use streaming XMLWriter without buffering the entire DOM. For example:

// /local/cron/yandex_market_feed.php $categories = getIblockSections($IBLOCK_ID); $tmpFile = tempnam(sys_get_temp_dir(), 'yml_'); $xml = new XMLWriter(); $xml->openUri($tmpFile); $xml->startDocument('1.0', 'UTF-8'); // ... генерация структуры yml_catalog 

Official documentation: YML format Yandex.Market emphasizes: the feed must contain all characteristics that influence buyer choice. We guarantee this.

How to add missing parameters to the feed?

The solution is to hook the OnGetYmlOfferXml event and add <param> elements:

// /local/php_interface/init.php \Bitrix\Main\EventManager::getInstance()->addEventHandler( 'catalog', 'OnGetYmlOfferXml', function (\Bitrix\Main\Event $event) { $offer = $event->getParameter('OFFER'); $xml = $event->getParameter('XML'); $paramProps = ['COLOR' => 'Color', 'MEMORY' => 'Memory', 'SCREEN_SIZE' => 'Screen size']; foreach ($paramProps as $propCode => $paramName) { if (!empty($offer['PROPERTIES'][$propCode]['VALUE'])) { $xml .= sprintf( '<param name="%s">%s</param>', htmlspecialchars($paramName), htmlspecialchars($offer['PROPERTIES'][$propCode]['VALUE']) ); } } return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::SUCCESS, ['XML' => $xml] ); } ); 

Steps:

  1. Identify the information block properties to be exported as parameters (color, memory, size).
  2. Write a handler for OnGetYmlOfferXml that adds <param> for each property.
  3. Validate the feed in your Yandex.Market account.

Typical errors and how to fix them

A common issue is an incorrect date format in yml_catalog. The date must be in YYYY-MM-DD HH:MM format, otherwise the feed is rejected. Duplicate offer IDs occur when products and trade offers have the same ID. Solution: generate unique IDs, e.g., 'Product123-Offer1'. Invalid XML characters (like ampersand) must be replaced with &amp;. And finally, all products must have a price (price tag) — if missing, the item is not exported.

What is included in feed setup

Our engineers (5+ years of Bitrix experience, over 50 configured feeds) perform the full cycle:

  • Analysis of catalog structure and information block properties. We identify which characteristics matter for Yandex.Market and check their completeness.
  • Feed scheme design: we map standard fields and add custom parameters via events or a custom generator.
  • Implementation: we write handlers or a separate generation script, using XMLWriter for performance.
  • Testing: we upload the feed to Yandex.Market account, check for errors and validity.
  • Performance optimization: for catalogs over 10,000 items, we configure caching and streaming writing.
  • Integration with cron scheduler for daily feed updates.

Timeline estimates for setup

Standard YML profile with property mapping and <param> addition via hooks – 4–8 hours. Custom generator for complex catalog with trade offers and parameters – 1–2 business days. For an accurate estimate, a consultation on your project is required.

Get a free audit of your current feed — contact us. We will check the structure, performance, and advise on how to improve the export. Order feed setup and increase advertising efficiency.