> For the complete documentation index, see [llms.txt](https://docs.rmhpos.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rmhpos.com/store-manager/manage-items/matrix-items/understanding-matrix-items.md).

# About matrix items

A **matrix item** is a product that has the same basic properties but is sold with multiple variations. For example, a store that sells clothing might create a matrix item for t-shirts that vary in size, color, and collar style. Similarly, a grocery store that sells "bake at home" pizzas might create a matrix item for pizzas that vary in size, crust, and toppings.

You can define up to three **dimensions** for a matrix item. Within each dimension you can define several **attributes**. For t-shirts, you might define dimensions like size, color, and collar style. For the size dimension, you might define size attributes such as extra large, large, medium, small, and extra small. Similarly, for the color dimension, you might set up color attributes such as white, black, gray, red, and blue, and for the collar style dimension, you might set up collar style attributes such as crew neck, v-neck, scoop neck, and polo neck.

<table><thead><tr><th valign="top">Dimension:</th><th valign="top">Size</th><th valign="top">Color</th><th valign="top">Collar Style</th></tr></thead><tbody><tr><td valign="top">Attribute:</td><td valign="top">Extra Large</td><td valign="top">White</td><td valign="top">Crew Neck</td></tr><tr><td valign="top">Attribute:</td><td valign="top">Large</td><td valign="top">Black</td><td valign="top">V-Neck</td></tr><tr><td valign="top">Attribute:</td><td valign="top">Medium</td><td valign="top">Gray</td><td valign="top">Scoop Neck</td></tr><tr><td valign="top">Attribute:</td><td valign="top">Small</td><td valign="top">Red</td><td valign="top">Polo Neck</td></tr><tr><td valign="top">Attribute:</td><td valign="top">Extra Small</td><td valign="top">Blue</td><td valign="top"></td></tr></tbody></table>

RMH automatically creates multiple **component items** based on the dimensions and attributes you define for the matrix item. For example, RMH would create 100 component items based on the t-shirt dimensions and attributes defined in the table above, e.g. Extra Large White Crew Neck, Extra Large White V-Neck, Extra Large White Scoop Neck, Extra Large White Polo Neck, etc.

You can save dimensions and attributes and reuse them in different matrix items. For example, a store that sells clothing might save the size dimension and attributes and reuse them for other types of clothing that use the same dimension and attributes, such as dress shirts or jackets. Each saved dimension (and attributes) is known as a **dimension set**.

Each attribute must be assigned a **code**. For example, for the size dimension, the attributes extra large, large, medium, small, and extra small would typically be assigned the codes XL, LG, MED, SM, and XS. The matrix lookup code is combined with the attribute codes to create the item lookup codes of the component items. You have the option to use a separator character, such as a dash, between the matrix lookup code and the attribute codes to make the item lookup codes easier to read, e.g., TSHIRT-XL-WHT-CRW. Item lookup codes can contain a maximum of 25 characters. You should ensure that the matrix lookup code, optional separator character, and attribute codes total 25 characters or less. Longer item lookup codes will be truncated.

When you create a matrix item, you can select a **department**, **category**, **item tax**, **supplier**, and **barcode** type. These matrix item properties are automatically assigned to the component items when they are created. If you want to change these properties in the component items, the best practice is to update the matrix item. When you save the matrix item, you have the option to update the properties of the component items to match the matrix item.

You can also enter a **price** and **cost** for the matrix item. The matrix item price and cost are automatically assigned to the component items when they are created. If you want to change the price or cost for all component items, the best practice is to update the matrix item. When you save the matrix item, you have the option to update the price or cost of the component items to match the matrix item. However, if you only want to change the price or cost of specific component items, you will need to make the change directly to the relevant component items. For example, if a store creates a matrix item for t-shirts and enters $15.99 as the matrix item price, this price is automatically assigned to all component items. However, the store might want to charge $16.99 for extra large t-shirts and $14.99 for extra small t-shirts. They would need to change the prices of those specific component items manually, or use **Task 110: Change Item Prices** in the **Advanced Item Wizard** to change the prices.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.rmhpos.com/store-manager/manage-items/matrix-items/understanding-matrix-items.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
