Структуровані дані для варіантів товару (Product, Product)

Багато видів товарів, зокрема одяг, взуття, меблі, електронні пристрої та валізи, постачаються в різних варіантах. Наприклад, для одного й того самого товару можуть бути доступні різні розміри, кольори, матеріали чи візерунки. Щоб наша система коректно розпізнавала, які товари насправді є різновидами одного й того самого товару, використовуйте клас ProductGroup зі пов’язаними властивостями variesBy, hasVariant і productGroupID, а також структуровані дані Product. Це дозволить згрупувати варіанти. Також за наявності цієї розмітки можна буде пропонувати покупцям інформацію про варіанти ваших товарів за допомогою функції показу асортименту.

Властивість ProductGroup також дозволяє вказати спільні характеристики товару для всіх його варіантів, наприклад назву бренду й відгуки, а також властивості, що визначають окремий варіант товару. Усе це допоможе скоротити інформацію, що дублюється.

Структуровані дані — стандартизований формат, який дозволяє надавати пошуковим системам інформацію про сторінку та класифікувати її вміст. Детальніше про принципи роботи структурованих даних…

Нижче в загальних рисах описано, як створити, перевірити та додати на сайт структуровані дані.

  1. Додайте обов’язкові властивості. Дізнайтеся, в яких частинах сторінки потрібно розміщувати структуровані дані обраного вами формату.
  2. Дотримуйтесь рекомендацій.
  3. Перевірте свій код за допомогою інструменту перевірки розширених результатів. Якщо будуть виявлені критичні помилки, усуньте їх. Ми також рекомендуємо усунути некритичні помилки, зазначені в інструменті. Це може призвести до підвищення якості структурованих даних, хоча сторінки будуть придатні для створення розширених результатів і без цього.
  4. Опублікуйте сторінку й за допомогою інструменту перевірки URL з’ясуйте, як вона виглядає для робота Googlebot. Переконайтеся, що доступ Google до сторінки не заблоковано файлом robots.txt або метатегом noindex і авторизація на ній не потрібна. Якщо все в порядку, то запросіть повторне сканування ваших URL.
  5. Надішліть нам файл Sitemap, щоб інформувати нас про зміни на сайті. Надсилання такого файлу можна автоматизувати за допомогою Search Console Sitemap API.

Існує два основних підходи до дизайну, які використовуються для опису варіантів товару на сайтах електронної комерції. У цьому розділі розповідається, як розмітити варіанти товару залежно від обраного вами підходу до дизайну сайту.

  • Одна сторінка: всі варіанти товару доступні на одній сторінці, зазвичай з можливістю вказати параметри запиту. Перезавантаження сторінки не потрібне.
  • Кілька сторінок: варіанти одного товару розміщені на різних сторінках.

Односторінковий сайт являє собою вебсторінку та має такі особливості:

  • Якщо не вибрано варіанти товару, то головна сторінка товару доступна за URL https://www.example.com/coat.
  • Ця сторінка відкриється і в тому випадку, якщо був вказаний один з варіантів товару, доступних за наступними URL-адресами:
    • https://www.example.com/coat?size=small&color=green
    • https://www.example.com/coat?size=small&color=lightblue
    • https://www.example.com/coat?size=large&color=lightblue
  • Якщо користувач вибирає в меню на сторінці інший варіант товару, наприклад товар іншого кольору або розміру, то зображення товару, а також інформація про його ціну та характеристики змінюватимуться динамічно, без перезавантаження сторінки. Розмітка сторінки при цьому не змінюється.

У цьому прикладі для варіантів товару, вкладених у властивість верхнього рівня ProductGroup, використовується властивість hasVariant.

  • Для рівня ProductGroup і трьох об’єктів Offer, вкладених у властивість Product, налаштовано окремі URL. Також URL можна було вказати за допомогою властивості Product.
  • Загальна назва та опис вказані на рівні ProductGroup. Назви та описи окремих варіантів товару вказані на рівні Product.
  • Також на рівні ProductGroup описані спільні властивості різних варіантів товарів, наприклад назва бренду, візерунок, матеріал та інформація для покупців.
  • ProductGroup вказує на відмінні характеристики окремого варіанту товару, при цьому використовується властивість variesBy.
  • Властивість ProductGroup вказує на батьківський товар, для якого використовується властивість productGroupID. Цю властивість не потрібно повторювати для об’єкта Product, для якого використовується властивість inProductGroupWithID.

