A product in the shop used to be one row with exactly one number: 12 club gis. Which twelve was written down nowhere. Sell one over the counter and the 12 became an 11 — whether an A2 was still on the shelf or only A4s was known to the shelf alone. Anyone stocking several sizes created them as separate products and maintained the price, the image and the description three times over.
Attributes are something we have been working towards for a long time, and they are here now. Under Shop → Products you pick an attribute for a physical product, tick what you stock and enter the stock per value. One product, several values, each with its own stock.
Which attributes those are is up to you — and in a martial arts club they are rarely the same ones. A BJJ gi runs A0 to A5, a judogi in centimetres, a karategi likewise but on its own scale. The belt that goes with it is tracked by length and has nothing to do with belt rank. Gloves have a weight in ounces, shin guards run S to XL, shoes carry an EU number, and a rashguard comes in black and in blue. All of it goes under Settings → Shop as attributes of your own, with the values in your order.
Selling gains a second picker. It shows the stock behind each value, blocks whatever is not there, and refuses to submit until something is chosen — stock hangs off the value, after all.
- A price only where it differs — Leave the field blank and it reads "same", meaning the product's price applies. If an XXL gi costs five euros more, that is the only row you fill in
- Stock value adds up again — It is calculated value by value, so a pricier XXL is not counted at the standard price
- The size shows on the sale — "Club BJJ Gi (A2)" in the orders list and on the order card, instead of the product name alone
- Out of the range, not out of the history — Untick a value and it vanishes from every picker but stays on past sales
- What your club starts with — Clothing size, adult and kids gi sizes, belt length, glove weight, shoe size and colour are already there. Rename them, extend them, delete them: they are yours
- Rename rather than relearn — Gloves have a weight and not a size, so the picker is allowed to say "Weight"
- Retire values instead of deleting them — A value a member wears or a product stocks is only retired. Nothing is lost
The full reference is in the Omoplata Docs.