Alert Triage for MSPs: Handling Multiple Clients Without Burning Out Your Team
One client's "critical" is another client's "check it in the morning." That's the specific version of alert fatigue MSPs deal with that a single-client engineering team never has to think about — the same alert type, from the same monitoring rule, carries a completely different urgency depending on which environment it fired in.
A backup job failing on a client's e-commerce database at 2pm on a Friday is genuinely urgent. The same failure on a client's internal wiki, on a weekend, probably isn't. A generic alerting setup that treats every failure the same way either pages the on-call tech for things that can wait, or — worse, after enough of the first problem — trains them to treat every page as something that can wait.
Why generic severity levels break down across clients
Most monitoring tools ship with a single severity scale: info, warning, critical. That works fine within one environment, where everyone agrees what "critical" means. Across a dozen client environments with different SLAs, different business hours, and different tolerance for downtime, a flat severity scale collapses real differences into one label. "Critical" ends up meaning both "wake someone up now" and "acceptable to look at Monday," depending on which client contract you check — information that isn't in the alert itself.
Building triage into the alert, not around it
The fix isn't a bigger severity scale — it's carrying client-specific context into the alert itself, so triage decisions are already encoded by the time the page is sent, rather than left to whoever's on-call to remember from a spreadsheet.
- Route by client SLA, not just alert type. A monitoring rule for the same failure condition should page differently depending on which client's environment it fired in — different escalation policy, different urgency, sometimes a different responder entirely.
- Carry the client name and SLA tier in the page itself. An on-call tech who has to look up which client an alert belongs to before deciding how urgent it is has already lost a minute they didn't need to lose.
- Use maintenance windows aggressively. A huge share of MSP alert noise is planned work — patching, migrations, scheduled reboots — that shouldn't page anyone at all. Suppressing alerts during a defined maintenance window for a specific client, without disabling monitoring for every other client, keeps the signal-to-noise ratio usable.
Webhooks make client-specific routing practical
This kind of per-client routing is much easier when the monitoring tool and the paging tool talk over a plain webhook, since the payload can carry through whatever client-identifying fields the monitoring rule already knows about. PingParrot accepts a webhook payload from any monitoring source and can route based on custom fields in that payload — including a client identifier — into different escalation policies, so the "which client, how urgent" decision happens automatically at alert time instead of manually every time someone picks up a page.
The real cost of getting this wrong
Alert fatigue at an MSP doesn't just cost the on-call tech sleep — it directly threatens the thing MSPs are selling, which is reliable response. A tech who's been paged for a dozen low-priority failures this month is a tech who responds slightly slower to the one alert that's actually urgent, because their instinct has been trained by the noise. Getting triage right isn't a nice-to-have workflow improvement; for an MSP, it's close to the core product.