🚧 Draft article — source ticket MM-509 is still in To Do.
The Hourly Sales Report slices the day into one-hour buckets and shows how each hour performed — by sales count, net sales, cost of goods sold, gross profit, margin percentage, and tax collected. It's the answer to questions like "When is my store busiest?", "Which hour makes me the most profit?", and "Should I cut staffing in the evening?"
Access path: Quickvee Web → Reporting → Sales Reports → select Hourly Sales Report
A combined bar-and-line chart sits at the top to show net sales and sale count visually side by side, and a 22-column hourly table sits below it for the full numeric breakdown.
The filter bar
Date range
-
Quick filters — Today, Yesterday, Last 7 Days, Last 30 Days
-
Manual — Start Date / End Date pickers for any custom range
When the date range spans more than one day, the hourly buckets aggregate across every day in the range — 9:00 AM–10:00 AM in a 7-day report shows the sum of seven 9 AM hours, not seven separate buckets. The report's purpose is to identify the time-of-day pattern, not the day-by-day trend (use Daily Sales Totals for that).
Outlet
For multi-store accounts, the Outlet dropdown selects which location. Each store has its own hourly pattern — what's the busiest hour at one store can be a slow hour at another.
Search & Export
-
Search — applies filters and reloads the chart and table
-
Export Report — downloads the report. Particularly useful here because the table is 22 columns wide and reads more naturally in Excel
The Sales by Hour of Day chart
|
Series |
What it shows |
|---|---|
|
Net Sales (bars) |
Each hour's net sales as a vertical bar. Bar height represents revenue for that hour |
|
Sale Count (line/markers) |
Each hour's transaction count overlaid as a separate series. Lets you spot mismatches — high sales with low transaction count means high-ticket hours; high count with modest sales means cheap-impulse hours |
The X-axis runs from 12:00 AM to 10:00 PM (and beyond if the store has late activity). Hours with no activity show no bar.
Display Options
Display Options at the top right of the chart lets you toggle which metrics to display — for example, hiding Sale Count to see only revenue.
📷 Add screenshot: Sales by Hour of Day bar-and-line chart
Reading the detail table
Below the chart is a 22-column table — one column per hour of the day plus a Total column. Six rows of metrics span across every column.
|
Row |
What it shows |
|---|---|
|
Sales Count |
Number of paid transactions completed in that hour. Refunded orders reduce the count |
|
Net Sales |
Revenue from sales completed in that hour after refunds and discounts. Pre-tax |
|
Cost of goods sold |
Cost basis of items sold in that hour, drawn from each product's configured cost price |
|
Gross profit |
Net Sales − Cost of goods sold for that hour |
|
Margin (%) |
Gross Profit ÷ Net Sales × 100 for that hour |
|
Tax |
Total tax collected on sales completed in that hour — the customer-paid tax for the hour |
The Total column
The rightmost column sums every hour into a range-level total:
-
Total Sales Count — every transaction in the range
-
Total Net Sales — matches Daily Sales Totals' total minus tax
-
Total Cost of goods sold — total cost basis for the range
-
Total Gross profit — total dollars earned after cost
-
Total Margin — blended margin across every hour (computed against Total Net Sales and Total Cost, not the arithmetic mean of hourly margins)
-
Total Tax — total tax remitted in the range
Common workflows
"When is my busiest hour?"
Quick filter → Last 7 Days → Search. Read the Sales Count row. The hour with the highest count is your busiest transaction hour — useful for staffing decisions.
"When do I make the most money?"
Read the Net Sales row. The hour with the highest net sales is your most revenue-rich hour — often (but not always) the same as the busiest hour. Compare both rows to spot hours where one diverges from the other.
"Which hour has the best margin?"
Read the Margin (%) row. Hours with higher margin are selling a different product mix — typically because category mix shifts through the day. A high-margin morning might be selling accessories while a lower-margin evening is selling commodity items.
"Should I open earlier or close later?"
Run for Last 30 Days to smooth out day-to-day noise. Look at the bookend hours — the first hour the store is open and the last hour. Compare their Gross Profit and Sales Count against the cost of labor that hour requires.
"Find the dead zone"
In the chart, find the hour where the bar is shortest (but non-zero). That's your slowest selling hour — a candidate for a happy-hour promotion, a featured product, or simply a reduced-staff hour.
"Reconcile against the day's totals"
Run for a single day. Compare Total Net Sales + Total Tax to that day's total in Daily Sales Totals — they should match. If they don't, an order's timestamp may have landed outside operating hours.
"Compare today against last week"
Run for Today, note the hourly pattern. Run for Last 7 Days, compare today's hour-by-hour shape against the rolling average. If today's evening is unusually slow vs. the 7-day evening pattern, something is off about today's traffic.
Important notes
Hours aggregate across the date range. For a multi-day report, 2:00 PM–3:00 PM sums every 2 PM hour in the range. Use Daily Sales Totals for per-day numbers.
Refunds reduce the hour they were processed, not the hour they were originally rung up. A refund at 4 PM today against an 11 AM sale yesterday reduces today's 4 PM bucket.
Cost is drawn from each product's configured cost price. Products with no configured cost contribute $0 to Cost of goods sold — which inflates Gross profit and Margin artificially. Custom items typically have no cost and can skew an hour's margin upward.
Net Sales is pre-tax. Customer-paid total per hour is Net Sales + Tax. To match till close, use Daily Sales Totals (which is gross-of-tax).
Hours with zero activity are not shown in the chart but appear with zero values in the table. The table is the complete reference.
Filters do not auto-apply. Changing dates or outlet requires tapping Search.
Margin is calculated against Net Sales (after discounts) and Cost (excluding tax). Total Margin is a blended figure weighted by hourly volume — not the average of the hourly margins.
Hour boundaries are merchant local time. The 9 AM bucket means the merchant's local 9 AM, not UTC. Cross-outlet comparisons assume each outlet's timezone is configured correctly.
Calculation reference
|
Field |
Formula |
|---|---|
|
Sales Count |
|
|
Net Sales |
|
|
Cost of Goods Sold |
|
|
Gross Profit |
|
|
Margin (%) |
|
|
Tax |
|
Discount components included: Coupon, BOGO, Mix Match, Loyalty Points. All 24 hours are displayed even if no data exists. Margin is calculated only when Net Sales > 0.