Skip to content

Product modeling guide

This guide includes examples of how to model product data outside of the fashion and lifestyle industries with the Vodayo Elevate data model.

Data model overview

The data model of Voyado Elevate has three levels: product group, product, and variant. Each level has associated predefined attributes. For more information about the levels, their requirements, and their attributes, see Format specification.

Data Model with Attributes

Product group

A product group represents a collection of products that primarily vary in color or style. There may or may not be a different title for each of these products – in the example below, the color name is not part of the title.

Product

The product represents the unique color – or style difference – across the group. The imagery is at the product level and there are some required key attributes at this level.

Variant

The variants for each product (color or style) represent the SKUs that can be bought. For fashion and lifestyle, the SKU is the size of the product. The price and stock values are defined at this level.

elevate response object

When modeling products, it is important to consider the structure of the Elevate query responses, especially for the category/landing pages (product lists) and the search results page.

For these pages, Elevate returns an array of product groups where each product group contain the products and their respective variants. Within each product group, the first product returned is the main one to be rendered. All the other products in that same group are also returned, to allow them to be rendered in a suitable way in order to show other products that are also available.

In the image below there are 4 product groups where the first product in each group is rendered as the primary product, and the remaining products in each group (if any) are rendered as thumbnails.

Elevate response object

Homeware

Homeware is a broad industry that includes products that can range from photo albums to kitchen supplies to decorative cushions. The following example includes homeware products from the kitchen supplies segment - mixing bowls.

As seen below, mixing bowls can vary in size/volume, and each size can have different color alternatives. The products can be modeled as follows:

Homeware Modeling Example

The blue rectangle represents the product group level. The green rectangle represents the product level. The pink rectangle represents the variant level. In this case, each mixing bowl size encompasses the entire product group. Each color alternative from each size encompasses both the product and the variant level, although there must still be a product and a variant for each. This modeling is in order to present the products in a list page as shown in the illustration below:

Homeware Product List Page Mock up

This example makes some assumptions about the retailer's requirements:

  • Mixing bowls for each color and size combination are to be presented as separate entries on the product list page.
  • Color variations for a mixing bowl of a particular size can be viewed as thumbnails underneath the default color for that bowl.
  • When presenting the product cards on the product list page, the title must include the color and the size information.

Product group

In this particular case, a product group represents products that all have the same size/volume, and the distinguishing feature for the products is the color.
The different sizes of mixing bowls are slightly different visually, and the retailer wants to have a clear distinguishing title for each product.

Product

The product's imagery is provided at the product data level and each product represents a color-alternative in the group. Given the retailer’s requirements on how the products should appear in the product list page, each color (of a particular size common to the group) is modeled as a separate product with a separate title.

Variant

In this instance, there is no difference between the product and the variant – each color of mixing bowl has exactly one SKU. The model requires a product and a variant, so each product will have exactly one variant. The variant level will have the price and stock values.

Data feed example

