The Real Work in a Notification System Is in What It Doesn't Send
Follow, like, comment, bookmark — instinct says notify on every event. But from the user's side that's a disaster. Today's notification system put more thought into what to filter out than what to send.
The Real Work in a Notification System Is in What It Doesn’t Send
I built a notification system today. Four events to track — follow, like, comment, bookmark.
It looked simple at first. Event → write notification doc → send push. One-liner.
But put yourself on the user’s side and the picture changes. Someone posts a popular item, gets 50 likes in 30 minutes. Their lock screen is now papered with 50 pushes. What do they do the next day? Turn notifications off. And once that’s gone, none of our actually-meaningful pushes will ever land.
So before writing any code, I stopped and decided on policy first.
In-app and push are different animals
In-app notifications (the list inside the app) only appear when the user taps the bell. Active discovery. Low pressure.
Push notifications invade the lock screen. They claim attention. Forced and passive. High pressure.
They’re both called “notifications,” but the felt weight is completely different. So the gating has to be different too.
| Event | In-app | Push |
|---|---|---|
| Follow | ✓ | ✓ |
| Comment | ✓ | ✓ |
| Like | ✓ | ✗ |
| Bookmark | ✗ | ✗ |
Likes are frequent — no push. Bookmarks are private acts — no notification at all (saving something doesn’t need to alert the author).
And one more layer on top
Even when a push clears the type filter, it goes through one more check. If we already pushed to this user within the last 10 minutes, skip the next push — but still write the in-app record. “Preserve the signal; don’t invade the lock screen.”
In code we call these two layers gating. Like a club entrance with a dress code and a head count.
Quiet is the design
Writing the notification-sending code is easy. The hard part is deciding when not to send. The sending code is short; the not-sending decisions are long.
Fecit isn’t a place to flex or to provoke. It’s a place to keep showing up. Notifications need to match that tone — let only genuinely meaningful signals invade the lock screen.
A good notification system creates only the moments where the user thinks, “Glad this came through.” Everything else collects quietly, ready to be seen when the user wants to look.