Микроразметка Schema.org для интернет-магазина: полная инструкция по внедрению
Микроразметка Schema.org для интернет-магазина: полная инструкция по внедрению

Два одинаковых товара, одинаковая цена, одинаковая позиция в выдаче. Но у одного сниппета – звёздочки рейтинга, цена, статус «В наличии», а у другого – голый title и серый текст. Кликают на первый. Всегда.

Разница между ними – структурированные данные (machine-readable описание контента страницы по стандарту Schema.org). И если Вы разработчик, который отвечает за e-commerce проект, эта разница – Ваша прямая зона ответственности.

Я Пётр Гришечкин, эксперт в области SEO. Последние 15 лет я проектирую системы кратного роста трафика для крупнейших сайтов. И последнее время пишу всякие околоSEO статьи – https://t.me/seo_and_sem. В этом руководстве – конкретные шаги, рабочий код и грабли, на которые наступают почти все.

Что такое Schema.org и почему это критично для e-commerce

Что такое Schema.org и почему это критично для e-commerce
Что такое Schema.org и почему это критично для e-commerce

Schema.org – это словарь структурированных данных, поддерживаемый Google, Яндекс, Bing и Apple. Технически это набор типов и свойств, которые описывают сущности на странице: товар, цену, отзыв, организацию, хлебные крошки.

Поисковик получает не «текст про кроссовки», а чёткую структуру: название, бренд, цена 5 990 ₽, рейтинг 4.7, в наличии. Результат – rich snippet (расширенный сниппет) в выдаче.

Что это даёт интернет-магазину на практике:

  • Рост CTR. По данным Google, rich results получают на 20–30% больше кликов, чем обычные сниппеты. По опыту – для карточек товаров с рейтингом и ценой разница бывает и выше.

  • Больше визуальной площади в SERP. Звёздочки, цена, наличие, хлебные крошки – всё это вытесняет конкурентов ниже.

  • Понимание контента поисковиком. Особенно критично для Яндекса, который активно использует разметку товаров для Турбо-страниц и товарных карточек.

  • Готовность к AI-выдаче. Google SGE (Search Generative Experience) опирается на структурированные данные при формировании ответов.

Откройте топ-10 по любому коммерческому запросу в Google или Яндексе. У большинства лидеров – микроразметка Product, Review, BreadcrumbList. Это не опция, это стандарт.

Основные типы Schema.org для интернет-магазина

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

Product – карточка товара

Центральный тип. Описывает конкретный товар: название, изображение, бренд, SKU, описание. Внутри Product вложен Offer (предложение с ценой и наличием).

Offer и AggregateOffer

Offer – одно конкретное предложение (цена, валюта, наличие). AggregateOffer – диапазон предложений для товара с вариациями (размеры, цвета) или для страницы каталога с несколькими товарами.

Review и AggregateRating

Review – отдельный отзыв с автором и оценкой. AggregateRating – сводный рейтинг (средняя оценка, количество отзывов). Именно AggregateRating отвечает за звёздочки в сниппете.

BreadcrumbList – хлебные крошки

Разметка навигационной цепочки. Google и Яндекс отображают её вместо URL в сниппете. Визуально чище, понятнее для пользователя.

Organization – информация о компании

Размещается на главной или на странице «О компании». Логотип, название, контакты, ссылки на соцсети. Формирует Knowledge Panel (карточку организации) в Google.

WebSite с SearchAction – поиск по сайту

Позволяет Google показать строку поиска по Вашему магазину прямо в SERP. Работает не для всех сайтов, но если включится – даёт заметное преимущество.

JSON-LD примеры для ключевых страниц

JSON-LD примеры для ключевых страниц
JSON-LD примеры для ключевых страниц

Формат JSON-LD (JavaScript Object Notation for Linked Data) – рекомендуемый Google способ добавления структурированных данных. Он не смешивается с HTML-разметкой, легко генерируется на бэкенде и фронтенде, не влияет на рендер.