Цей підхід до дизайну сайту представляє групи та варіанти товарів найбільш компактно та зручно.

<html>
  <head>
    <title>Wool winter coat</title>
    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org/",
        "@type": "ProductGroup",
        "name": "Wool winter coat",
        "description": "Wool coat, new for the coming winter season",
        "url": "https://www.example.com/coat",
        "brand": {
          "@type": "Brand",
          "name": "Good brand"
        },
        "audience": {
          "@type": "PeopleAudience",
          "suggestedGender": "unisex",
          "suggestedAge": {
            "@type": "QuantitativeValue",
            "minValue": 13,
            "unitCode": "ANN"
          }
        },
        "productGroupID": "44E01",
        "pattern": "striped",
        "material": "wool",
        "variesBy": [
          "https://schema.org/size",
          "https://schema.org/color"
        ],
        "hasVariant": [
          {
            "@type": "Product",
            "sku": "44E01-M11000",
            "gtin14": "98766051104214",
            "image": "https://www.example.com/coat_small_green.jpg",
            "name": "Small green coat",
            "description": "Small wool green coat for the winter season",
            "color": "Green",
            "size": "small",
            "offers": {
              "@type": "Offer",
              "url": "https://www.example.com/coat?size=small&color=green",
              "priceCurrency": "USD",
              "price": 39.99,
              "itemCondition": "https://schema.org/NewCondition",
              "availability": "https://schema.org/InStock",
              "shippingDetails": { "@id": "#shipping_policy" },
              "hasMerchantReturnPolicy": { "@id": "#return_policy" }
            }
          },
          {
            "@type": "Product",
            "sku": "44E01-K11000",
            "gtin14": "98766051104207",
            "image": "https://www.example.com/coat_small_lightblue.jpg",
            "name": "Small light blue coat",
            "description": "Small wool light blue coat for the winter season",
            "color": "light blue",
            "size": "small",
            "offers": {
              "@type": "Offer",
              "url": "https://www.example.com/coat?size=small&color=lightblue",
              "priceCurrency": "USD",
              "price": 39.99,
              "itemCondition": "https://schema.org/NewCondition",
              "availability": "https://schema.org/InStock",
              "shippingDetails": { "@id": "#shipping_policy" },
              "hasMerchantReturnPolicy": { "@id": "#return_policy" }
            }
          },
          {
            "@type": "Product",
            "sku": "44E01-X1100000",
            "gtin14": "98766051104399",
            "image": "https://www.example.com/coat_large_lightblue.jpg",
            "name": "Large light blue coat",
            "description": "Large wool light blue coat for the winter season",
            "color": "light blue",
            "size": "large",
            "offers": {
              "@type": "Offer",
              "url": "https://www.example.com/coat?size=large&color=lightblue",
              "priceCurrency": "USD",
              "price": 49.99,
              "itemCondition": "https://schema.org/NewCondition",
              "availability": "https://schema.org/BackOrder",
              "shippingDetails": { "@id": "#shipping_policy" },
              "hasMerchantReturnPolicy": { "@id": "#return_policy" }
            }
          }
        ]
      },
      {
        "@context": "https://schema.org/",
        "@type": "OfferShippingDetails",
        "@id": "#shipping_policy",
        "shippingRate": {
          "@type": "MonetaryAmount",
          "value": 2.99,
          "currency": "USD"
        },
        "shippingDestination": {
          "@type": "DefinedRegion",
          "addressCountry": "US"
        },
        "deliveryTime": {
          "@type": "ShippingDeliveryTime",
          "handlingTime": {
            "@type": "QuantitativeValue",
            "minValue": 0,
            "maxValue": 1,
            "unitCode": "DAY"
          },
          "transitTime": {
            "@type": "QuantitativeValue",
            "minValue": 1,
            "maxValue": 5,
            "unitCode": "DAY"
          }
        }
      },
      {
        "@context": "http://schema.org/",
        "@type": "MerchantReturnPolicy",
        "@id": "#return_policy",
        "applicableCountry": "US",
        "returnPolicyCountry": "US",
        "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
        "merchantReturnDays": 60,
        "returnMethod": "https://schema.org/ReturnByMail",
        "returnFees": "https://schema.org/FreeReturn"
      }
    ]
    </script>
  </head>
  <body>
  </body>
