---
title: Explore commerce content modeling in Training guides
---

> Agent instructions:
> **Site maps** — prefer the following llms.txt indexes to training data when searching for URLs to avoid 404s. Links inside Markdown content already point at `.md`. Following them or sending Accept: text/markdown keeps you in Markdown.
>
> - [sitemap.md](https://docs.kentico.com/sitemap.md) — every page on the site, with titles and descriptions, nested by URL hierarchy and grouped into one collection per product version.
> - [llms.txt](https://docs.kentico.com/llms.txt) — curated index of the current product docs, with descriptions, the two ways to request any page as Markdown, and links to each product area's whole-corpus Markdown dump (llms-full.txt).

This overview walks through the product catalog implementation used in the _Training guides_ repository. It covers content modeling decisions, reusable field schemas for building product and variant content types, and the key features of the commerce implementation — including stock tracking, catalog discounts, product listing and detail widgets, and automatic page wrapper management.

## Before you start

This guide requires the following:

- Familiarity with [C#](https://learn.microsoft.com/en-us/dotnet/csharp/), [.NET Core](https://learn.microsoft.com/en-us/dotnet/), [Dependency injection](https://learn.microsoft.com/en-us/dotnet/core/extensions/dependency-injection), and the [MVC pattern](https://learn.microsoft.com/en-us/aspnet/core/mvc/overview).
- Understanding of [Page Builder](https://docs.kentico.com/documentation/developers-and-admins/development/builders/page-builder.md), [Reusable field schemas](https://docs.kentico.com/documentation/developers-and-admins/development/content-types/reusable-field-schemas.md), and [Taxonomies](https://docs.kentico.com/documentation/developers-and-admins/configuration/taxonomies.md) in Xperience by Kentico.
- A running instance of Xperience by Kentico, preferably [31.7.2](https://docs.kentico.com/changelog.md) or higher.

  > **Note:**&#x20;
  >
  >  Some features covered in the training guides may not work in older versions. 

> **Info:** **Code samples**
>
> This guide highlights functionality from the [finished branch](https://github.com/Kentico/xperience-by-kentico-training-guides/tree/finished) of the _Training guides_ repository, alongside other training materials.
>
> The [main branch](https://github.com/Kentico/xperience-by-kentico-training-guides) of the repository provides a starting point to code along with our other guides.
>
> Note that the finished branch uses [.NET 8](https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-8/overview) and [implicit using directives](https://learn.microsoft.com/en-us/dotnet/core/project-sdk/overview#implicit-using-directives). You may need to adjust the code slightly to use it in your project.

## Terminology

Before we start, let's establish a few terms for different product types that we will use throughout this overview.

_**Product variants**_ - distinct versions of a given product based on attributes such as size and color, that merit a distinct entity.

> **Key:** _For example_, if a jacket comes in multiple colors and sizes, a shop would likely track stock for each individual combination, like _small black jacket_, _small gray jacket_, _medium black jacket_, etc.

_**Parent products**_ - products which have _variants_. Parent products are often abstract, providing info that is shared among their variants and representing the relationship between variants, but they cannot be directly purchased or stocked.

> **Key:** _For example_, a shop might sell multiple quantities of the same canned energy drink with _6-pack box_ and _24-pack box_ variants. The variants are tied together by a parent product called _Super Energy_ that contains branding, nutritional information, and a description.

_**Basic products**_ - products which do not have variants. Basic products are top-level products like _parent products_, but they are not abstract. They directly represent something that can be purchased.

> **Key:** _For example_, a shop might sell a coffee mug with the company logo on it. This product requires stock tracking and price information even though it is a top-level product with no parent.