Карточка товара: Product + Offer + AggregateRating

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Кроссовки Nike Air Max 90",
  "image": [
    "https://example.com/photos/nike-air-max-90-1.jpg",
    "https://example.com/photos/nike-air-max-90-2.jpg"
  ],
  "description": "Мужские кроссовки Nike Air Max 90 с амортизацией Air.",
  "sku": "NAM90-BLK-42",
  "brand": {
    "@type": "Brand",
    "name": "Nike"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/nike-air-max-90",
    "priceCurrency": "RUB",
    "price": "8990",
    "availability": "https://schema.org/InStock",
    "seller": {
      "@type": "Organization",
      "name": "МойМагазин"
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "132"
  }
}
</script>

Что здесь важно:

  • sku – уникальный идентификатор товара. Google использует его для сопоставления с Merchant Center.

  • priceCurrency – обязательно ISO 4217 код валюты (RUB, USD, EUR). Без него разметка невалидна.

  • availability – полный URL значения из Schema.org: InStock, OutOfStock, PreOrder. Не строка «в наличии», а именно URI.

  • image – массив. Google рекомендует минимум одно изображение с соотношением сторон 16:9, 4:3 или 1:1.

Страница каталога: ItemList + Product

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "item": {
        "@type": "Product",
        "name": "Nike Air Max 90",
        "url": "https://example.com/nike-air-max-90",
        "image": "https://example.com/photos/nike-air-max-90.jpg",
        "offers": {
          "@type": "AggregateOffer",
          "lowPrice": "7990",
          "highPrice": "9990",
          "priceCurrency": "RUB",
          "offerCount": "5"
        }
      }
    },
    {
      "@type": "ListItem",
      "position": 2,
      "item": {
        "@type": "Product",
        "name": "Adidas Ultraboost 22",
        "url": "https://example.com/adidas-ultraboost-22",
        "image": "https://example.com/photos/ultraboost-22.jpg",
        "offers": {
          "@type": "AggregateOffer",
          "lowPrice": "11990",
          "highPrice": "13990",
          "priceCurrency": "RUB",
          "offerCount": "3"
        }
      }
    }
  ]
}
</script>

AggregateOffer здесь описывает диапазон цен для товара с несколькими вариациями. offerCount – количество вариантов (размеров, цветов).

Главная страница: WebSite + SearchAction

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "МойМагазин",
  "url": "https://example.com",
  "potentialAction": {
    "@type": "SearchAction",
    "target": {
      "@type": "EntryPoint",
      "urlTemplate": "https://example.com/search?q={search\\_term\\_string}"
    },
    "query-input": "required name=search_term_string"
  }
}
</script>

Хлебные крошки: BreadcrumbList

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Главная",
      "item": "https://example.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Кроссовки",
      "item": "https://example.com/krossovki/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Nike Air Max 90"
    }
  ]
}
</script>

Последний элемент без item (URL) – это текущая страница. Google именно так рекомендует.

Внедрение Schema.org в интернет-магазине: пошаговая инструкция

Теперь от теории к практике. Пошаговый план, который работает для магазинов любого размера.

Шаг 1. Выберите формат разметки

Три варианта: JSON-LD, Microdata, RDFa.

Выбирайте JSON-LD. Причины:

  • Рекомендован Google.

  • Не смешивается с HTML – проще поддерживать.

  • Легко генерируется динамически из данных API.

  • Можно добавить через Google Tag Manager без правки шаблонов.

Microdata (атрибуты itemprop, itemscope в HTML-тегах) всё ещё работает, но любое изменение вёрстки ломает разметку. Для e-commerce с частыми редизайнами это боль.

Шаг 2. Определите приоритетные страницы

Не нужно размечать всё сразу. Приоритет:

  1. Карточки товаров – Product + Offer + AggregateRating. Максимальный эффект на CTR.

  2. Все страницы – BreadcrumbList. Минимум усилий, видимый результат.

  3. Главная – Organization + WebSite с SearchAction.

  4. Страницы каталогов – ItemList с Product.

  5. Страницы с отзывами – Review.

Шаг 3. Добавьте JSON-LD в шаблоны

Два подхода:

Через <head> или <body> в шаблоне страницы. Классический способ. На бэкенде формируете JSON из данных товара и вставляете в шаблон.