Homeware example feed
<?xml version='1.0' encoding='UTF-8'?>
<data_import type="full">
  <modify market="TEST" locale="en-US">
    <product_groups>
      <add_or_replace>
        <product_group key="PG1">
          <brand>Test</brand>
          <department>Kitchenware</department>
          <products>
            <product key="PG1_P1">
              <title>Blue mixing bowl 1,5L</title>
              <url>/kitchenware/bowls/PG1_P1</url>
              <release_date>2022-01-10T00:00:00Z</release_date>
              <description>BPA free mixing bowl.</description>
              <images>
                <image>
                  <urls>
                    <url>//images/bluemixingbowl15.jpg</url>
                  </urls>
                </image>
                <!-- other images of 1,5L blue mixing bowls-->
              </images>
              <color_default>#0000FF</color_default>
              <custom_attributes>
                <volume>1,5 l</volume>
              </custom_attributes>
              <variants>
                <variant key="PG1_P1_V1">
                  <stock_number>12</stock_number>
                  <selling_price>12.00</selling_price>
                  <list_price>12.00</list_price>
                </variant>
              </variants>
            </product>
            <product key="PG1_P2">
              <title>Red mixing bowl 1,5L</title>
              <url>/kitchenware/bowls/PG1_P2</url>
              <release_date>2022-01-10T00:00:00Z</release_date>
              <description>BPA free mixing bowl.</description>
              <images>
                <image>
                  <urls>
                    <url>//images/redmixingbowl15.jpg</url>
                  </urls>
                </image>
                <!-- other images of 1,5L red mixing bowls-->
              </images>
              <color_default>#FF0000</color_default>
              <custom_attributes>
                <volume>1,5 l</volume>
              </custom_attributes>
              <variants>
                <variant key="PG1_P2_V1">
                  <stock_number>10</stock_number>
                  <selling_price>12.00</selling_price>
                  <list_price>12.00</list_price>
                </variant>
              </variants>
            </product>
            <!--The other colors of the 1,5 L mixing bowls as product and variant entities-->
          </products>
        </product_group>
        <product_group key="PG2">
          <brand>Test</brand>
          <department>Kitchenware</department>
          <products>
            <product key="PG2_P1">
              <title>Blue mixing bowl 0,5L</title>
              <url>/kitchenware/bowls/PG2_P1</url>
              <release_date>2022-01-10T00:00:00Z</release_date>
              <description>BPA free mixing bowl.</description>
              <images>
                <image>
                  <urls>
                    <url>//images/bluemixingbowl05.jpg</url>
                  </urls>
                </image>
                <!-- other images of 0,5L blue mixing bowls-->
              </images>
              <color_default>#0000FF</color_default>
              <custom_attributes>
                <volume>0,5 l</volume>
              </custom_attributes>
              <variants>
                <variant key="PG2_P1_V1">
                  <stock_number>12</stock_number>
                  <selling_price>5.00</selling_price>
                  <list_price>5.00</list_price>
                </variant>
              </variants>
            </product>
            <product key="PG2_P2">
              <title>Red mixing bowl 0,5L</title>
              <url>/kitchenware/bowls/PG2_P2</url>
              <release_date>2022-01-10T00:00:00Z</release_date>
              <description>BPA free mixing bowl.</description>
              <images>
                <image>
                  <urls>
                    <url>//images/redmixingbowl05.jpg</url>
                  </urls>
                </image>
                <!-- other images of 0,5L red mixing bowls-->
              </images>
              <color_default>#FF0000</color_default>
              <custom_attributes>
                <volume>0,5 l</volume>
              </custom_attributes>
              <variants>
                <variant key="PG2_P2_V1">
                  <stock_number>10</stock_number>
                  <selling_price>5.00</selling_price>
                  <list_price>5.00</list_price>
                </variant>
              </variants>
            </product>
            <!--The other colors of the 1,5 L mixing bowls as product and variant entities-->
          </products>
        </product_group>
      </add_or_replace>
    </product_groups>
  </modify>
</data_import>

DIY

The DIY (Do-it-yourself) industry is another broad industry with everything needed to complete small or large projects around ones home, from screws to bathroom fixtures, paint cans and welding equipment.

In the example below, screws have different property types. They may visually all look quite similar but have different specifications. The products can be modeled as follows:

DIY Modeling Example

The blue rectangle represents the product group level. The green rectangle represents the product level. The pink rectangle represents the variant level. In this case, each type of screw is modeled as a product group. The different size dimensions for each type are modeled across the product and variant level.

This modeling is in order to present the products in a list page as shown in the illustration below:

DIY Product List Page Mock up

This example makes some assumptions about the retailer's requirements:

  • Each different type of screw should be shown only once in a list page. Unlike in the Homeware example, the size is not part of the product’s title at this level.
  • The visitor must be able to filter the list by length or diameter.

Product group

To fulfill the requirement of having each type of screw showing up once in the product listing page, they need to be modeled as separate product groups with the supress_duplicates attribute enabled. This will ensure that the product group is only represented once in the Elevate API response.

It is possible to have an acid-proof wooden screw and a regular wooden screw in the same product group; for this modeling option the supress_duplicates flag should be disabled.

Each dimension for each screw type will be shown in different product cards in the product listing page.

Product

The visitor must have the option to filter the list by diameter and length, therefore these differences must be represented at product level, which supports custom attributes for this task. Therefore, each combination of dimension and length alternative is modeled as a unique product.

Variant

In this instance, there is no difference between the product and the variant – each screw type of a particular size is also the SKU. The stock values and price will be set at the variant level even when there is only one variant.

Data feed example

