# Labor cost insights

Labor Cost compares staffing with sales hour by hour, scheduled hours with hours worked, and tracks labor cost as a share of sales over time. Web app, admins by default.

For: Admins · On: Web · [Help Center](https://www.mays.app/help) › [Reports & insights](https://www.mays.app/help/reports-insights) · Last updated October 8, 2026 · Mays Team

**Insights → Labor Cost** compares staffing with sales hour by hour, sets scheduled hours against hours worked, and tracks labor cost as a share of sales.

**Who:** admins. Anyone else needs a custom role with the **View insights** permission, and then sees only the locations they work at. Insights is part of every plan, on the web app only.

Hours come from the schedule and the time clock, labor cost from wages, and sales from a connected POS ([Square](https://www.mays.app/help/integrations/connect-square) or [Union POS](https://www.mays.app/help/integrations/connect-union-pos)).

## Open Labor Cost

1. Go to **Insights → Labor Cost**. It has three tabs: **Hourly Metrics**, **Labor Variance** and **Labor Cost Trend**.
2. Click the date button to change the dates. The page starts on the last 14 days, today included.
3. Under **Filter data**, pick the **Branches** (locations) to include. The page opens on the location picked at the bottom of the sidebar.
4. Turn on **Only hourly employees** to leave out people on a weekly salary.

## Hourly Metrics: when you're over- or under-staffed

The **Staffing vs Revenue Heatmap** has a row for every half hour and a column for each day of the week, plus **Avg.** Each cell is the average for that half hour on that weekday across your dates. For example, the Monday column averages every Monday in the range.

![The Labor Cost page on Hourly Metrics for South, Sep 11 to Sep 23: the Staffing vs Revenue Heatmap in America/New_York time with half-hour rows from 8am, Mon to Sun columns and Avg., cells showing labor as a percent of revenue shaded green at the start of the day and red in the afternoon, ∞ cells in the evening, and Filter data with Branches, Departments and Job Titles](https://mays-uploads.s3.us-east-2.amazonaws.com/site/help__labor-cost-insights__01-staffing-heatmap.ceb4770c0f.png)

- **Heatmap Metric** colours the cells by labor % of revenue, or by revenue.
- **Displayed Qty** chooses what's written in each cell: **labor % of revenue**, **clocked-in employees** or **labor cost**.
- **Colours:** green at 18% or less (the lower, the greener), no colour between 18% and 22%, and red from 22% (the higher, the redder).
- **∞** means people were working but there were no sales in that half hour. A crossed-out circle means there was neither.
- People on a weekly salary aren't in the heatmap's costs, because a salary can't be split by the hour.

Below the heatmap, **Scheduled vs. Actual Hours by Hour of Day** shows, for each hour of the day, the **Scheduled Hrs**, **Actual Hrs**, **Scheduled Emp.** and **Clocked-in Emp.** added up over your dates. Click a job title above the chart to see only that one, or **All job titles**.

## Labor Variance: schedule vs time clock

This tab compares what was scheduled with what was worked. Choose **Day**, **Week** or **Month**.

1. The chart, **Labor hours: Scheduled vs Actual**, draws scheduled hours in blue and worked hours in red. The icons in its corner switch between hours and employees.
2. The table has a row per day (or week, or month), newest first, with **Scheduled Shifts**, **Actual Shifts**, **Shifts Variance**, **Scheduled Hours**, **Actual Hours** and **Hours Variance**. Click a column header to sort.
3. Open **By department & job title** for the same comparison split by department and job title, day by day, with **Difference** and **% Difference**.

![The Labor Variance tab for South: the Labor hours: Scheduled vs Actual chart with blue Scheduled and red Actual lines from Sep 11 to Sep 23, and the table with Date, Scheduled Shifts, Actual Shifts, Shifts Variance, Scheduled Hours and Actual Hours, where Sep 23 shows 2 scheduled shifts, 3 actual and +50.0%](https://mays-uploads.s3.us-east-2.amazonaws.com/site/help__labor-cost-insights__02-labor-variance.c3af295192.png)

- **Actual Shifts** counts time clock punches, so someone who clocks out and back in counts twice.
- **Scheduled** includes open shifts and shifts that haven't been published yet. **By department & job title** leaves open shifts out, so its totals can be lower.
- **Watch the colours:** in the main table, red means fewer than scheduled. In **By department & job title**, red with ↑ means more than scheduled.
- The **Departments** and **Job Titles** filters only change this tab.

## Labor Cost Trend: labor as a share of sales

Bars show **Labor Cost %** for each day, week or month, with a trend line. The table below has **Revenue**, **Labor Cost**, **Labor Cost %** and **Hours Worked**, plus a **Total**. These are the same numbers as on [Prime cost](https://www.mays.app/help/reports-insights/prime-cost).

![The Labor Cost Trend tab for South by week: bars for Labor Cost % of Revenue for the weeks of Sep 7, Sep 14 and Sep 21 with a trend line, and the table with Revenue, Labor Cost, Labor Cost % and Hours Worked per week and in total](https://mays-uploads.s3.us-east-2.amazonaws.com/site/help__labor-cost-insights__03-labor-cost-trend.ac0dd8b003.png)

## Good to know

- **Labor cost is hours worked times wage, plus overtime.** Hours come from finished punches, approved or not. Overtime (weekly, daily, double time and 7th-day) is priced the same way as the pay summary: by your overtime settings in **Scheduling → Settings** and, with Labor law compliance's **Overtime law** on at a location, by the law at its address where it's more protective (see [Labor & compliance](https://www.mays.app/help/time-clock/labor-compliance)). On the heatmap, a punch's overtime pay lands on its last hours. People on a weekly salary add a seventh of their salary for every day, except on the heatmap. A punch with no wage saved is costed at the wage on file today — the person's own, else the position worked, else (with no position) their main position's. Set wages under [Positions and wages](https://www.mays.app/help/scheduling/positions-and-wages).
- **Departments and job titles:** the department is the person's department. The job title is the position on the shift or punch; without one, it's the person's role, such as *Employee*. See [Departments](https://www.mays.app/help/team-roles/departments).
- **Filters and new options:** when you change the dates and a department or job title appears that wasn't in the list before, it starts unticked and is left out until you tick it. Unticking everything shows everything.
- **Days are each location's own days,** in its time zone. Weeks run Monday to Sunday.
- **Set Alert**, at the top right, creates a labor % alert. See [Alerts and scheduled reports](https://www.mays.app/help/reports-insights/alerts-and-scheduled-reports).
- **The filters hide on narrow screens.** If you don't see **Filter data**, make the window wider.
- **There's no export.** For a weekly or monthly email, schedule a **Labor Summary** report.
- For a single location's week, the schedule builder and **Scheduling → Reports** have their own labor numbers. See [Scheduling reports](https://www.mays.app/help/scheduling/scheduling-reports).

## Related articles

- Reports & insights: [Prime cost](https://www.mays.app/help/reports-insights/prime-cost) — Prime Cost puts each day's sales next to its labor cost and theoretical food cost, and shows the share of sales each one takes. Web app, admins by default.
- Reports & insights: [Alerts and scheduled reports](https://www.mays.app/help/reports-insights/alerts-and-scheduled-reports) — Get a notification when labor runs hot, a vendor raises a price or a form reading is out of range, and have a labor, prime cost or vendor spend summary emailed every week or month.
- Scheduling: [Scheduling reports](https://www.mays.app/help/scheduling/scheduling-reports) — Ten ready-made reports on sales, labor, hours, overtime, time off, attendance, the shift pool and tips — for any date range, one location at a time, with CSV export.
- Scheduling: [Building the weekly schedule](https://www.mays.app/help/scheduling/build-the-schedule) — Build a location's week on the web — add, move, copy and edit shifts, add open shifts, and keep an eye on time off, availability and labor cost while you work.
- Scheduling: [Positions and wages](https://www.mays.app/help/scheduling/positions-and-wages) — Create the jobs people work — Barista, Cashier, Line Cook — with a colour and a default hourly wage, give people their positions and pay, and see where Mays uses them.
- Team & roles: [Departments](https://www.mays.app/help/team-roles/departments) — Group people into departments such as Front of House and Kitchen, then use them to give checklists to the right people, filter the dashboard and compare labor costs.
- Time clock: [Timesheets and pay periods](https://www.mays.app/help/time-clock/timesheets-and-pay-periods) — Review every punch in a pay period on the Time Clock page — fix, add or delete punches, approve them, check warnings and hours, then close the period for payroll.
- Team & roles: [Roles and permissions](https://www.mays.app/help/team-roles/roles-and-permissions) — What the built-in Admin, Manager and Employee roles can do, how location access works, and how to build a custom role from individual permissions.

## Still need help?

Send us a support request and a real person on the Mays team will get back to you.

[Contact support](https://www.mays.app/contact?topic=support) · [Call +1 (561) 286-3939](tel:+15612863939)

Canonical: https://www.mays.app/help/reports-insights/labor-cost-insights