Через Google Tag Manager. Если нет быстрого доступа к коду. Создаёте Custom HTML тег с JSON-LD, триггер – загрузка конкретного типа страниц. Переменные Data Layer подставляют данные товара.

Важно: GTM-вариант Google индексирует, но с задержкой. Для критичных страниц лучше серверный рендер.

Шаг 4. Протестируйте разметку

Подробнее об инструментах – в следующем разделе. На этом этапе: каждый шаблон проверяется на тестовой странице до деплоя на продакшн.

Шаг 5. Отслеживайте результаты

  • Google Search Console → раздел «Улучшения» → «Товары», «Хлебные крошки», «Поле поиска по сайту». Здесь видны ошибки и валидные страницы.

  • Яндекс.Вебмастер → «Микроразметка». Показывает типы найденной разметки и ошибки.

  • GSC → Эффективность. Фильтруйте по типу поиска «Результаты с расширенными описаниями». Отслеживайте CTR до и после внедрения.

Проверка микроразметки: инструменты и типичные ошибки

Проверка микроразметки: инструменты и типичные ошибки
Проверка микроразметки: инструменты и типичные ошибки

Инструменты валидации

Google Rich Results Test (search.google.com/test/rich-results) – главный инструмент. Показывает, какие rich results доступны для страницы, и все ошибки/предупреждения. Принимает URL или фрагмент кода.

Schema Markup Validator (validator.schema.org) – проверяет синтаксическую корректность по спецификации Schema.org. Более строгий, чем Google-тест. Полезен для отлова ошибок, которые Google пока прощает, но может перестать.

Яндекс.Вебмастер → Микроразметка – обязателен для Рунета. Яндекс интерпретирует некоторые типы иначе, чем Google. Например, для товаров в Яндексе важны offers с явным указанием seller.

Типичные ошибки и как их исправить

Ошибка

Причина

Решение

Missing field “price”

Нет цены в Offer

Всегда заполняйте price и priceCurrency

Missing field “availability”

Нет статуса наличия

Добавьте availability с корректным URI Schema.org

Invalid enum value

Строка вместо URI в availability

Используйте https://schema.org/InStock, не «В наличии»

Multiple entities

Несколько @type: Product на одной карточке

Один Product на карточку. Для каталога – ItemList

Warning: missing “image”

Нет изображения

image – рекомендуемое поле. Без него rich snippet не появится

Ещё одна частая проблема – дубли @type. Если CMS генерирует Microdata в HTML, а Вы добавили JSON-LD, поисковик видит два конфликтующих описания. Решение: отключите Microdata в шаблоне или в плагине CMS.

Интеграция микроразметки с популярными CMS

Большинство конкурентных статей дают абстрактные примеры. Но Вы, скорее всего, работаете с конкретной CMS. Вот как внедрять разметку в двух самых популярных системах Рунета.

WordPress + WooCommerce

WooCommerce из коробки добавляет базовую Microdata-разметку Product. Проблема: она часто неполная и конфликтует с плагинами.

Вариант 1: Плагин. Yoast SEO (бесплатная версия) генерирует JSON-LD для Organization, WebSite, BreadcrumbList. Для Product – нужен Yoast WooCommerce SEO (платный) или альтернатива: Rank Math (бесплатно даёт Product schema).

Вариант 2: Кастомный код. Добавьте в functions.php или в кастомный плагин:

