Products are sellable items within your shop. Depending on your setup, Shopware can handle up to 10.000s of products, with some tweaks even beyond that. However, it depends on other factors like the number of categories, sales channels or product properties.
Let's start with the product data model
You can see, that besides their relation to categories, products can also link to a set of property group options.
Product properties can be modeled using property groups and -options. They can be displayed in a table on your product detail pages, in listings or even be used for filtering.
Exemplary property groups (e.g. for garments) are Size, Color or Material. The corresponding values of each group are referred to as property group options. A product can have arbitrarily many property group options.
Different variations of a product can be modeled using product variants. Products are a self-referencing entity, which is interpreted as a parent-child relationship. This mechanism is also used to model variants. Nicely this also provides inheritance between field values from parent products to child products.
However, next to the field inheritance, it is also useful to attach some additional properties to be able to differ product variants. For that reason, it is critical to understand the difference between properties and options:
Properties are used to model facts about a product, but usually different product variants share these facts. We can refer to properties as non variant defining. They could be useful to represent the following information:
- Product Series / Collection
- Washing Instructions
- Manufacturing country
Opposed to that options are considered variant defining, as they are the facts that differ from one product variant to another. Such as
- Shirt Size
- Color
- Container volume
It is important to understand the difference between those two, because both provide a relation between the product and the property group option entity, however only one constitutes to product variants.
When a variant product is loaded for a Store API-scoped request, Shopware assembles a configurator object which includes all different property groups and the corresponding variants. This way client applications, such as the Storefront or the PWA can display the different variant options of the product.