Every field, badge, filter, and permission on the products list and the product form — what each one means and where its value comes from.
On this page
Was this helpful?
Real help from real food people
Chef Diego runs a real food plant. If this page didn't get you there, tell us — a person reads every message.
You open Products to check whether the chicken thighs are running low. The row
reads Needs Reorder in amber, wears a Frozen tag, and carries a small
clock icon you'd half-forgotten setting. Every badge, column, and field on this
screen stands for something exact — this page is the map to all of them. A
is
described here, not counted; the lots you receive and make hold the stock. Open
Products under
Inventory to read along.
The products list
The list holds every product in the company you're working in, one per row. Four
controls sit above it:
Search by name or code — filters the list as you type, matching both the
product name and its code.
Product type, Category, and Storage type filters — narrow the list
to one product type (Goods, Service, or Combo), one category from
your own catalog, or one storage type (Dry, Frozen, or
Refrigerated).
Odoo sync filter — In sync or Out of sync, shown only alongside a
connected Odoo account.
Sort — by name, category, product type, or storage type, with a direction
toggle for ascending or descending.
A Clear all link appears once any filter, search, or sort is active and
returns the list to its default. When nothing matches, the list reads No
products found. Two actions sit in the top corner: New, to add a product by
hand, and Sync all with Odoo, to reconcile on-hand against a connected Odoo
account. Each shows only if your role carries the matching permission.
What each row shows
Reading a row left to right:
Name, with an Inactive badge beside it when the product has been
switched off. Its code and category read underneath, separated by a
dot.
Attribute icons — a muted row of hints for the product's settings: a
clock when it has a shelf life, an hourglass when it tracks expiry, a
shield when it needs QC approval, and a thermometer when it's
temperature-controlled. Point at any icon to read what it stands for.
Stock status — a badge and unit count that link to the product's stock by
location.
Odoo sync — the product's sync state, when it's linked to Odoo.
Product type — Goods, Service, or Combo.
Storage tags — one tag per storage type the product carries: Dry,
Frozen, or Refrigerated. A product can hold more than one.
A product row carries, on the right, its live stock-status badge, its product type, and a tag for each storage type.
Stock status
The stock-status badge reads the product's on-hand quantity against the minimum
stock level you set, and links to a panel listing every
on hand with its location, quantity, and
expiry. Three states:
In Stock — above the minimum. The normal, healthy state.
Needs Reorder — at or below the minimum. Shown only when you've set a
minimum stock level above zero.
Out of Stock — no units on hand, with no minimum pulling it into
Needs Reorder first.
Set a minimum to get a reorder flag
With no minimum stock level, a product only ever reads In Stock or Out of
Stock — it drops to zero without warning. Set a Min stock level on the
product's Stock & Control tab to earn the amber Needs Reorder badge
while there's still stock to reorder against.
Odoo sync status
When a product is linked to a connected Odoo account, its row shows how the two
systems compare; when it isn't, the column reads a plain dash.
In sync — Bettr's on-hand matches Odoo's.
Divergence — the two disagree, and the amount has drifted apart.
Not checked — the product is linked but hasn't been compared yet.
Running Sync all with Odoo rechecks every linked product; each row's badge
carries the time it was last checked. Connecting Odoo is a company setting — see
Connect Odoo.
A product's fields
Selecting a product — or New — opens a form of four tabs. Most fields are
optional; the six you must fill in yourself are marked (required) below. A few
others are required too but open with a sensible default you can keep.
General
Product name(required) — what the product is called; searchable.
Product code(required) — your own code for it; searchable, and shown
under the name on the list.
Category — a free label used by the category filter.
Product type — Goods for anything you physically make or buy,
Service or Combo for the rest. Opens on Goods.
Unit price (USD)(required) — the price you sell a unit for.
Description — free text.
Active — on by default; switch it off to retire a product without deleting
it.
Specifications
Net weight per case(required) and Weight unit(required) — the
measure behind a case, in Gram (g), Kilogram (kg), Ounce (oz), or
Pound (lb).
Units per case, Case type — Box, Pallet, Bag, Roll, or
Other — and Cases per pallet: the pack breakdown, each opening with a
default you can adjust.
Case description, Width, Length, Height, and Dimension
unit — the physical pack; a dimension needs its unit.
Ingredient list, Organic summary, Certifications, Sales taxes,
Country of manufacture, and Country of origin — the label and
provenance details, all optional.
Stock & Control
Cost (USD) — what a unit costs you.
Lead time (days) — how long an order of it takes to arrive.
Shelf life (days) and Shelf life at dock (days) — total shelf life and
the minimum you'll accept at receiving.
Min stock level (cases) and Max stock level (cases) — the reorder point
and the ceiling; the minimum drives the Needs Reorder badge.
Inventory tracking — By Quantity or By Lot Number.
Kitchen display unit — LB or Unit, the measure the kitchen weighs
it in.
Expiration tracking, Requires QC approval, and Requires certificate
of analysis — switches that decide whether lots carry expiry dates, pass
through QC, and need a
on file.
Allergens & Storage
Allergens — a checkbox for each of the nine major allergens: Milk,
Eggs, Fish, Crustacean shellfish, Tree nuts, Peanuts,
Wheat, Soybeans, and Sesame. Check every one the product contains.
Storage type(required) — Dry, Frozen, or Refrigerated. Pick
at least one; the product won't save without it, and each becomes a tag on the
list.
Max temperature and Temperature unit — the ceiling for a
temperature-controlled product; a temperature needs its unit.
Every save is a new version
Products are never overwritten. Each time you save, Bettr records a new version
of the product and keeps the old one, so the full history stays intact. See
How inventory works in Bettr for why the
catalog is kept this way.
Documents
Below the form, a product carries three independent document slots — a Spec
Sheet, a Safety Data Sheet, and an Organic Certificate. Each holds one
current file, uploaded on its own with no separate save step:
Upload File attaches a file; the button reads Replace File once the
slot is filled.
Each slot accepts a PDF, Word, Excel, image (JPG, PNG, or GIF), or text file of
up to 10 MB.
View opens the current file; Remove clears the slot back to empty.
Access to products is set per role, under Warehouse & Inventory in the
permission catalog:
View products — open the list and read any product. Without it, the page
redirects to an unauthorized notice.
Create products — shows the New button and lets you add products.
Edit products — lets you change fields and manage documents. Without it,
the form and document slots open read-only, with no Save.
Check Odoo stock sync — shows Sync all with Odoo and the per-row sync
action.
There is no delete
A product can't be deleted — there's no such permission, because removing one
would erase the lots and movements that point back to it. Switch Active
off instead: the product drops out of the pickers and pages you'd reach for it,
and its history stays whole.