Notifications accumulate the way most product surface does: one at a time, each with a reason. Someone shipped a feature and wanted users to know when it fired. Someone else added a reminder because a customer asked. A third added a weekly summary because engagement was down. Every one of those decisions is defensible on its own, and none of them was made with a view of the whole — which is a problem, because the user experiences only the whole. What lands in their inbox is the sum, and the sum is what decides whether they keep reading or start filtering.

The failure mode is the same one the alerting thread described, transplanted from engineers to customers. A notification that doesn’t reliably matter trains people to ignore the channel it arrives on, and that training generalizes: the message about a failed payment sits in the same stream as six updates nobody needed, and gets treated identically. You can’t fix that by making the important one louder, because loudness is exactly what’s been devalued. The only durable fix is that most of what you send is worth opening.

Which makes the useful test the same one that applies to alerts: what should the person do when they receive this? If the answer is a specific action — approve this, your card failed, someone’s waiting on you — it earns an interruption. If it’s “be aware that a thing happened,” it’s a feed item, a digest line, or a badge, not a message. And if the honest answer is “keep the product in mind,” that’s a marketing decision wearing a product notification’s clothes, which is worth naming explicitly rather than smuggling in through the same channel people rely on for real events.

The other half is that notification volume scales with things nobody modeled at design time. A rule that sends one message per comment is fine on a quiet account and unbearable on a busy one; per-event notifications on a bulk import produce hundreds. Batching, digesting, and collapsing related events aren’t polish — they’re what keeps a sensible design from becoming unusable at a scale that some customer will reach. That’s the same “reasonable individually, unreasonable in aggregate” pattern this blog keeps finding, arriving here in the user’s inbox rather than in someone’s load graphs.

The structural fix is having somebody own the total. Not each notification’s author defending their own, but a view of everything a given user might receive in a week, and a willingness to cut. Because the alternative isn’t that users patiently absorb it all — it’s that they mute the channel, and then the one message that genuinely mattered arrives somewhere nobody is looking.