add_action('wp_head', function() {
    if (!is_product()) return;
    
    global $product;
    
    $schema = [
        '@context' => 'https://schema.org',
        '@type' => 'Product',
        'name' => $product->get_name(),
        'image' => wp_get_attachment_url($product->get_image_id()),
        'description' => wp_strip_all_tags($product->get_short_description()),
        'sku' => $product->get_sku(),
        'brand' => [
            '@type' => 'Brand',
            'name' => $product->get_attribute('pa_brand') ?: 'N/A'
        ],
        'offers' => [
            '@type' => 'Offer',
            'url' => get_permalink(),
            'priceCurrency' => get_woocommerce_currency(),
            'price' => $product->get_price(),
            'availability' => $product->is_in_stock() 
                ? 'https://schema.org/InStock' 
                : 'https://schema.org/OutOfStock'
        ]
    ];
    
    // AggregateRating, если есть отзывы
    if ($product->get_review_count() > 0) {
        $schema['aggregateRating'] = [
            '@type' => 'AggregateRating',
            'ratingValue' => $product->get_average_rating(),
            'reviewCount' => $product->get_review_count()
        ];
    }
    
    echo '<script type="application/ld+json">' . 
         wp_json_encode($schema, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . 
         '</script>';
});

Не забудьте отключить стандартную WooCommerce Microdata, чтобы избежать дублей:

add_filter('woocommerce_structured_data_product', '__return_empty_array');

1C-Битрикс

В Битрикс микроразметка часто генерируется компонентом catalog.element. По умолчанию это Microdata, вшитая в шаблон.

Рекомендуемый подход: Отключите встроенную разметку в шаблоне компонента и добавьте JSON-LD через header.php шаблона сайта или через отдельный файл schema.php, подключаемый в template.php компонента.

Ключевой момент: данные товара берите из $arResult в шаблоне компонента. Цену, наличие, SKU – из свойств инфоблока. Формируйте JSON так же, как в PHP-примере выше, только вместо WooCommerce-функций используйте массив $arResult.

Если у Вас highload-инфоблоки – данные для schema берите из того же запроса, который отдаёт товар на страницу. Не делайте отдельный запрос к БД ради разметки.

Продвинутые типы: FAQPage, VideoObject, LocalBusiness

Базовая разметка Product/Offer покрывает основные задачи. Но есть типы, которые конкуренты почти никогда не внедряют, а они дают дополнительные rich snippets.

FAQPage – для секций «Вопрос-ответ»

Если на карточке товара или в категории есть аккордеон с вопросами – разметьте его как FAQPage. Google покажет вопросы и ответы прямо в сниппете, что значительно увеличивает занимаемую площадь в выдаче.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Как подобрать размер Nike Air Max 90?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Модель маломерит на 0.5 размера. Рекомендуем заказывать на размер больше."
      }
    },
    {
      "@type": "Question",
      "name": "Есть ли гарантия на подошву?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Да, гарантия производителя – 2 года с момента покупки."
      }
    }
  ]
}
</script>

VideoObject – для видеообзоров

Если на странице товара встроено видео (YouTube-embed, свой плеер), разметка VideoObject позволяет Google показать видео-карусель в результатах.

{
  "@type": "VideoObject",
  "name": "Обзор Nike Air Max 90",
  "description": "Подробный обзор кроссовок Nike Air Max 90.",
  "thumbnailUrl": "https://example.com/video-thumb.jpg",
  "uploadDate": "2024-11-15T08:00:00+03:00",
  "contentUrl": "https://example.com/videos/nike-review.mp4",
  "embedUrl": "https://youtube.com/embed/abc123"
}

LocalBusiness – для оффлайн-точек

Если у магазина есть физические точки продаж, LocalBusiness на странице контактов или на главной формирует карточку в Google Maps и в блоке знаний.

Event – для акций и распродаж

Тип Event позволяет разметить ограниченные по времени акции. Google может показать даты и условия прямо в сниппете. Особенно эффективно для сезонных распродаж.

Автоматизация и динамическая генерация Schema

Автоматизация и динамическая генерация Schema
Автоматизация и динамическая генерация Schema

Статичные JSON-LD шаблоны работают для простых магазинов. Но когда у Вас тысячи товаров, вариации, динамические цены – нужна автоматизация.

Серверная генерация (PHP, Node.js, Python)

Самый надёжный подход. JSON-LD формируется на сервере из тех же данных, что отдаются в шаблон. Поисковик получает разметку при первом запросе, без необходимости выполнять JavaScript.

На Node.js (Express-подобный фреймворк) это выглядит так:

function generateProductSchema(product) {
  const schema = {
    "@context": "https://schema.org",
    "@type": "Product",
    "name": product.title,
    "image": product.images,
    "description": product.description,
    "sku": product.sku,
    "offers": {
      "@type": "Offer",
      "priceCurrency": "RUB",
      "price": product.price,
      "availability": product.inStock 
        ? "https://schema.org/InStock" 
        : "https://schema.org/OutOfStock",
      "url": product.url
    }
  };

  if (product.reviewCount > 0) {
    schema.aggregateRating = {
      "@type": "AggregateRating",
      "ratingValue": product.avgRating,
      "reviewCount": product.reviewCount
    };
  }

  return JSON.stringify(schema);
}