</html>

Структура цього сайту схожа на описану в попередньому прикладі, але варіанти товару вказані окремо від властивості ProductGroup, тобто не вкладені в нього. Такий підхід до дизайну сайту може бути простішим при використанні деяких систем управління контентом.

<html>
  <head>
    <title>Wool winter coat</title>
    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org",
        "@type": "ProductGroup",
        "@id": "#coat_parent",
        "name": "Wool winter coat",
        "description": "Wool coat, new for the coming winter season",
        "url": "https://www.example.com/coat",
        // ... other ProductGroup-level properties
        "brand": {
          "@type": "Brand",
          "name": "Good brand"
        },
        "productGroupID": "44E01",
        "variesBy": [
          "https://schema.org/size",
          "https://schema.org/color"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Product",
        "isVariantOf": { "@id": "#coat_parent" },
        "name": "Small green coat",
        "description": "Small wool green coat for the winter season",
        "image": "https://www.example.com/coat_small_green.jpg",
        "size": "small",
        "color": "green",
        // ... other Product-level properties
        "offers": {
          "@type": "Offer",
          "url": "https://www.example.com/coat?size=small&color=green",
          "price": 39.99,
          "priceCurrency": "USD"
          // ... other offer-level properties
        }
      },
      {
        "@context": "https://schema.org",
        "@type": "Product",
        "isVariantOf": { "@id": "#coat_parent" },
        "name": "Small dark blue coat",
        "description": "Small wool light blue coat for the winter season",
        "image": "https://www.example.com/coat_small_lightblue.jpg",
        "size": "small",
        "color": "light blue",
        // ... other Product-level properties
        "offers": {
          "@type": "Offer",
          "url": "https://www.example.com/coat?size=small&color=lightblue",
          "price": 39.99,
          "priceCurrency": "USD"
          // ... other offer-level properties
        }
      },
      {
        "@context": "https://schema.org",
        "@type": "Product",
        "isVariantOf": { "@id": "#coat_parent" },
        "name": "Large light blue coat",
        "description": "Large wool light blue coat for the winter season",
        "image": "https://www.example.com/coat_large_lightblue.jpg",
        "size": "large",
        "color": "light blue",
        // ... other Product-level properties
        "offers": {
          "@type": "Offer",
          "url": "https://www.example.com/coat?size=large&color=lightblue",
          "price": 49.99,
          "priceCurrency": "USD"
          // ... other offer-level properties
        }
      }
    ]
    </script>
  </head>
  <body>
  </body>
</html>

Розмітка багатосторінкового сайту має такі особливості:

  • Наприклад, светр блакитного кольору доступний у розмірах S і L, для яких передбачені окремі URL:
    • https://www.example.com/coat/lightblue?size=small
    • https://www.example.com/coat/lightblue?size=large
  • Такий самий светр зеленого кольору є тільки в розмірі S, для нього задано URL https://www.example.com/coat/green?size=small.
  • Вибравши будь-який із цих двох варіантів кольорів, покупець потрапить на іншу сторінку, тобто при виборі товару іншого кольору в інтерфейсі сайту сторінка перезавантажується.
  • На всіх сторінках сайту використовується однакова розмітка.

Зверніть увагу, що визначення ProductGroup відсутнє тільки на тій сторінці, на яку посилаються інші сторінки сайту. Це пов’язано з тим, що визначення ProductGroup повинно посилатися на спільні характеристики варіантів товару, такі як бренд, матеріал і вікова група, для якої призначений товар. При цьому повне визначення ProductGroup повинно повторюватися на сторінці кожного варіанту товару.

