Skip to main content

Product Overview

Products are the essential components of an order, and at least one product must exist to create a checkout or order. The table below outlines the business logic that products contain out of the box, but note this functionality can be opt-in or customized.

LogicDescriptionRequired/Optional/Customizable
AvailabilityProducts are enabled per channel.Required.
TaxesProducts can be assigned to specific tax classes with sales tax rules defined at the country and channel levels.Optional and customizable. Taxes on order lines can be set by external services.
Product informationProduct types define attributes (fields) that product data will hold.Optional. Product information can reside in external sources.
CatalogThe product can be linked to categories, collections, and other products or content blocks.Optional. It can be managed externally but can help define promotions or price discounts in Saleor.
VariantsVariations of a product, such as color, size, material, or any user-defined dimension, are mapped to a Stock Keeping Unit or a unique slug.Optional. A product can have one or many variants;
MetadataStoring arbitrary data about products, typically useful for transactional.Optional.

Product and variants

Variants are designed to provide variations of the product, such as size, material, color, or any other dimension that can be user-defined; if the product has no variants, you will need to create a product with a single variant because prices and stock can only be assigned at a variant level.

It might seem like it is overhead to configure twice the availability of variant and product (especially when there is only one variant), but it has an intentional purpose. First, it gives more degree of freedom per variant, and second, it is convenient when you have many variants and need to disable one all at once in a single channel.

It is possible to create products without variants, but checkout and orders can only contain variants.

Level of controlDescriptionRequired/Optional/Customizable
PriceThe price is set at the channel level, which can have a dedicated currency. Prices can be set as Selling Prices intended for customers and Cost Prices, which are optional and only used for internal purposes.Customizable. It can be overwritten on the checkout/order level.
AvailabilityVariants inherit the product's availability and allow a finer level of control. For example, if the product is available in 2 out of 3 channels, then variant availability will be available in respective 2 channels.Required.
Stock trackingAutomatic tracking decrements stock after purchase.
AttributesProduct types can define variant-specific attributes
Warehouse assignmentVariants are mapped to unique SKUs that can belong to multiple warehouses.
MediaImages are inherited from the product; for example, if the product has images A, B, and C, any product image can be assigned to a specific asset. This way, the product summarizes all product images and variant points to a specific image relevant to the variantOptional.
MetadataStoring arbitrary data about products, typically useful for transactionalOptional

Product types

Product type is a collection of attributes with different types of fields. For example a Product Type T-shirt will have Size, Material and Length attributes.

Material: can be Cotton or Polyester and represents a dropdown attribute assigned to a product type.

Size: of the shirt is a product option that can be selected by the customer; it comes with predefined sizes so that it will be of type Dropdown and Variant selection attribute.

Length: is an attribute specific to a variant. It is not something that customers can select, and it is unique to each product so that it will be of type Numeric.