Making invisible errors visible before the client has to tell you

Abstract geometric artwork
What changed when a routine bug in our own error logging turned into a decision to stop treating "no news" as "no problems."
A global All errors dashboard listing every open error across every client, server and site, each with a severity badge, message, owner and last-seen time
Every open error, in one place, instead of three.

For a long time, the only record of something going wrong on a client’s site or server was a line written to a log file that nobody was looking at unless they already suspected a problem. No list, no history, nothing that said “here’s what’s currently broken” without someone deciding to go and check first.

The bug hiding inside the bug tracking

While building a proper fix for this, we found something worth fixing on its own. The existing check-in process was meant to catch new errors on a site, but it was re-recording every unresolved error on every single check, not just the new ones. A site with one persistent problem didn’t produce one log entry. It produced a new one every time the site checked in, forever, until someone happened to notice and clear it.

That’s a strange failure mode: a monitoring system that gets noisier the longer a real problem sits unfixed, instead of easier to spot. The fix came before anything else got built. Only genuinely new errors, the ones not already known from the last check, get recorded going forward. Everything else stays quiet, the way it should.

A raw server log file showing the same error message repeated at dozens of near-identical timestamps minutes apart
One real problem, recorded again and again, until it drowned in its own noise.

One shared way to see it, not three

Errors don’t belong to just one thing. Some are specific to a single site, some to the server underneath it, and some are really about the client relationship as a whole. The tempting shortcut was building a separate error screen for each of those three views. We didn’t take it.

Instead, one underlying error record and one shared way of viewing it got built once, then reused with a different filter for each level: a site’s own error history, a server’s error history, and a global view that also rolls up into a per-client picture. Adding the server view or the client view afterwards didn’t mean writing a new screen from scratch. It meant pointing the existing one at a different filter.

A site detail page with the Errors tab selected, showing a filtered list of error rows scoped to that one site
The same errors screen, just narrowed to one site — no separate view built to get there.

From “something’s wrong” to “someone’s on it,” in one step

Seeing an error is only half the job. What used to happen next was manual: someone spots it, opens a ticket, retypes what the error actually said. That’s a second chance to lose detail, or to just not get around to it.

Now a logged error can become a tracked piece of work directly, in one action, carrying its original message and detail straight into the new ticket rather than someone re-describing it from memory. The original error record itself doesn’t change when this happens. It stays exactly as it was logged, a permanent account of what actually happened, with the resulting ticket linked alongside it rather than replacing it.

An error detail panel with a Convert to ticket button, and the resulting ticket pre-filled with the same error message
One action, from logged error to tracked ticket, nothing retyped.

Final thoughts

None of this was really about building a dashboard. Fixing the duplicate-logging bug first mattered because a system that gets noisier the longer a problem sits unfixed will train people to ignore it. Everything after that was about shortening the distance between something breaking and someone actually owning it.

If the honest answer to “how would we know if that broke” is currently “a client would probably tell us,” more logging usually isn’t the fix. A single owner for that record, and one action to turn it into work, tends to matter more than the logging itself.

Ready to stop finding out from your client?

If a client mentioning a problem is currently how your team finds out about it, we’re happy to talk through what a proper error record, and a shorter path from spotting one to fixing it, would look like for your setup.

Ready to build software that fits your business?

Let’s discuss your processes, challenges and goals. We’ll help you identify the right solutions – whether that’s a CRM, ERP, business portal or something entirely unique.

No pressure. Just a friendly conversation.