СтатьяРеклама

Почему недоступный товар остаётся в рекламе

Как найти расхождение наличия между фидом, карточкой, структурированными данными и оформлением заказа.

Товарная карточка проходит по конвейеру через фид, страницу, разметку и корзину; на одном этапе отмечено расхождение наличия

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

Сначала разберите сам файл в анализаторе товарного фида. Затем сравните один и тот же офер по ID и варианту во всех точках, где покупатель или робот узнаёт о наличии. Так вы отличите устаревший фид от ошибки карточки, разметки или корзины.

Где появляется расхождение

В YML атрибут available="true" означает, что товар можно купить, а false — что нельзя. Если атрибут отсутствует, Яндекс Директ по умолчанию считает присутствующий в фиде товар доступным. Яндекс также требует, чтобы состояние совпадало со страницей перехода и страницами оформления покупки.

У Google поле availability обязательно для товара. Основные значения — in_stock, out_of_stock, preorder и backorder; для двух последних нужна дата доступности, видимая на странице. Google проверяет согласованность источника данных, карточки, структурированной разметки и оформления заказа. Если в фиде стоит in_stock, а купить товар нельзя, товар может быть отклонён.

Проверяйте не текст «В наличии», а возможность оформить конкретный вариант. У футболки размера M и размера L могут быть разные остатки. Ссылка из офера должна открыть тот вариант, которому принадлежит ID, а кнопка покупки — добавить его в корзину.

Цепочка проверки наличия товара: фид, карточка, структурированные данные и оформление заказа

Один нормализованный статус нужно получить из четырёх наблюдений. Время проверки хранится рядом с каждым источником.

Как построить отчёт

Для каждой строки сохраните:

ПолеЧто записатьЗачем
offer_idID офера или вариантаСвязать фид, страницу и заказ
feed_statusНормализованное наличие в фидеУвидеть обещание рекламной системе
page_statusТекст и состояние кнопкиПроверить обещание покупателю
schema_statusOffer.availability, если естьНайти противоречие в HTML
checkout_statusМожно ли добавить и продолжить заказПодтвердить реальную покупку
времяМомент получения каждого состоянияНе сравнивать разные версии
итогPASS, FAIL или REVIEWНазначить действие

Приведите значения к общей шкале: IN_STOCK, OUT_OF_STOCK, PREORDER, BACKORDER, UNKNOWN. Не превращайте UNKNOWN в OUT_OF_STOCK: отсутствие наблюдения не доказывает отсутствие товара.

Для YML явно обработайте пропущенный available. Поскольку Директ считает такой офер доступным, в отчёте его следует нормализовать как IN_STOCK_DEFAULT и вынести в отдельное предупреждение. Команда увидит не только текущий результат, но и риск: генератор фида полагается на значение по умолчанию.

Воспроизводимый пример

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

python classify_availability.py availability-sample.csv availability-report.csv --max-age-minutes 60

Результат:

ОферНаблюденияИтогДействие
CHAIR-101везде IN_STOCK, выгрузке 12 минутPASSничего
CHAIR-102фид IN_STOCK, карточка OUT_OF_STOCKFAIL_FEED_PAGEобновить источник фида
CHAIR-103карточка IN_STOCK, schema OUT_OF_STOCKFAIL_PAGE_SCHEMAисправить разметку
CHAIR-104фид и карточка IN_STOCK, корзина отказалаFAIL_CHECKOUTпроверить вариант и резерв
CHAIR-105везде OUT_OF_STOCKPASSсостояние согласовано
CHAIR-106везде IN_STOCK, выгрузке 185 минутREVIEW_STALEпроверить задержку обновления

Скрипт ставит PASS только при полном согласовании известных состояний. Он не обращается к магазину и не доказывает, что учебные значения истинны: CSV нужно заполнить результатами собственного обхода. Это намеренное ограничение — извлечение наличия из произвольной страницы зависит от HTML, JavaScript, региона и выбранного варианта.

В каком порядке исправлять

Сначала обработайте FAIL_CHECKOUT. Реклама и карточка обещают покупку, но заказ не проходит. Проверьте, тот ли вариант добавляется в корзину, не обнулился ли склад после загрузки страницы и не запрещена ли доставка в выбранный регион.

Затем исправьте прямые противоречия фида и карточки. Источником статуса должна быть одна бизнес-логика, даже если данные расходятся по нескольким каналам. Если CMS обновляет страницу сразу, а фид строится раз в сутки, уменьшите интервал или отправляйте изменения подходящим способом. После исправления загрузите свежий файл и проверьте статус товара в кабинете; мгновенное изменение на сайте не означает мгновенное обновление площадки.

Ошибки структурированной разметки исправляйте отдельно. Видимый текст может быть верным, а старый Offer.availability в JSON-LD продолжит сообщать роботу другое состояние. У варианта должны совпадать ID, цвет, размер и наличие.

REVIEW_STALE — сигнал процесса, а не доказанная ошибка товара. Сравните время изменения остатка, формирования файла, получения площадкой и самой проверки. Если разные системы записывают время в разных поясах, храните ISO 8601 с часовым поясом или UTC.

Как проверить исправление

Повторите цепочку на той версии фида, которая действительно отправлена в рекламную систему:

  1. Найдите офер по точному ID и варианту.
  2. Запишите статус и время формирования файла.
  3. Откройте конечную карточку без авторизации и выберите тот же вариант.
  4. Сверьте видимый статус, кнопку покупки и Offer.availability.
  5. Добавьте товар в корзину и дойдите до шага, где подтверждается возможность заказа и доставки.
  6. После загрузки исправленного файла проверьте диагностику площадки.

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

Что этот протокол не подтверждает

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

Автоматическая проверка кнопки также не заменяет бизнес-правила. Товар может быть физически на складе, но недоступен для онлайн-заказа, конкретного региона или способа доставки. В отчёте различайте «есть на складе» и «можно купить на условиях объявления».

Если нужно понять, почему число товаров не совпало между файлом и кабинетом, начните с материала «Как посчитать товары в YML-фиде и объяснить расхождение». После исправлений выполните приёмку товарного фида и сохраните отчёт с точной версией файла.

Источники

Материал подготовлен редакцией WiseLab с помощью AI. Источники и фактические утверждения проверены при подготовке.

Загружаем рейтинг…

Насколько полезен материал?

Выберите оценкуСлева — меньше пользы, справа — больше

Загружаем вашу оценку…

Что думаете?

Загружаем комментарии…

СЛЕДУЮЩИЙ ШАГ

Что ещё поможет в этой задаче