Skip to main content

Items dashboard

Item-level performance: top and bottom sellers, movers, per-item drill-down, new-item ramp, menu item groups, and option performance.

Written by HB

What this dashboard is for

The Items dashboard answers which items sell, which don't, and which ones moved recently. It is your menu's report card.

Open it when you are pricing, deciding what to cut, planning a menu refresh, or trying to understand whether a new item has legs.

The six tabs

  • Overall — three KPIs at the top, the revenue Pareto, top/bottom 20 items, and a movers list.

  • Per Item Snapshot — click an item in the picker at the top of the tab to drill into one item: channel mix, hour-of-week heatmap, what it's ordered with, top options.

  • Per Item Historical — same picker, but four time scales of revenue and quantity for one item (Weekly, Monthly, Yearly, Daily).

  • New Items — items that had their first sale in the last 30 days, with week-by-week ramp.

  • Menu Item Groups — quantity rollups that combine an item sold individually with the same item sold as part of a "menu item group" (combo / set menu) sub-order.

  • Options — option-group and individual-option performance across all items.


Overall tab

1. Total items sold

Total items sold

Sum of order_items.quantity across confirmed items on closed orders for the selected range.

2. Distinct items sold

Distinct items sold

Number of distinct menuItemId values that appeared at least once. A higher number means more breadth on what is selling.

3. % of menu utilized

% of menu utilized

What share of your menu actually sold in the range. The denominator is your outlet's own menu — the base menu assigned to the outlet (with sensible fallbacks for outlets migrated from older setups). The result is capped at 100%, since the range can include items that sold and were later removed from the menu

Reading it: if this is below 60%, a big chunk of your menu isn't earning its keep. That is the kind of thing the Movers list and the bottom-20 table help you confirm.

4. Items Pareto — revenue concentration

Items Pareto revenue concentration

Bars are each item's revenue, sorted descending. The line on top is the cumulative share of total sales as you walk left-to-right across the items.

Reading it: if the cumulative line hits 80% after only 5 items, you are extremely dependent on a tiny number of dishes; if it takes 40, the menu is broad and balanced. Either pattern has implications for prep planning.

5. Top 20 items

Top 20 items table

The 20 best sellers by revenue in the range, with quantity sold and revenue.

6. Bottom 20 items

Bottom 20 items table

The 20 worst sellers by revenue (with at least one sale). Candidates for cutting, repricing, or photographing better.

7. Movers & Shakers — last 4 weeks vs prior 4 weeks

Movers and Shakers

The biggest absolute movers in quantity between two windows: the last 4 weeks vs the 4 weeks before that. Items must have had at least 10 units in the prior window to qualify (so the % change is meaningful).

Columns: prior 4-week quantity, recent 4-week quantity, absolute change, percentage change. Sorted by absolute change so the rows at the top are the ones that moved the most in either direction.

How it's calculated: a rolling 8-week window ending today. Recent = last 4 weeks. Prior = the 4 weeks before that. The threshold of 10 in the prior window filters out items that swung from "tiny to small" — those would have huge % changes for the wrong reason.


Per Item Snapshot tab

This tab starts with a picker table at the top. Click any item row to filter every chart below to that single item; click again to clear. The screenshots below show the charts with no item selected, so they aggregate across the whole menu — once you click an item, each chart will show just that item.

1. Channel mix — quantity & revenue

Channel mix per item

For the filtered item: how many units sold on each channel and how much revenue each channel produced.

Reading it: useful for spotting a dish that's a dine-in star but a delivery dud (or vice versa). A heavy partner skew might suggest the dish travels well; a heavy dine-in skew means you might lose it if you push it on delivery.

2. Avg quantity per occurrence — Hour × Day-of-Week

Hour x Day-of-Week heatmap

A 24×7 heatmap showing the average quantity of this item sold per hour, by day-of-week.

How it's calculated: total quantity sold in each (hour, weekday) cell, divided by the number of distinct dates that contain that weekday in the selected range. So a value of "2.3" in the Tuesday 13:00 cell means an average of 2.3 units of that item between 1pm and 2pm on the Tuesdays in the range — not a single big day.

Reading it: identifies time-of-day patterns. A dish that's only ordered Friday and Saturday evenings might be worth featuring only on those dayparts; one that sells flat through the week is a daily staple.

3. Often ordered together

Often ordered together

The top 10 other items that appear in the same cheque as the filtered item, sorted by number of co-occurrences.

How it's calculated: we find every order that contained the filtered item, then count how often each other item appears in those same orders. A drink that shows up next to most main courses is your "natural pairing"; an unexpected pairing might be a marketing opportunity.

4. Top option groups & options

