Categories
A category is what a product is - Beverages, Hot Drinks, Espresso. Categories are the backbone of your catalog: they are the menu structure at the register, the navigation on your storefront, and the grouping every sales report falls back on.
Menu path: Inventories > Categories

How the category tree works
Categories are hierarchical. Each one may have a Parent, which is what builds the tree, and the list shows how many children and how many products each category holds - the fastest way to spot a branch nobody is using or a category quietly holding half your catalog.
Each category carries:
| Field | Purpose |
|---|---|
| Name (Arabic and English) | What staff and customers read |
| Code | Your internal reference, useful for imports and reconciliation |
| Parent | Position in the tree |
| Image and Arabic image | The tile shown in menus and on the storefront; a separate Arabic image lets you localise text baked into artwork |
| Slug | The category's address on your storefront |
| Position / Sortable | Display order among siblings |
| Visibility | Which channels the category appears in - store, POS, mobile app |
| SEO block | Meta title, description and keywords, plus Open Graph title, description, image and site name |
Visibility is the field that surprises people. A category can exist for your team without appearing online: switch off the store and mobile channels and it becomes a back-office grouping only, which is exactly what you want for categories like "Damaged" or "Staff purchases".
Build a category structure
- Create the top level first - the four to eight groups a customer would name unprompted.
- Add children only where a parent genuinely has enough products to justify browsing. Two levels is usually right; three is the practical limit before customers get lost.
- Set the image and the position so the menu reads in a sensible order rather than alphabetically by accident.
- Fill the slug and SEO fields for anything visible online - the category page ranks for exactly the searches you care about.
- Set visibility per channel, then save and assign products.
Full reference
Every option and control on this page, at a glance.
Filters (7)
- Identity and numbering: Category ID, Parent ID, Pickup rule ID
- Dates and periods: Last date
- Products and stock: With products count
- Status and flags: Active shop
- Other: Name
Form fields (14)
Code, Image, Image ar, Name, Parent ID, Postion, SEO data - meta description, SEO data - meta keyword, SEO data - meta title, SEO data - og description, SEO data - og image, SEO data - og site name, SEO data - og title, Slug
Record actions
- Delete
Sortable columns
ID, Name
Standard list tools
Every list page in OSOSS shares these controls:
- Manage columns - the icon at the right edge of the header row: search columns, tick to show or hide, drag to reorder. Your selection persists for your user.
- Quick search - matches the page's primary field.
- Filter chips + More Filters - the chips are your defaults; More Filters exposes the full set below.
- Save Filter / Saved Filters - name a filter combination and recall it in one click; one can be your default view.
- Reset - clears filters back to defaults.
- Export All - downloads the current filtered rows with exactly the columns you have selected.
- Focus - hides the surrounding chrome for a full-width table.
- Row selection - the header checkbox selects the page or all matching rows, enabling bulk actions.
- Rows per page and page jumper - at the foot of the table.
- Custom fields - anything you define under Settings > Custom Fields appears here as both a column and a filter.
Related pages
- Products - where categories are assigned
- Brands - the who-made-it axis
- Rewrite URL - redirects after a slug change
What you can do on this page
Every action on this page, step by step. What you see depends on your role, so a control your account is not set up for simply does not appear.
Add a record
- Click Add above the table - some pages label it New or show a + icon.
- Complete the form. Required fields carry a red asterisk and the form will not submit until they are filled.
- Click Save. Validation runs on submit; any field that fails shows its message directly beneath itself, and the form scrolls to the first problem.
- You land back on the list with the new record in place.
Fields on this form: Code, Image, Image ar, Name, Parent ID, Postion, SEO data - meta description, SEO data - meta keyword, SEO data - meta title, SEO data - og description, SEO data - og image, SEO data - og site name, SEO data - og title, Slug
Edit a record
- Open the row's actions menu at the end of the row and choose Edit, or open the record and use Edit there.
- The form loads with current values. Change only what you need.
- Click Save.
Open and read a record
- Click the row, or choose View in the row's actions menu.
- The detail page shows the record's own fields, its related documents, and the actions that apply to it in its current state.
- Use the breadcrumb or your browser's back button to return - your filters, sort, and page position are preserved.
Delete a record
- Open the row's actions menu and choose Delete.
- Confirm in the dialog. There is no undo from the interface.
- If the record is referenced elsewhere - used on a document, tied to a transaction - the delete is refused and the reason shown.
Actions on a single record
These appear in the row's actions menu and on the record page, and only when the record's current state allows them:
- Delete - removes the record, subject to the reference check above.
Export the list
- Filter and choose your columns first - the export mirrors exactly what is on screen, not the whole table.
- Click Export All.
- The file downloads as a spreadsheet: one row per record, your visible columns in your order.
Import records
- Click Import.
- Download the template if one is offered - its headers are exactly what the importer expects.
- Fill the template, upload it, then map each of your columns to an OSOSS field.
- Read the validation result: every failing row is listed with its reason. Fix the source and re-upload, or import only the passing rows.
- Confirm. Nothing is written to your account before this step.