Products Module
Managing Products
How to build your product and service catalog — pricing, tax codes, a basic stock count, and variants like size or color. This is the catalog that Inventory’s warehouse tracking, and pickers elsewhere in the app, pull from.
Start here
1Add a product or service
In Products, click + Add Product. It’s a single form — no wizard steps.
| Field | Notes |
|---|---|
| Name | Required — the only field the form actually enforces. |
| Type | Product, Service, or Bundle. See Type reference. |
| SKU | Leave blank and one is generated from the name automatically (and kept unique across your whole catalog, including variants). |
| Category, Brand | Pick an existing one or type a new one — either creates it. Left blank, they default to “General” and “Internal.” |
| Unit | Each, Hour, License, Month, Pack, Unit, or your own. Defaults to “Each.” |
| Tax Code | Defaults to TAX-STD if left blank. |
| Status | Active, Draft, or Archived — see Status reference. |
| Barcode | Optional. |
| Description | Optional, free text. |
| Photo | Optional image upload. |
Click Save Product. Currency is set automatically from your active company’s currency — it isn’t a field you choose per product.
2Set pricing & stock tracking
Right below the main fields:
| Field | Notes |
|---|---|
| Sale Price, Cost Price | Used to compute Margin automatically — (Sale − Cost) / Sale — shown wherever the product’s margin is displayed. Margin is calculated fresh on every read, not stored. |
| Track Stock | Toggles whether this product carries a stock count at all. |
| Stock On Hand, Reorder Level | Only meaningful when Track Stock is on. A flat, single number on the product record — not tied to any particular warehouse. |
Stock On Hand here is a simple flag-and-number on the product itself, useful if you don’t need multiple storage locations. The Inventory module tracks stock per warehouse with a full movement history, and the two don’t sync with each other — updating one doesn’t update the other. If you need real multi-warehouse tracking, use Inventory’s own items and adjustments instead of this field.
3Add variants
For products that come in options — size, color, edition — turn on Has Variants and list the attribute names that define them (e.g. “Color”, “Size”). Then add a row per variant:
- Attributes — the specific value for each attribute name (e.g. Color: Blue, Size: Large).
- Label — optional; if left blank it’s built automatically from the attribute values (e.g. “Blue / Large”).
- SKU — optional; auto-generated from the parent SKU and the variant’s label if left blank, and deduplicated with a numeric suffix if it collides with anything else in your catalog.
- Sale Price, Cost Price, Barcode, Status — each variant has its own; they don’t inherit the parent’s automatically.
- Track Stock, Stock On Hand, Reorder Level — also independent per variant. Once a product has variants, its own top-level stock fields stop being used for stock counting — each variant tracks itself.
Click Save Product. If you turn on Has Variants but don’t actually add any variant rows, it’s silently treated as a regular non-variant product.
Common tasks
Selling a service instead of a physical item
Set Type to Service and leave Track Stock off. Nothing in this module stops you from tracking stock on a service, but nothing needs it either — services aren’t counted toward stock-related KPIs like Low Stock or Out of Stock the way products are.
Retiring a product you no longer sell
Open the product and set Status to Draft or Archived, then save. Both simply drop it out of the “Active Products” count — there’s no separate functional difference between the two encoded in this module; use them however your team finds meaningful (e.g. Draft for “not ready yet,” Archived for “discontinued”).
Fixing a duplicate or wrong SKU
SKUs must be unique across your entire catalog for a company — including every variant of every product. If you type one that’s already taken, saving keeps it unique for you by appending a numeric suffix. To let the system generate a clean one instead, just clear the SKU field and save; it rebuilds a fresh one from the product’s name (or the parent SKU and label, for a variant).
Reference
Type & status reference
Type
| Type | Meaning |
|---|---|
| Product | A physical item. Can track stock. |
| Service | Something you sell without shipping a physical item. |
| Bundle | Available as a label, but this module doesn’t itself track what a bundle is made of — there’s no components list here. |
Status
| Status | Counts as “active”? |
|---|---|
| Active | Yes — counted in the Active Products KPI. |
| Draft | No. |
| Archived | No. |
What this module doesn’t do
This module’s own Stock On Hand/Reorder Level fields (on the product or each variant) are separate numbers from the per-warehouse item records tracked in Inventory. Neither updates the other automatically.
Sale Price and Cost Price are simply overwritten on every save — there’s no historical record of what a product used to cost or sell for, unlike HR’s compensation history.
Setting Type to Bundle is just a label — this module doesn’t track or compute what products/services make up a bundle.