+7 938 150-78-77

Товарная кампания в Директе: как собрать YML-фид и за чем следить

Фид — не выгрузка «куда-нибудь», а источник объявлений. Обязательные элементы YML, причины отклонения офферов, фильтры товаров и связка с электронной коммерцией в Метрике.

М Матвей Калашников Основатель студии 09 ноября 2026 13 минут чтения
Товарная кампания в Директе: как собрать YML-фид и за чем следить

Для магазина товарная кампания — обычно самый дешёвый источник заявок: объявление собирается из карточки товара, показывается человеку, который ищет именно этот товар, и ведёт сразу на страницу покупки. Но всё держится на фиде. Если фид собран небрежно, кампания либо не запускается, либо тратит бюджет на то, чего нет в наличии. Разберём, как он устроен и что в нём проверять.

Что такое YML и чем он отличается от фида маркетплейса

YML — это XML-формат описания товарного каталога, который Яндекс использует и для Маркета, и для товарных объявлений в Директе. Структура простая: корневой элемент с датой генерации, внутри магазин, в нём валюты, дерево категорий и список предложений.

Принципиальное отличие от фида для Ozon и Wildberries: там вы отдаёте данные, чтобы площадка создала у себя карточку и продавала сама. Здесь ссылка в предложении ведёт на вашу страницу, продажа происходит у вас, а площадка только показывает объявление. Поэтому требования к данным другие: критичны ссылка, цена и наличие, а не соответствие атрибутов категорийному дереву площадки.

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

Обязательный минимум в предложении

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

  • Ссылка на страницу товара — абсолютная, рабочая, без редиректа и без закрытия в robots
  • Цена числом, без пробелов и символа рубля, больше нуля
  • Код валюты из справочника
  • Идентификатор категории, существующий в дереве категорий фида
  • Хотя бы одна картинка абсолютной ссылкой
  • Название — либо одним полем, либо парой «производитель и модель»
  • Описание — его отсутствие не фатально, но объявление получается хуже

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

Про идентификатор предложения: он должен быть уникальным и, что важнее, постоянным. Если при каждой генерации фида идентификаторы пересобираются заново — например, берутся из автоинкремента временной таблицы, — вся накопленная по товарам статистика обнуляется каждый раз. Берите идентификатор из карточки товара, он уже есть и уже стабилен.

Дерево категорий и почему оно рвётся

Категории в фиде задаются списком, где у вложенной категории указан родитель. Требование простое: родитель должен существовать в этом же списке. Нарушается оно регулярно — когда выгружаются только категории, в которых есть товары, а промежуточные уровни пропускаются.

Результат: часть дерева оказывается оторванной, и фильтры по категориям в кампании работают непредсказуемо. Правило при генерации — выгружать все категории по цепочке до корня, даже пустые, и только потом фильтровать предложения.

Технические требования к самому файлу

  • Фид доступен по постоянной ссылке без авторизации и отдаёт код 200
  • Тип содержимого — XML, кодировка UTF-8; сжатие допустимо и для больших каталогов полезно
  • Амперсанды и угловые скобки в названиях и ссылках экранированы или обёрнуты в CDATA
  • Файл генерируется по расписанию и кладётся статикой, а не собирается на каждый запрос
  • Дата генерации в корневом элементе обновляется — по ней видно, что фид живой

Про статику стоит пояснить. Фид на десять тысяч позиций, который собирается в момент запроса, — это тяжёлый запрос к базе, и приходить за ним будут не только роботы Яндекса. Правильно: генерация по расписанию в файл, отдача файла веб-сервером напрямую. Побочная польза — фид перестаёт зависеть от того, что в этот момент происходит с сайтом.

Экранирование — отдельная классика. Ссылка с параметрами, в которой амперсанд вставлен как есть, делает XML невалидным целиком, а не одно предложение. Валидатор в кабинете это покажет, но лучше проверять на своей стороне после каждой генерации.

Цена и наличие: где кампания начинает жечь бюджет

Фид загружается с заданной периодичностью, не непрерывно. Между загрузками данные в кампании устаревают, и это нормально до определённого предела. Ненормально — когда фид генерируется из одного источника, а витрина показывает другой.

Типичный случай: цены на сайте считаются с учётом скидок и правил, а фид собирается напрямую из базовой цены. Человек видит в объявлении одну цифру, переходит и видит другую. Для площадки это расхождение цены, для покупателя — обман, и работает это против вас в обе стороны.

Второе — наличие. Признак наличия в предложении обязан отражать реальный остаток, а товары, которых нет, лучше не просто помечать, а исключать из фида фильтром. Иначе объявления ведут на карточки «нет в наличии» и бюджет уходит в клики без возможности купить. Если остатки приходят из учёта, частота генерации фида должна быть согласована с частотой обмена с учётной системой — иначе фид будет свежим относительно базы сайта и устаревшим относительно склада.

Фильтры: что вообще не нужно рекламировать

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

  • Исключить позиции дешевле порога, на которых реклама не отбивается в принципе
  • Исключить товары без картинки или без описания — объявление из них выходит неконкурентным
  • Исключить категории с нулевой маржой или с тем, что вы не готовы продавать в розницу
  • Исключить отсутствующие в наличии, если они всё же попадают в фид
  • Разделить дорогие и дешёвые группы по разным кампаниям — у них разная допустимая цена клика

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

