Module · Reporting

Restaurant Analytics & Reporting Software

Revenue tells you what came in. Reporting tells you what to do next — the numbers that actually change a decision.

Why it matters

Most restaurants can see revenue. Almost none can see which dish is actually profitable once ingredient cost is subtracted, which hour needs another server, or whether last Tuesday's bad reviews were the kitchen or the floor. Those answers need the menu, the recipes, the orders, the roster and the bookings in the same place — which is the one thing a reporting tool bolted onto a POS can never have.

Eight reports, all reading the same data the rest of the system runs on. No overnight import, no month-end spreadsheet rebuilt from three exports.

Orders report showing revenue by day and a heat map of the busiest hours across the week
Revenue by day, and when you are actually busy — by hour, across the week.

The eight reports

01

Sales

Revenue, average order value, items per order and cancellations against the previous period. A day-by-day series, and the whole week as a 7 × 24 grid of hour against weekday — so "Fridays are busy" becomes "Fridays from seven, and Wednesdays are quieter than you think."

02

Menu performance

Plate cost, margin and contribution per dish, plotted against sales. Every dish lands in one of four corners: stars to protect, plowhorses that sell hard on thin margin, puzzles that make money nobody orders, and dogs that do neither. The crosshair sits on the medians, not the averages, so one runaway seller can't push everything else into "unpopular".

03

One dish, in depth

Open any dish for how many people viewed it, added it and ordered it; which size actually sells; what the plate costs broken down by ingredient; and what it gets ordered alongside.

04

Menu engagement

What guests do on the menu itself — sessions, dishes opened per visit, add-to-cart rate, and how many dishes nobody has opened at all. Attention against revenue, side by side.

05

Table performance

Revenue per table and per seat, turns per day, median ticket time, reservations and no-shows — with a heat overlay on your actual floor plan so the room shades itself. Open one table and its item mix is compared against three baselines: the whole room, tables of the same size, and its own section.

06

Staff performance

Per server: orders, revenue, average order value, cancellation rate, median ticket time, and revenue per rostered hour. Also what they sell more and less of than the rest of the floor — the peer group being the people who worked the same sections, because most of the gap between two servers is which section they had.

07

Kitchen timing

Median and 90th-percentile prep time per station, which station the pass waited on most often, and how many minutes that cost. Prep times bucketed in five-minute bands, because a median hides the tail and the tail is what guests remember.

08

Guest feedback

Response rate, overall score, and the unhappy rate over time — then cut six ways: by who had the table, by section, by how the party arrived, by order size, by how long the food took, and by whether they had to call a waiter. Plus dish by dish: would they order it again.

Menu performance scatter chart plotting each dish by popularity against its margin
Every dish placed by popularity against margin. The quadrant a dish lands in is the decision: promote it, reprice it, or take it off.

Numbers that admit what they don't know

This is the part that took the longest to build and it is the reason the reports are worth acting on. Analytics that quietly substitutes a zero for a missing number is worse than no analytics, because it produces a confident answer nobody measured.

Nothing missing is rendered as nought. A dish with no costed recipe reports its margin as unknown, not as zero — otherwise it would appear to be pure profit and sit in the stars corner. A table with no recorded seat count is blank, not a great performer. A server with no rostered hours has no revenue-per-hour, because dividing by a made-up denominator invents a ranking.

The sample is published next to the number. Every median arrives with the count behind it. Feedback averages are suppressed below three responses, and the screen says so rather than printing a decimal point on one reply.

What's missing gets named, not dropped. Orders no station ever reported are counted and shown, so a kitchen without tablets can see what fraction of service the timings actually describe. Orders with no server attached are kept apart from named staff rather than being ranked as an anonymous person. Tables that took orders but exist on no floor plan are listed. Uncosted dishes are counted alongside the costed ones.

Rows that would lie are left out. Waiting time is measured only across orders that touched more than one station — include the drinks-only tickets and every kitchen reports a perfect zero. The no-show rate excludes guests who rang to cancel, because counting them hides the ones who didn't.

And browsing is never joined to ordering. The menu's analytics session and the guest's order session are separate anonymous identifiers with no key between them. So the two sit side by side as the same window's figures — not as a conversion funnel that was quietly invented.

Staff performance report ranking servers by takings per rostered hour, with a notice that twenty-two unattributed orders were excluded
Takings per rostered hour, so forty hours does not beat twenty by arithmetic alone. The banner is the point: 22 orders had nobody on the table, so they are left out rather than shared around.

Each server sees their own numbers — and only their own

Staff get their own screen: their orders, revenue, average order value and revenue per rostered hour, week by week, against themselves a fortnight ago.

There is no rank on it, no floor median, no peer index and no colleague named anywhere. That's deliberate. Hand a server a leaderboard and competing for the good section becomes the rational move — which puts back the exact confounder the owner's version works hard to strip out.

A server's own performance page showing their average check, covers, tips and busiest hours
Each server sees their own numbers — and only their own.

Common questions

Can I export to CSV, Excel or PDF?

Reports are built to be read and acted on in the interface rather than exported and rebuilt in a spreadsheet. If a file has to leave the system for your accountant or your group office, raise it on the demo and we will talk through what you need.

Can I pick a custom date range?

Not on most screens. Reports run on a 7, 30 or 90 day window; guest feedback offers 30, 90 or 365 because feedback is sparser. Every window is shown against the previous window of the same length.

Can I see margin per dish?

Yes, where the dish has a recipe. Plate cost comes from the actual ingredient quantities and unit costs in Inventory, per portion size. Dishes without a recipe are reported as unknown rather than being guessed at.

Whose day is a "day"?

Days, hours and weekdays are bucketed in your venue's own time, not the server's — so a late Saturday belongs to Saturday.

Do you track how long guests sit at a table?

Not directly — there's no dwell timer. What's measured is the ticket time from order to served, and how many minutes each table was booked against your service hours. Turns per day is orders per table, which is a proxy for covers rather than covers themselves.

Is reporting on every plan?

Yes. There is one plan and every report is in it. The only thing that limits a report is data: below a handful of orders or three feedback answers it says "not enough yet" rather than printing a number.

Does it work across several venues?

The owner dashboard rolls today's orders, revenue, bookings and low stock across every venue you run. The reports themselves are per venue.

See it in action

See Reporting built from your own sales.

Book a demo