Top option groups

For the filtered item: the option groups attached to it (e.g. "Spice level", "Add-ons") and the most-chosen options inside each group.


Per Item Historical tab

Same picker at the top. The four charts below show how the filtered item's revenue and quantity have moved over time at four scales. The screenshots show the unfiltered (all-items) view.

1. Revenue | Weekly

Item Revenue Weekly

2. Quantity | Weekly

Item Quantity Weekly

3. Revenue | Monthly

Item Revenue Monthly

4. Quantity | Monthly

Item Quantity Monthly

5. Revenue | Yearly

Item Revenue Yearly

6. Quantity | Yearly

Item Quantity Yearly

7. Revenue | Daily

Item Revenue Daily

8. Quantity | Daily

Item Quantity Daily


New Items tab

1. New items — first sale within last 30 days

New items table

Every menu item whose first-ever sale at this outlet was in the last 30 days. For each one we show total quantity to date and the quantity sold in each of the first four weeks since launch (W1, W2, W3, W4).

Reading it: the W1 → W4 trajectory tells you whether a new item has stickiness. A spike-and-fade pattern (big W1, falling after) suggests novelty-driven and worth a rethink; a steady or growing curve is a sign the item is finding its audience.

How it's calculated: for every distinct menuItemId, we take the minimum reportingDate. If that first date is within the last 30 days, the item qualifies. The W1–W4 buckets are calendar windows from that first-sale date forward.


Menu Item Groups tab

Menu item groups are combos / set menus — one POS line item that contains several sub-items (a burger combo with a side and a drink, for example). The charts on this tab show combined quantities: the same item sold individually plus the same item sold as part of any combo. This is the most accurate count of "how many units of the item actually left the kitchen".

1. Overall Quantity | Individually + Menu Item Group

Overall Quantity Individually + Menu Item Group

Total quantity per item, across the whole range, combining standalone and combo sales.

How it's calculated: for line items that are not combos (subOrderItems empty), we take the line's quantity. For combo line items (subOrderItems non-empty), we expand the JSON sub-items, multiply each sub-item's quantity by the parent line's quantity, and credit the sub-item's name. The two streams are summed.

2. Daily Quantity | Individually + Menu Item Group

Daily Quantity Menu Item Group

3. Weekly Quantity | Individually + Menu Item Group

Weekly Quantity Menu Item Group

4. Monthly Quantity | Individually + Menu Item Group

Monthly Quantity Menu Item Group


Options tab

1. Option quantity | by option group & option

Option quantity

The 40 most-chosen options across the whole menu. Each bar is one option (e.g. "No ice", "Extra cheese", "Spicy"), grouped by the option group it belongs to.

How it's calculated: we flatten the options JSON on each confirmed line item, sum the option quantities, and join back to the option groups (looking up both option_groups_v2 and the legacy option_groups table so historic data is included).

2. Option revenue | by option group & option

Option revenue

The same 40 most-chosen options ranked by the revenue they brought in (option price × quantity chosen).

Reading it: an option that's chosen often but adds no revenue is a "free modifier" — useful info but no price lever. An option with high revenue per choice is your upsell hero (extra cheese, premium upgrade).


How items are counted

  • Status filters — closed orders only (orders.status = 'complete') and confirmed items only (order_items.status = 'confirmed'). Cancelled line items inside an otherwise closed order are excluded.

  • Date fieldreportingDate for all time buckets, except the Per-Item hour-of-week heatmap which uses orderDate for the hour.

  • Timezone — Asia/Bangkok.

  • Item name vs menuItemId — most charts group by the order_items.name as it was at sale time, so a renamed item shows under whichever name was current. The "distinct items sold" KPI uses menuItemId, which is stable across renames. The per-item filter (the click-to-filter picker) matches on the item name — so an item keeps its full history even if the menu was re-imported, and clicking a name filters everything sold under that name.

  • Menu item groups (combos) — only the Menu Item Groups tab explodes combos into their sub-items. Every other tab treats the combo as a single line item with its top-level name.

Filters

  • Reporting Date — the date range.

  • Outlet — pinned to your outlet when the dashboard is embedded in the Papaya merchant portal.

  • Item — only applies to the Per Item Snapshot and Per Item Historical tabs. Set by clicking a row in the picker at the top of the tab.

What this dashboard does NOT show

  • Category-level breakdowns — use the Categories dashboard.

  • Margin / COGS / waste — that lives in the Inventory module.

  • Item performance vs other items on a star-vs-dog plot — see the Menu dashboard's Menu Optimization scatter.

  • Cross-outlet item comparison — use Outlets or Group KPIs.

Did this answer your question?