Skip to main content

How a menu is structured

An OrderUp menu is a tree, not a flat list. Understanding the tree is worth ten minutes, because the same item can legitimately cost different amounts depending on where a guest reaches it from — and that is a feature, not a bug.

The four building blocks

BlockWhat it isExample
Menu groupA container. Can hold items and other groups.Lunch, Drinks, Happy Hour
ItemA thing a guest can order.Cheeseburger
Modifier groupA question asked about an item.How do you want it cooked?
ModifierOne answer to that question.Medium rare

Groups nest. Drinks → Beer → Draft is three levels, and Draft can hold items, more groups, or both.

Why nesting matters for price

When the POS needs a price, it walks from the top group down to the item and takes the first price rule it meets on the way. It does not search the whole menu and pick the cheapest or the most specific — it walks the path the guest actually took.

That is what lets one Cheeseburger be:

  • $14 under Dinner
  • $11 under Lunch
  • $8 under Happy Hour

…without three copies of the item. One item, three paths, three prices.

The path is the price

Because price follows the path, an item reached by a different route can be a different price. If a guest gets an unexpected total, the first question is not "what is this item's price" but "which group did the till walk through to reach it".

Sub-group overrides

Sometimes you need one group to treat a shared sub-group differently — the same Sides group offered under both Lunch and Dinner, but priced and displayed differently in each. That is a sub-group override: it attaches to the relationship between a parent and a child, not to the child itself.

Overrides beat group pricing, which beats the item's own price. Full precedence:

  1. Sub-group override — most specific, always wins
  2. Menu group pricing strategy — the first one on the path that is switched on
  3. The item's own price — the fallback

What this means when you edit

  • Changing an item's base price only affects paths where no group above it sets a price. If a group overrides it, nothing visibly changes — which reads exactly like a broken save.
  • Moving an item between groups can change its price, because it changes the path.
  • Adding a group above an existing one inserts a new opportunity for a price rule to win.

Next