Клиентская генерация (React, Vue)

Если магазин на SPA (Single Page Application), JSON-LD нужно рендерить в DOM. Google утверждает, что индексирует JavaScript-генерируемый JSON-LD, но с оговоркой: SSR (Server-Side Rendering) или SSG (Static Site Generation) надёжнее.

В React используйте react-helmet или next/head (для Next.js):

import Head from 'next/head';

export default function ProductPage({ product }) {
  const schema = {
    "@context": "https://schema.org",
    "@type": "Product",
    name: product.title,
    // ... остальные поля
  };

  return (
    <>
      <Head>
        <script
          type="application/ld+json"
          dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
        />
      </Head>
      {/* JSX компонента */}
    </>
  );
}

Для Vue (Nuxt.js) – аналогично через useHead() composable.

Интеграция с API товарной базы

Когда данные приходят из 1C, ERP или PIM-системы, JSON-LD генерируется из тех же API-ответов, что и контент страницы. Не создавайте отдельный маршрут для schema – это лишний запрос и риск рассинхронизации данных.

Схема: API → Контроллер → Шаблон (HTML + JSON-LD из одного набора данных).

Метрики успеха: как понять, что разметка работает

Внедрили разметку, прошли валидацию – а дальше? Без метрик это просто красивый код.

Что отслеживать

  1. Покрытие в GSC. Раздел «Улучшения» → выбранный тип (Товары, FAQ, Хлебные крошки). Следите за соотношением «Валидные» / «С ошибками» / «С предупреждениями».

  2. CTR по страницам с разметкой. В GSC → Эффективность → фильтр по URL или группам страниц. Сравнивайте CTR до и после внедрения. Изменения становятся заметны через 2–4 недели после индексации.

  3. Количество показов rich results. В GSC → Эффективность → фильтр по типу результата поиска.

  4. Конверсия. Если CTR вырос, но конверсия не изменилась – это всё равно плюс: больше трафика при том же CR означает больше продаж.

Подход к A/B-тестированию

Полноценный A/B-тест schema затруднён: нельзя показывать разный сниппет разным пользователям, это контролирует поисковик. Но можно:

  • Внедрить разметку на часть категорий, оставив контрольную группу без неё.

  • Сравнить CTR и трафик этих групп через 4–6 недель.

  • По опыту, разница в CTR для товарных запросов с rich snippets vs. без них составляет 15–25%.

Производительность и безопасность

Производительность и безопасность
Производительность и безопасность

JSON-LD не блокирует рендер

В отличие от Microdata, которая вплетена в HTML, <script type="application/ld+json"> не выполняется браузером как JavaScript. Парсер видит неизвестный MIME-тип и пропускает. Влияние на скорость загрузки – околонулевое.

Тем не менее:

  • Минифицируйте JSON-LD в продакшне. Убирайте пробелы и переносы строк. На странице каталога с 50 товарами разметка может весить несколько килобайт.

  • Не дублируйте данные. Один блок JSON-LD с полной информацией лучше, чем три блока с пересекающимися данными.

Безопасность при пользовательском контенте

Если отзывы генерируются пользователями и попадают в JSON-LD – экранируйте данные. Непроверенный текст в "text" свойстве Review может содержать HTML или спецсимволы, ломающие JSON.

В PHP: json_encode() экранирует по умолчанию. В JavaScript: JSON.stringify() тоже безопасен. Но дополнительно фильтруйте HTML-теги до того, как они попадут в объект schema.

Schema для AI-выдачи и голосового поиска

Google SGE и Яндекс Нейро всё активнее используют структурированные данные для формирования AI-ответов. Чем больше машиночитаемой информации на странице, тем выше шансы попасть в сгенерированный ответ.

