Every operations dashboard starts with one red badge and ends with nine. The first was earned. The rest arrived because red is the fastest way to make a feature feel important, and because nobody owns the question of what a red badge is for. The result is a screen where everything is urgent, which is the same screen as one where nothing is.

Three tiers, and only one of them is allowed to be red

Useful alerting has three levels, and most products collapse them into one.

State is what a thing is right now. A trip is ongoing. An order is dispatched. State is permanent, present on every record, and it is not news.

Notice is something that has changed and somebody will want to know eventually. A report finished. A new order arrived. It is worth surfacing and worth counting, but it will keep until the person looks.

Alarm is something going wrong that a human has to act on now. A sync failed. A payment was rejected. A vehicle stopped reporting.

Red belongs to the third tier. If your dashboard uses the same red dot for a new message and a failed integration, you have taught your users that red means unread, and the day the integration fails they will scroll past it.

Status is not an alert, and it should not look like one

The GPS trip and mileage app we designed filters trips by state: all, ongoing, ended, cancelled. Each trip is a card built as a two-point timeline, with the distance and a status chip on the header line, and each of the three states carries its own colour.

Cancelled is not an alarm. Nothing has gone wrong; a trip was called off. It gets a colour because a driver scanning a week of trips needs to sort them at a glance, not because anyone should react. That distinction is the whole discipline: colour marks state, it does not shout.

The Abstractally order operations app takes that further. Status is a coloured dot followed by a word, not a filled badge, which lets many states share one column without the table turning into a wall of blocks, and keeps the row reading as text.

Filled badges are the default in almost every component library and the single biggest cause of alert inflation. A filled badge carries the visual weight of a warning. Put six in a column and you have written a warning next to every row in your product.

The test: can it be read down one edge?

On the GPS app, ongoing, ended and cancelled each get their own colour so a long list can be read down its right-hand edge alone.

That is a real design target and worth adopting as a phrase in your team. Somebody with forty trips in a list is not reading forty status words; they are running an eye down one column looking for the shape that differs.

Two things follow. The status marker must sit in the same horizontal position on every row, which sounds obvious until a card design lets the chip float after a variable-length address. And the colours have to differ in more than hue, because this is peripheral vision.

Reserve your colours, and then defend them

In the trading app we designed, the palette is one deep brand colour with green and red used strictly for direction, so nothing decorative can be mistaken for a price movement.

That is the rule for every operations product. Pick the two or three colours that carry meaning, write down what each means, and refuse them for anything else — not the brand, not a promotional banner, not a chart series.

The failure is incremental. Somebody uses alert red for a delete button because delete feels dangerous. Somebody else uses it for an upgrade prompt because upgrade prompts should stand out. Six months later red means four things and none of them reliably.

There is a second rule underneath it. On Abstractally the only strongly coloured control is the button that creates something new. If your accent is already spoken for by the primary action, alert colours must differ from it — a constraint worth having, because it forces alerts to be a distinct language rather than more emphasis.

What actually earns a red badge

Three tests. A red badge should pass all three.

Something is wrong, or about to be. Not new, not unread, not waiting. Wrong. A queue with items in it is not a problem; a queue that has stopped moving is.

There is a cost to ignoring it. Money, a missed deadline, a regulatory window, data that stops being collected. If nothing gets worse by tomorrow, it is a notice.

This person can act. An alarm shown to someone with no permission to fix it is noise with extra anxiety. If the operations team cannot resolve billing failures, those belong on the finance dashboard, and operations gets a state instead.

Everything that fails a test drops a tier. Most things drop two.

A count that never reaches zero is broken

Badge counts have one job: to go away. A number a diligent person can drive to zero is a to-do list. A number that cannot be cleared is wallpaper, and within a fortnight it is invisible wallpaper.

Before adding a count, answer the clearing question: what action makes this number smaller, and can one person do it in a working day? If the number reflects the size of the business rather than the size of the backlog, it is a metric, and metrics belong in a tile rather than on a bell.

Numbers are a quieter form of alerting

The GPS app opens on a six-tile grid where every tile leads with a number: hours logged this week, reports filed, miles tracked, receipts stored. A driver checking between jobs gets the state of their week without opening anything, and the same tile is the way in when they do.

That is ambient alerting and it costs nothing in attention, because nobody has to dismiss a number. Someone who knows their normal reads an abnormal figure faster than a badge: the badge says something exists, the number says how much.

Before adding an alert, check whether a number already on screen would have said the same thing. Often the alert exists because the number is buried three screens down.

One check to run on your own dashboard

Take a screenshot of your busiest screen with realistic data in it, and convert it to greyscale.

Two questions. Can you still tell the states apart? If not, colour is your only status signal and it fails for colour-blind users and for anyone reading at a glance. And in the original, count every red element on the page — then, for each one, say out loud what is wrong, what it costs to ignore, and who is meant to fix it. Anything you cannot answer for should be a dot and a word instead.

Alerting is one of the things we work on in SaaS product and dashboard design, and a live product can go through our free 15-point UX audit if you want the findings ranked for you.

Questions we get asked about dashboard alerts

How many alert levels should a dashboard have?

Three is usually right: state, notice and alarm. Four starts to need a legend, and anything that needs a legend is not being read at a glance. If you have five severities inherited from a monitoring tool, map them to three in the interface and keep five in the data.

Should notifications live in a bell menu or on the screen they relate to?

On the screen, wherever possible. A bell menu is a second inbox that competes with the first, and it separates the alert from the thing it is about. Use the bell for events that have no home screen, and put everything else on the record it concerns.

Is a coloured dot enough on its own?

No. Pair it with a word, as we did on Abstractally. Colour is fast and imprecise, text is slow and exact, and using both means the fast reader and the careful reader are served by the same component. It is also the simplest way to stay usable without colour vision.

What about email and push, not just in-app?

Same three tests. If a push notification would not have earned a red badge in the product, it should not interrupt someone’s evening. The usual failure is that push inherits the notice tier, so people mute the app and then miss the alarms too.

How do we clean up a dashboard that already has too many alerts?

List every alert with the action it prompts and the person who takes it. Anything with no action is a state. Anything whose action belongs to another team moves to their screen. What survives is usually a third of the list, and it is the third people were looking for.