Skip to main content
Product categories in Odoo Inventory let you organize your products into a structured, hierarchical system that drives costing, accounting, and logistics behavior. Categories follow a parent–child tree structure, meaning each category can belong to a parent and have multiple children beneath it. There are two methods for creating and managing categories: the Product Category Import Template, which is best for loading large numbers of categories at once, and the Odoo UI, which offers a visual, step-by-step experience suited for small adjustments.

Category Structure

Categories are organized in a tree-like hierarchy with unlimited nesting levels. A top-level (Level 1) category has no parent, while each child category references the category directly above it. This structure keeps your product catalog clean and makes it easy to apply shared settings — such as removal strategies or accounting properties — at a category level that cascades to its children. Here is an example of a three-level hierarchy:
Odoo represents the full path to any category using the separator. For example, the Monitors category is displayed as:
This full path is what you will see throughout Odoo’s UI when selecting or filtering by category.

Setup Methods

The Import Template method is recommended when you are performing an initial implementation or loading a large number of categories at once. It is faster and less error-prone than creating categories one by one through the UI.

Template Worksheets

The Product Category Import Template contains four worksheets — one for each hierarchy level. Each sheet must be completed before importing.

Columns

Each worksheet uses the following columns:
  • Name – The category name as it will appear in Odoo.
  • Parent Category – The category directly above this one in the hierarchy. Not used on Level 1 sheets.
  • Force Removal Strategy – Optional. Defines how stock is removed from this category (e.g. FIFO, LIFO, FEFO).

Level 1 Example

Level 1 categories have no parent, so only the Name and optional Force Removal Strategy columns are needed.

Level 2 Example

Level 2 categories reference their Level 1 parent by name in the Parent Category column.

Level 3 Example

Level 3 categories reference their parent using the full path in Level1 / Level2 format.
For Level 3 and Level 4 categories, the Parent Category column must use the full path format: Level1 / Level2 (e.g. Products / Hardware). Using only the immediate parent name will cause an import error if that name is not unique across the template.
Prepare and review all four level sheets before importing any of them. Start from Level 1 and work downward — Odoo must be able to resolve each parent reference before a child category can be created.

Force Removal Strategy

The Force Removal Strategy field controls the order in which stock is picked or removed from inventory for categories that require it. Setting this at the category level applies the strategy to all products in that category unless overridden at the product or lot level.
FEFO requires expiration date tracking to be enabled on your products. Navigate to Inventory → Configuration → Settings and enable Expiration Dates under the Traceability section before using this strategy.