DIY example feed
<?xml version='1.0' encoding='UTF-8'?>
<data_import type="full">
  <modify market="TEST" locale="en-US">
    <product_groups>
      <add_or_replace>
        <product_group key="PG1">
          <brand>Test</brand>
          <department>Construction</department>
          <products suppress_duplicates="true">
            <product key="PG1_P1">
              <title>Acid Proof Wooden screw</title>
              <url>/construction/screw/PG1_P1</url>
              <release_date>2022-01-10T00:00:00Z</release_date>
              <description>Acid proof screw for wood with dimension 3,5 x 20mm</description>
              <images>
                <image>
                  <urls>
                    <url>//images/acidproof1.jpg</url>
                  </urls>
                </image>
                <!-- other images of acid proof screw size 3,5x20 mm-->
              </images>
              <custom_attributes>
                <length>20 mm</length>
                <diameter>3,5 mm</diameter>
              </custom_attributes>
              <variants>
                <variant key="PG1_P1_V1">
                  <stock_number>1200</stock_number>
                  <selling_price>15.00</selling_price>
                  <list_price>15.00</list_price>
                </variant>
              </variants>
            </product>
            <product key="PG1_P2">
              <title>Acid Proof Wooden screw</title>
              <url>/construction/screw/PG1_P2</url>
              <release_date>2022-01-10T00:00:00Z</release_date>
              <description>Acid proof screw for wood with dimension 3,5 x 30mm.</description>
              <images>
                <image>
                  <urls>
                    <url>//images/acidproof2.jpg</url>
                  </urls>
                </image>
                <!-- other images of acid proof screw size 3,5x30mm -->
              </images>
              <custom_attributes>
                <length>30 mm</length>
                <diameter>3,5 mm</diameter>
              </custom_attributes>
              <variants>
                <variant key="PG1_P2_V1">
                  <stock_number>100</stock_number>
                  <selling_price>20.00</selling_price>
                  <list_price>20.00</list_price>
                </variant>
              </variants>
            </product>
            <!--The other dimensions/sizes of the acid proof wooden screw as product and variant entities-->
          </products>
        </product_group>
        <product_group key="PG2">
          <brand>Test</brand>
          <department>Construction</department>
          <products suppress_duplicates="true">
            <product key="PG2_P1">
              <title>Wooden Screw</title>
              <url>/construction/screw/PG2_P1</url>
              <release_date>2022-01-10T00:00:00Z</release_date>
              <description>Wooden screw with dimension 3,5x20mm.</description>
              <images>
                <image>
                  <urls>
                    <url>//images/woodenscrew1.jpg</url>
                  </urls>
                </image>
                <!-- other images of wooden screw with size 3,5x20mm-->
              </images>
              <custom_attributes>
                <length>20 mm</length>
                <diameter>3,5 mm</diameter>
              </custom_attributes>
              <variants>
                <variant key="PG2_P1_V1">
                  <stock_number>200</stock_number>
                  <selling_price>6.00</selling_price>
                  <list_price>6.00</list_price>
                </variant>
              </variants>
            </product>
            <product key="PG2_P2">
              <title>Wooden Screw</title>
              <url>/construction/screw/PG2_P2</url>
              <release_date>2022-01-10T00:00:00Z</release_date>
              <description>Wooden screw with dimension 3,5x30mm</description>
              <images>
                <image>
                  <urls>
                    <url>//images/woodenscrew2.jpg</url>
                  </urls>
                </image>
                <!-- other images of wooden screw with size 3,5x30mm-->
              </images>
              <custom_attributes>
                <length>30 mm</length>
                <diameter>3,5 mm</diameter>
              </custom_attributes>
              <variants>
                <variant key="PG2_P2_V1">
                  <stock_number>100</stock_number>
                  <selling_price>6.50</selling_price>
                  <list_price>6.50</list_price>
                </variant>
              </variants>
            </product>
            <!--The other dimensions/sizes of the wooden screw as product and variant entities-->
          </products>
        </product_group>
      </add_or_replace>
    </product_groups>
  </modify>
</data_import>

Summary

When modeling the products into the Elevate 4 format, the following principles are recommended:

  • Identify the variations across the items, to determine how to model between product group and product.
  • Does the product title on the list page contain the size? If so, then the Homeware model example may be the best option, where the product group consists of products with the same size.
  • Is only one product from the same product group required on the list page? If so, then use the suppress_duplicates attribute for that group.
  • Consider the filtering / faceting options required on a list page. If there is more than one size entity required, such as diameter and length, then the DIY model example may be the best option, since custom attributes at product level are required.
×
Copyright

This online publication is intellectual property of Voyado Lund AB. Its contents can be duplicated in part or whole, provided that a copyright label is visibly located on each copy and the copy is used in conjunction with the product described within this document.

All information found in these documents has been compiled with utmost attention to detail. However, this does not guarantee complete accuracy. Neither Voyado Lund AB nor the authors shall be held liable for possible errors or the consequences thereof.

Software and hardware descriptions cited in these documents might be registered trademarks. All trade names are subject to copyright restrictions and may be registered trademarks. Voyado Lund AB essentially adheres to the manufacturer’s spelling. Names of products and trademarks appearing in this document, with or without specific notation, are likewise subject to trademark and trade protection laws and may thus fall under copyright restrictions.

CLOSE