How to monitor business revenue without staring at it
Looking at revenue tells you it moved. Monitoring it tells you whether the move matters. This is a method for the second one that works in a spreadsheet, and that you can hand to software once it works.
Guide 9 min read
Most owners monitor revenue by checking it: open the dashboard, see yesterday’s number, compare it with a feeling about what it usually is. That works until the feeling is wrong. A slow Saturday looks like a good Tuesday. A drop of a seventh spread over three weeks never looks like anything on any single morning.
Monitoring is different from checking. It means writing down what normal is, measuring each new number against it, and only reacting when the gap is bigger than ordinary noise. Here is how to do that properly.
1. Pick the grain before anything else
The grain is the period each reading covers. Get it wrong and every later step fights it.
- Daily suits shops, restaurants, online stores and anything with many small sales. There is enough volume each day for the number to mean something.
- Weekly suits businesses with lumpy revenue: agencies, wholesalers, anyone who invoices a few large clients. One invoice landing on a Tuesday instead of a Thursday should not look like a crisis.
- Monthly is for reporting, not monitoring. By the time a month is unusual, the month is over.
A useful test: if a typical period often has zero sales, the grain is too fine.
2. Get one clean series
You need one row per sale, or per day, with a date and an amount. Most point of sale, store and accounting systems export this. Before trusting it, check three things.
- Refunds. Decide whether you are watching gross sales or net of refunds, and be consistent. Mixing them makes every refund look like a revenue drop.
- Dates. 03/04/2026 is 3 April in most of the world and 4 March in the United States. Spreadsheets guess, and they guess per cell. If any date in the column has a day above 12 in the first position, the whole column is day-first.
- Timezone. An order at 11pm in Lagos is the next day in UTC. Use the timezone your business trades in.
3. Find your weekly rhythm
Almost every business has one. Take the last eight weeks, group by weekday, and take the median of each. Divide each by the overall median to see how each day usually compares.
| Weekday | Median revenue | vs overall |
|---|---|---|
| Monday | $6,660 | 0.90 |
| Tuesday | $6,880 | 0.93 |
| Wednesday | $7,180 | 0.97 |
| Thursday | $7,400 | 1.00 |
| Friday | $8,290 | 1.12 |
| Saturday | $9,770 | 1.32 |
| Sunday | $8,730 | 1.18 |
That table is the reason fixed rules fail. Any single line you draw is either below an ordinary Saturday, so it fires every weekend, or above an ordinary Monday, so a terrible Monday never crosses it.
4. Write down what normal is
For each weekday you want two numbers: a typical level and a typical spread.
Use the median for the level, not the average. One record day, a bulk order or a refund storm pulls an average a long way and a median barely at all. For the spread, use the median absolute deviation: the median distance of each day from that median. Multiply it by 1.48 and it is on the same scale as a standard deviation, without being dragged around by the days you are trying to catch. Our rolling baseline explainer works through why with numbers.
Recompute both as new weeks arrive, over a window long enough to be stable and short enough to be current. Six to eight weeks is a good start for daily data.
5. Decide what counts as unusual
Measure each new reading as a distance from its weekday’s level, in spreads:
Around 2 to 3 is a sensible line. Lower catches more and interrupts you more; on a metric with no real problems, a line at 2 is still crossed on roughly one day in twenty by chance. Two further habits make the signal far more useful:
- Count readings in a row. One odd day is often noise. A third odd day in a row almost never is.
- Look for level shifts. A metric that steps down and stays down is a different event from a one-day dip. When recent days sit consistently below the old level, find the day the new level began, because that date is usually what points to the cause.
6. When it moves, ask which part moved it
If your data has a channel, a location or a product line, break the gap down. The trap is comparing each part’s share of today’s total, which only tells you what revenue is made of. Instead, compare each part with its own normal level, and see how much of the total gap each part accounts for.
If revenue is $6,000 below normal, in-store is $5,500 below its own normal and online is $500 below its own, the story is in the shop, not the website. That is a phone call you can make this morning.
7. Make it run without you
A method you have to remember to run is a method that stops in the first busy week. Schedule the check for the same time each day, after the previous day’s data has landed, and only notify on change: when a reading moves outside its range, not every morning it stays there. Keep every reading, so that after a few months you can see what it flagged and whether it was right.
Common mistakes
- Comparing with yesterday. Tuesday against Monday is mostly a comparison of weekdays.
- Comparing with the same day last year, on its own. Too much has changed in a year to call that normal.
- Using an average and standard deviation that include the very spikes you want to detect.
- Treating missing data as zero. A day with no export is not a day with no sales.
- Alerting on every reading outside the range, every day, until people mute it.