Связка с Метрикой: без неё считать нечего

Товарная кампания имеет смысл при автостратегиях, а автостратегии работают на данных о конверсиях. Значит, в Метрике должна быть настроена электронная коммерция, а не только цель «отправлена форма».

Минимальный набор событий, которые передаются в контейнер данных: просмотр карточки, добавление в корзину, оформление покупки с составом заказа и суммой. Критичная деталь, которую упускают почти всегда: идентификатор товара в событии покупки должен совпадать с идентификатором предложения в фиде. Если в фиде один код, а в электронной коммерции другой, отчёты по товарам не сойдутся и стратегия по доле рекламных расходов будет считать мимо.

Проверяется это за пять минут: открыть карточку, посмотреть, что уходит в контейнер данных, и сравнить с кодом в фиде. Настройка электронной коммерции — отдельная работа в рамках веб-аналитики, и делать её нужно до запуска кампании, а не после. О том, что ещё должно быть настроено заранее, мы писали в разборе целей в Метрике.

Разметка ссылок

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

Что проверить обязательно: ссылка с параметрами открывается и отдаёт 200, параметры не ломают работу фильтров каталога, а канонический адрес страницы не меняется. Если параметры попадают в индекс, это уже вопрос к настройке SEO магазина — для рекламы они безвредны, для выдачи нет.

Что смотреть раз в неделю

  • Статус последней загрузки фида и дата — фид мог перестать генерироваться молча
  • Сколько предложений принято против того, сколько в файле — разрыв показывает отклонённые
  • Список ошибок валидации: обычно это несколько повторяющихся причин, а не разные
  • Товары, собравшие клики без заказов — кандидаты в исключения
  • Товары с заказами — кандидаты на отдельную кампанию с большей ставкой
  • Расхождение цены в объявлении и на странице — выборочно, руками

Про молчаливую остановку генерации стоит сказать подробнее, потому что это самая обидная поломка. Фид лежит по тому же адресу, отдаётся с кодом 200, кампания работает — но файл не обновлялся две недели. Цены старые, наличие старое, бюджет расходуется. Защита — мониторинг даты генерации в самом файле и оповещение, если она старше суток.

Товарная кампания и поисковая: не конкуренты

Распространённое опасение — что товарные объявления начнут перебивать обычные поисковые по тем же запросам. На практике они закрывают разные типы спроса: товарные хорошо отрабатывают конкретные запросы с моделью и артикулом, поисковые — категорийные и проблемные формулировки.

Разводятся они не ставками, а семантикой: в поисковой кампании остаются категорийные запросы, а конкретика отдаётся товарной. Пересечение видно в отчёте по поисковым фразам, и если оно есть — убирается минус-словами в поисковой, а не отключением товарной.

Порядок запуска, если начинаете с нуля

  • Привести в порядок карточки: картинки, описания, цены, наличие
  • Настроить электронную коммерцию в Метрике и проверить совпадение идентификаторов
  • Сгенерировать фид по расписанию, проверить валидность и экранирование
  • Загрузить фид в кабинет, разобрать ошибки до запуска кампании
  • Задать фильтры товаров: цена, наличие, категории
  • Запустить на ограниченном бюджете и две недели ничего не менять
  • После набора данных — разделить кампании по цене и перейти на стратегию по конверсиям

Два последних пункта в этом порядке именно так, а не наоборот. Автостратегии требуют статистики, и переключать их в первую неделю — значит мешать обучению. Подробнее о том, что делать и чего не делать в первый месяц, есть отдельный разбор.

Мы собираем фиды из каталога на 1С-Битрикс, WordPress и своих решениях, настраиваем рекламу для интернет-магазина вместе с электронной коммерцией в Метрике и ведём кампании дальше. Если каталог к этому ещё не готов — начинаем с данных: без цен, картинок и наличия товарная кампания не взлетит ни при каком бюджете. Общие вопросы по запуску — на странице Яндекс.Директа.

М Матвей Калашников · основатель Sapphireweb 6 лет делает сайты и интеграции на 1С-Битрикс и WordPress. Пишет о том, что чинит своими руками. Статья опубликована 09 ноября 2026. Пересматриваем материалы раз в квартал и правим то, что устарело.
Вопросы

Отвечаем
заранее

Не нашли свой вопрос? Напишите в Telegram — ответим без долгих согласований.

YML — формат Яндекса для товарных объявлений, а не выгрузка для площадки. У него свои обязательные элементы и своё дерево категорий.
Нет обязательных полей, рвётся дерево категорий, цена и наличие не совпадают с сайтом, картинки не проходят требования. Причина по каждому офферу видна в кабинете.
Связка с Метрикой и электронной коммерцией и разметка ссылок. Без них товарная кампания работает, но посчитать её нельзя.

Расскажите
о задаче

Пришлите ссылку на сайт и опишите задачу. Уточним исходные данные, предложим состав работ и подготовим оценку стоимости и сроков. Пришлите сайт и задачу — подготовим оценку работ, стоимости и сроков.

Вопрос по статье: Товарная кампания в Директе: как собрать YML-фид и за чем следить