Принцип роботи такого багатосторінкового сайту такий самий, як і в односторінкового сайту з першого прикладу, – варіанти товару Product вкладені в об’єкт верхнього рівня ProductGroup за допомогою властивості hasVariant. Визначення ProductGroup дублюється на всіх сторінках. Зверніть увагу:

  • У ProductGroup відсутній канонічний URL, оскільки немає єдиної адреси, що представляє ProductGroup.
  • На кожній сторінці у властивості ProductGroup міститься повний опис варіантів товару, представлених на сторінці, а також варіанту, пов’язаного з варіантами на іншій сторінці за допомогою властивості url, завдяки чому система знаходить усі варіанти одного товару.
У наступному прикладі показані структуровані дані на першій сторінці для товару синього кольору в різних варіантах:
<html>
  <head>
    <title>Wool winter coat, light blue color</title>
    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org/",
        "@type": "ProductGroup",
        "name": "Wool winter coat",
        "description": "Wool coat, new for the coming winter season",
        // ... other ProductGroup-level properties
        "brand": {
          "@type": "Brand",
          "name": "Good brand"
        },
        "productGroupID": "44E01",
        "variesBy": [
          "https://schema.org/size",
          "https://schema.org/color"
        ],
        "hasVariant": [
          {
            "@type": "Product",
            "name": "Small light blue coat",
            "description": "Small wool light blue coat for the winter season",
            "image": "https://www.example.com/coat_small_lightblue.jpg",
            "size": "small",
            "color": "light blue",
            // ... other Product-level properties
            "offers": {
              "@type": "Offer",
              "url": "https://www.example.com/coat/lightblue?size=small",
              "price": 39.99,
              "priceCurrency": "USD"
              // ... other offer-level properties
            }
          },
          {
            "@type": "Product",
            "name": "Large light blue coat",
            "description": "Large wool light blue coat for the winter season",
            "image": "https://www.example.com/coat_large_lightblue.jpg",
            "size": "large",
            "color": "light blue",
            // ... other Product-level properties
            "offers": {
              "@type": "Offer",
              "url": "https://www.example.com/coat/lightblue?size=large",
              "price": 49.99,
              "priceCurrency": "USD"
              // ... other offer-level properties
            }
          },
          { "url": "https://www.example.com/coat/green?size=small" }
        ]
      }
    ]
    </script>
  </head>
  <body>
  </body>
</html>

Структура цього сайту схожа на структуру багатосторінкового сайту, описану в попередньому прикладі, але варіанти товару вказані окремо від властивості ProductGroup, тобто не вкладені в нього. Такий підхід до дизайну сайту може бути простішим при використанні деяких систем управління контентом.

