> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fire.rest/llms.txt
> Use this file to discover all available pages before exploring further.

# Station categories

> Give each product a routing category and a kitchen thumbnail so the line lands on the right station.

Routing matches order lines by `item_type`. If the product has no station category, the line misses the mapping and falls to the default station — burgers on the fryer, drinks on the grill. If the thumbnail does not match what the cook sees, they pick the wrong item.

This page is **KDS → Station categories**. It is the account catalog of codes (`BEVERAGE`, `FRIES`) that routing mappings use. You do not create stations here.

<Note>
  **The minimum you need to know**

  * Create the **code** once. It cannot change. Routing mappings refer to that code.
  * On the category **View** page, **Add product** and attach a thumbnail so the kitchen card looks like the plate.
  * First match in [Routing](/en/manuals/kds/routing) wins. A product without a category uses fallback, not a guess.
</Note>

## The simple path

<Steps>
  <Step title="Open Station categories">
    Go to **KDS → Station categories** (`/kds/admin/station-categories`).
  </Step>

  <Step title="Create a code">
    Click **Create category**. Enter a **Name** (e.g. Beverages) and a **Code** (`BEVERAGE`). Letters, numbers and `_` only. Click save.
  </Step>

  <Step title="Assign products">
    Open **View**. Click **Add product**, search by name or PLU, and tap each product. You can add several without closing the dialog.
  </Step>
</Steps>

<Frame>
  <img src="https://mintcdn.com/firepos/3pCLDH_UKdnlMynk/images/manuals/kds/station-categories/01-list.png?fit=max&auto=format&n=3pCLDH_UKdnlMynk&q=85&s=9920fb20e7c64ace46dd73c218ea8032" alt="Station categories list with codes used by product routing" width="2940" height="1912" data-path="images/manuals/kds/station-categories/01-list.png" />
</Frame>

<Tip>
  If you only have one production station and empty mappings, categories still help later. You can stop after creating the codes you will map.
</Tip>

## List vs view

| Screen   | What you do                                                        |
| -------- | ------------------------------------------------------------------ |
| **List** | Search, create, edit the display name, delete.                     |
| **View** | See products in this category, add or remove them, and set thumbs. |

<Frame>
  <img src="https://mintcdn.com/firepos/3pCLDH_UKdnlMynk/images/manuals/kds/station-categories/02-category-products-thumbs.png?fit=max&auto=format&n=3pCLDH_UKdnlMynk&q=85&s=e71df62e80e4b3ea3a94906352812216" alt="Station category view with assigned products and kitchen thumbnails" width="2940" height="1912" data-path="images/manuals/kds/station-categories/02-category-products-thumbs.png" />
</Frame>

**Edit name** changes only the label operators see in the backoffice. The **Code** stays the routing id.

## How this feeds routing

1. The product carries the category code as its `item_type`.
2. The active [routing strategy](/en/manuals/kds/routing) looks for a mapping of that code to production stations.
3. First matching mapping wins. No mapping → **fallback**.
4. Station rules can still reject the line after that.

Do not duplicate category CRUD on the [Stations](/en/manuals/kds/stations) page. Stations consume these codes; they do not own them.

## Recipes

<AccordionGroup>
  <Accordion title="Split grill and fryer">
    1. Create `BURGER` and `FRIES`.
    2. On each **View** page, add the matching products.
    3. In **Routing → Mappings**, map `BURGER` → grill and `FRIES` → fryer.
    4. Leave drinks unmapped only if fallback is the right station.
  </Accordion>

  <Accordion title="A product that must not go to the hot line">
    1. Put it in `BEVERAGE` (or create that code).
    2. Map `BEVERAGE` to the cold station, or exclude it in the grill **station rules**.
    3. Confirm a test order: the drink must not appear on the grill.
  </Accordion>

  <Accordion title="Fix a wrong thumbnail">
    1. Open **View** on the category.
    2. Find the product and replace the thumb.
    3. The next ticket shows the new image. A stale thumb is how cooks bump the wrong line.
  </Accordion>

  <Accordion title="Delete a category you no longer use">
    1. Confirm no mapping still points at that code.
    2. **Delete**. Products keep existing; they lose the category link (`SET NULL`).
    3. Those products now route by fallback until you assign another category.
  </Accordion>
</AccordionGroup>

## Worked example

| Product        | Category code | Mapping            | Where the line goes |
| -------------- | ------------- | ------------------ | ------------------- |
| Classic burger | `BURGER`      | `BURGER` → `GRILL` | Grill               |
| Fries regular  | `FRIES`       | `FRIES` → `FRY`    | Fryer               |
| Soda 500       | *(none)*      | —                  | Fallback station    |

## Errors that cost money

<Warning>
  **Product without a category.** Routing cannot match `item_type`. The line hits fallback. In a multi-station kitchen that is the wrong cook.
</Warning>

<Warning>
  **Thumbnail that does not match the plate.** The cook strikes the wrong parent line. Strike-before-bump then blocks the real item or bumps the ticket too early.
</Warning>

<Warning>
  **Renaming in your head after create.** The **Code** is frozen. If you typed `BEBIDA` and mappings say `BEVERAGE`, nothing matches. Create the correct code and move the products.
</Warning>

<Warning>
  **Delete while mappings still use the code.** Products lose the link. Lines that used to hit a mapping fall to fallback until you fix both sides.
</Warning>

## Glossary

| Term            | Meaning                                                     |
| --------------- | ----------------------------------------------------------- |
| **Code**        | Stable `item_type` id (`BEVERAGE`). Immutable after create. |
| **Name**        | Label in the backoffice. Safe to edit.                      |
| **View**        | Page where you assign products and thumbs.                  |
| **First match** | First routing mapping for that `item_type` wins.            |

## FAQ

<AccordionGroup>
  <Accordion title="Can I change the code later?">
    No. Create a new category and move the products. Then update the routing mapping.
  </Accordion>

  <Accordion title="Does deleting a category delete the products?">
    No. Products stay. They lose the category link and route by fallback.
  </Accordion>

  <Accordion title="Where do I map the code to a station?">
    In [Routing](/en/manuals/kds/routing), not on this page.
  </Accordion>

  <Accordion title="Why does the kitchen still show the old photo?">
    Replace the thumb on **View**. Cached tickets already on screen keep the image they loaded.
  </Accordion>
</AccordionGroup>

## What this page does not do

* It does not create stations or screens.
* It does not pick distribution (`ALL`, `ROUND_ROBIN`). That lives in routing.
* It does not assign which monitor shows which station. See [Screens](/en/manuals/kds/screens).