Что стоит добавить уже сейчас:

  • sameAs в Organization – ссылки на соцсети, Яндекс.Карты, Google Maps. Помогает связать сущности.

  • Person для авторов отзывов – даёт дополнительный контекст для E-E-A-T сигналов.

  • Event для акций с датами начала и окончания – потенциально попадает в AI-ответы на запросы типа «скидки на кроссовки на этой неделе».

Это инвестиция в ближайшее будущее. Стоимость внедрения минимальна, а выигрыш при смене формата выдачи может быть значительным.

Чеклист внедрения микроразметки для интернет-магазина

Чеклист внедрения микроразметки для интернет-магазина
Чеклист внедрения микроразметки для интернет-магазина

Перед тем как закрывать задачу, пройдитесь по этому списку:

  • [ ] Формат – JSON-LD для всех типов

  • [ ] Product + Offer на каждой карточке товара

  • [ ] price, priceCurrency, availability заполнены корректно

  • [ ] AggregateRating – только если есть реальные отзывы (не фейковые)

  • [ ] BreadcrumbList на всех внутренних страницах

  • [ ] Organization на главной

  • [ ] WebSite + SearchAction на главной

  • [ ] Нет дублей (Microdata CMS отключена, если используете JSON-LD)

  • [ ] Все страницы проверены в Google Rich Results Test

  • [ ] Яндекс.Вебмастер не показывает ошибок в разделе «Микроразметка»

  • [ ] Настроен мониторинг в GSC (раздел «Улучшения»)

  • [ ] FAQPage добавлен на страницы с аккордеонами

  • [ ] VideoObject – для страниц с видеообзорами

Заключение

Микроразметка Schema.org для интернет-магазина – это не «дополнительная SEO-фишка», а базовый технический стандарт, от которого зависят видимость и кликабельность в поиске. Rich snippets с ценой, рейтингом и наличием товара дают преимущество, которое невозможно получить другим способом.

Первый шаг – возьмите карточку самого популярного товара, добавьте JSON-LD с Product/Offer/AggregateRating, проверьте в Rich Results Test. Через 2–4 недели сравните CTR в GSC. Разница убедит лучше любой статьи.

Если нужна помощь с аудитом текущей разметки или стратегией внедрения для крупного каталога – я разбираю подобные кейсы детально. Подробности и контакт в Telegram-канале.

FAQ

Нужно ли добавлять микроразметку на страницы пагинации каталога?

Нет. Размечайте только первую страницу категории (с ItemList). Страницы пагинации (?page=2, ?page=3) обычно закрыты от индексации или имеют rel="canonical" на первую страницу. Дублирование разметки на пагинациях приведёт к предупреждениям в GSC.

Google показывает ошибку “Missing field ‘priceValidUntil’” – это критично?

Это предупреждение (warning), не ошибка. Rich snippet всё равно может отображаться. Но если хотите убрать предупреждение – добавьте "priceValidUntil": "2025-12-31" в Offer. Укажите дату, до которой цена актуальна. Обновляйте автоматически из базы, если цены меняются.

Можно ли размечать AggregateRating, если отзывов пока нет?

Нельзя. Google прямо запрещает фейковые или отсутствующие отзывы в разметке. Если reviewCount равен нулю – не добавляйте блок AggregateRating. Когда появится хотя бы один реальный отзыв, подключайте динамически.

Микроразметка влияет на позиции в поисковой выдаче?

Напрямую – нет. Google многократно заявлял, что structured data не является фактором ранжирования. Но косвенное влияние велико: рост CTR → поведенческий сигнал → потенциальное улучшение позиций. Плюс для Яндекса разметка товаров важна для попадания в товарные карусели, что фактически равносильно повышению позиции.

Как часто нужно обновлять JSON-LD при изменении цен или наличия?

JSON-LD должен генерироваться динамически из актуальных данных при каждом запросе страницы. Если цена в базе изменилась – schema на странице должна отразить это немедленно. Статичный JSON-LD с захардкоженными ценами – путь к расхождению данных и ручному экшену от Google.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Используете Schema.org по умолчанию?
75%Да, хорошая практика3
0%Нет, только по запросу0
25%Хочу посмотреть вариант1
Проголосовали 4 пользователя. Воздержавшихся нет.