У наступному прикладі показані структуровані дані на першій сторінці для товару синього кольору в різних варіантах:
<html>
  <head>
    <title>Wool winter coat, lightblue color</title>
    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org/",
        "@type": "ProductGroup",
        "@id": "#coat_parent",
        "name": "Wool winter coat",
        "description": "Wool coat, new for the coming winter season",
        "brand": {
          "@type": "Brand",
          "name": "Good brand"
        },
        "audience": {
          "@type": "PeopleAudience",
          "suggestedGender": "unisex",
          "suggestedAge": {
            "@type": "QuantitativeValue",
            "minValue": 13,
            "unitCode": "ANN"
          }
        },
        "productGroupID": "44E01",
        "pattern": "striped",
        "material": "wool",
        "variesBy": [
          "https://schema.org/size",
          "https://schema.org/color"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Product",
        "isVariantOf": { "@id": "#coat_parent" },
        "sku": "44E01-K11000",
        "gtin14": "98766051104207",
        "image": "https://www.example.com/coat_lightblue.jpg",
        "name": "Small light blue coat",
        "description": "Small wool light blue coat for the winter season",
        "color": "light blue",
        "size": "small",
        "offers": {
          "@type": "Offer",
          "url": "https://www.example.com/coat/lightblue?size=small",
          "priceCurrency": "USD",
          "price": 39.99,
          "itemCondition": "https://schema.org/NewCondition",
          "availability": "https://schema.org/InStock",
          "shippingDetails": { "@id": "#shipping_policy" },
          "hasMerchantReturnPolicy": { "@id": "#return_policy" }
        }
      },
      {
        "@context": "https://schema.org",
        "@type": "Product",
        "isVariantOf": { "@id": "#coat_parent" },
        "sku": "44E01-X1100000",
        "gtin14": "98766051104399",
        "image": "https://www.example.com/coat_lightblue.jpg",
        "name": "Large light blue coat",
        "description": "Large wool light blue coat for the winter season",
        "color": "light blue",
        "size": "large",
        "offers": {
          "@type": "Offer",
          "url": "https://www.example.com/coat/lightblue?size=large",
          "priceCurrency": "USD",
          "price": 49.99,
          "itemCondition": "https://schema.org/NewCondition",
          "availability": "https://schema.org/BackOrder",
          "shippingDetails": { "@id": "#shipping_policy" },
          "hasMerchantReturnPolicy": { "@id": "#return_policy" }
        }
      },
      {
        "@context": "https://schema.org",
        "@type": "Product",
        "isVariantOf": { "@id": "#coat_parent" },
        "url": "https://www.example.com/coat/green?size=small"
      },
      {
        "@context": "https://schema.org/",
        "@type": "OfferShippingDetails",
        "@id": "#shipping_policy",
        "shippingRate": {
          "@type": "MonetaryAmount",
          "value": 2.99,
          "currency": "USD"
        },
        "shippingDestination": {
          "@type": "DefinedRegion",
          "addressCountry": "US"
        },
        "deliveryTime": {
          "@type": "ShippingDeliveryTime",
          "handlingTime": {
            "@type": "QuantitativeValue",
            "minValue": 0,
            "maxValue": 1,
            "unitCode": "DAY"
          },
          "transitTime": {
            "@type": "QuantitativeValue",
            "minValue": 1,
            "maxValue": 5,
            "unitCode": "DAY"
          }
        }
      },
      {
        "@context": "https://schema.org/",
        "@type": "MerchantReturnPolicy",
        "@id": "#return_policy",
        "applicableCountry": "US",
        "returnPolicyCountry": "US",
        "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
        "merchantReturnDays": 60,
        "returnMethod": "https://schema.org/ReturnByMail",
        "returnFees": "https://schema.org/FreeReturn"
      }
    ]
    </script>
  </head>
  <body>
  </body>
</html>

Щоб структуровані дані для розмітки варіантів товару могли використовуватися в Пошуку Google, вони повинні відповідати наведеним нижче вимогам.

  • Кожен варіант товару повинен мати у своїй розмітці структурованих даних унікальний ідентифікатор. Вказати ідентифікатор можна за допомогою властивостей sku або gtin.
  • Кожна група товарів повинна мати у своїй розмітці структурованих даних унікальний ідентифікатор. Вказати ідентифікатор можна за допомогою властивості inProductGroupWithID у властивостях варіанта товару Product або властивості productGroupID, яка знаходиться в ProductGroup.
  • Переконайтеся, що структуровані дані Product додані до властивостей варіантів товарів відповідно до списку обов’язкових властивостей для представлення інформації про асортимент (або опису товарів).
  • У випадку з односторінковим сайтом має бути лише один канонічний URL для всієї групи ProductGroup, до якої належать всі варіанти товару. Зазвичай це базова URL-адреса, що веде на сторінку без попередньо вибраного варіанту товару, наприклад https://www.example.com/winter_coat.
  • Кожна сторінка багатосторінкового сайту повинна мати власну повну розмітку для всіх об’єктів, що знаходяться на цій сторінці. Це означає, що позасторінкові об’єкти не впливають на розуміння розмітки на самій сторінці.
  • Сайт повинен надавати можливість заздалегідь вибрати варіант товару безпосередньо за URL, вказавши його в параметрах запиту URL, наприклад https://www.example.com/winter_coat/size=small&color=green. Завдяки цьому система може сканувати і розпізнавати окремі варіанти товару. Щоб користувачі могли заздалегідь вибрати варіант товару, необхідно налаштувати відображення правильного зображення, ціни та інформації про наявність, а також дозволити покупцям додати варіант товару в кошик.
  • Якщо ви прагнете підвищити рейтинг товарів зі свого магазину в Google Покупках, рекомендуємо додати в вихідний HTML-код структуровані дані Product.
  • Якщо ви використовуєте розмітку Product, згенеровану за допомогою JavaScript, врахуйте, що через динамічно створювану розмітку може знизитися частота й точність сканування для Покупок. Це може завдавати незручностей користувачам під час перегляду інформації, що швидко змінюється, наприклад відомостей про наявність і ціну товарів. Якщо ви створюєте розмітку Product за допомогою JavaScript, у вашого сервера має бути достатньо обчислювальних ресурсів для обробки підвищеного трафіку від Google.

Щоб ваші структуровані дані можна було використовувати в Пошуку Google, необхідно встановити всі обов’язкові властивості. Ви також можете додати рекомендовані властивості, щоб покупцям було зручніше знайомитися з інформацією.

Google розпізнає властивості розмітки ProductGroup, перераховані нижче. Повний опис типу ProductGroup наведено на сторінці schema.org/ProductGroup. У розмітці інформації про товар використовуйте властивості типу ProductGroup, вказані нижче.

Обов’язкові властивості
name

Text

Назва групи товарів (ProductGroup), наприклад “Пальто зимове вовняне”. Переконайтеся, що назва варіанта товару в кожній властивості Product задана точніше й враховує відмінні характеристики цього варіанта, наприклад “Пальто зимове вовняне зелене, розмір S”. Детальна інформація наведена в документації про розмітку товарів.

Рекомендовані властивості
aggregateRating

AggregateRating

Властивість aggregateRating, вкладена в ProductGroup, що представляє всі варіанти товару (якщо застосовно). Дотримуйтесь цих рекомендацій і ознайомтеся зі списком обов’язкових і рекомендованих властивостей AggregateRating.

brand

Brand

Інформація про бренд для всієї групи товарів (ProductGroup), тобто одна й та сама для всіх варіантів товару (якщо застосовно). Детальна інформація про властивість brand наведена в документації про розмітку товарів.

brand.name

Text

Назва бренду групи товарів (ProductGroup), однакова для всіх варіантів товару. Якщо ви вже додали назву бренду на рівні ProductGroup, то додавати її ще раз на рівні Product не потрібно. Детальна інформація про властивість brand наведена в документації про розмітку товарів.

description

Text або TextObject

Опис ProductGroup. Наприклад, «Зимове вовняне пальто для холодної погоди». Переконайтеся, що опис варіанту товару точний і містить відмінні характеристики варіанту, наприклад колір, розмір або матеріал (рекомендується).

hasVariant

Product

Вкладена властивість Product – це один із варіантів властивості ProductGroup (якщо застосовно). Властивість ProductGroup зазвичай містить кілька властивостей Product для вкладених варіантів.

Властивість варіанта товару Product також може посилатися на батьківський товар ProductGroup за допомогою властивості isVariantOf у властивості Product.

productGroupID

Text

Ідентифікатор групи товарів або батьківський SKU. Цей ідентифікатор необхідно надати для властивості ProductGroup або задати його для всіх варіантів властивості ProductGroup за допомогою властивості inProductGroupWithID. Якщо ви вказуєте ідентифікатори як для властивості ProductGroup, так і для властивостей варіантів Product, то ці ідентифікатори повинні бути однаковими.

review

Review

Властивість review, вкладена в ProductGroup (якщо застосовно). Дотримуйтесь цих рекомендацій і ознайомтеся зі списком обов’язкових і рекомендованих властивостей відгуку.

url

URL

Тільки для односторінкових сайтів: URL (без можливості вибору варіантів товару), за яким розташована властивість ProductGroup (якщо застосовно). Не слід використовувати цю властивість для багатосторінкових сайтів.

variesBy

DefinedTerm

Відмінні особливості варіантів товару в групі товарів (ProductGroup), наприклад розмір або колір (якщо застосовно). Посилання на ці відмінні властивості варіантів можна за допомогою повної URL-адреси стандарту Schema.org, наприклад https://schema.org/color. Підтримуються наступні властивості:

  • https://schema.org/color
  • https://schema.org/size
  • https://schema.org/suggestedAge
  • https://schema.org/suggestedGender
  • https://schema.org/material
  • https://schema.org/pattern

Якщо у вас виникли труднощі з додаванням або налагодженням структурованих даних, вам допоможуть ресурси та інформація, доступні за наведеними нижче посиланнями.