The Importance of Using Slack Notification Sounds to Signal Different Priorities in Your Workday
A reference for mapping message severity to sound treatment. Four tiers, one sound behaviour each. Adapt the examples to your own channel names.
Tiers at a glance
| Tier | Meaning | Response window | Sound | Volume |
| --- | --- | --- | --- | --- |
| P0 | Production down or a customer blocked | Now, interrupt anything | Distinct two-note tone, unlike anything else in your set | Full |
| P1 | Needs you today, not this minute | Within a few hours | Short single tone | ~60% |
| P2 | Normal work, replies, reviews | Same day or next | Soft, low tone | Low |
| FYI | Announcements, bots, digests | Whenever you look | None | Silent |
Tier definitions
P0. Anything where waiting costs money or trust. Pager-class alerts, a named on-call ping, the word outage or SEV1 in any channel, a direct message from whoever runs incident response. This tier should fire less than once a week. If it fires daily, the rule is too broad and the sound has already stopped meaning anything.
P1. Work with a deadline inside the day. Direct mentions from your manager or a blocked teammate, review requests on a release branch, anything in a channel you own during your on-shift hours. Interrupting for these is fine. Interrupting the same way you would for P0 is not.
P2. The bulk of Slack. Thread replies, non-urgent mentions, project channel chatter. Audible enough that you know something arrived, quiet enough that you can finish the sentence you were writing.
FYI. Deploy bots, green CI results, standup reminders, all-hands posts. These belong in the visual notification stack and nowhere else. Silence is a legitimate treatment and it is the right one here more often than people expect.
Example rule patterns
- P0: keyword
SEV1 OR keyword outage OR channel #incident-*
- P1: person = your manager, OR channel
#prod-* AND keyword with your name
- P2: app = Slack, direct messages, default catch-all
- FYI: channel
#deploys OR channel #announcements OR person = any bot account
Wildcards like #prod-* mean you do not rewrite the rule every time someone spins up a new service channel. Combine conditions with AND / OR where a single match is too coarse.
Setup
Chirpy is a native macOS menu bar app. It reads notifications through the macOS Accessibility API, entirely on your machine, and never touches your Slack account.
- Set Slack's own notification sound to None in Preferences > Notifications. Otherwise every alert plays twice.
- Grant Chirpy Accessibility permission in System Settings > Privacy & Security.
- Write one rule per tier, ordered P0 first and FYI last. The first matching rule wins, so ordering is the whole priority mechanism.
- Set per-rule volume: P0 at full, P1 at about 60 percent, P2 low, FYI silent.
- Review after a week. Any rule that fired without needing a response inside its window gets demoted one tier.
Ordering pitfalls
A broad catch-all placed above a narrow rule swallows it. If your P2 "all direct messages" rule sits above your P1 "direct message from manager" rule, the manager rule never fires. Sort narrow to broad, top to bottom, and re-check the order every time you add a rule.
Two rules can legitimately match the same message. Only the first one plays. That is intended behaviour, not something to work around.
Tier drift
Tiers rot upward. A channel gets busier, someone adds a bot, and P1 quietly becomes P2 traffic wearing a P1 sound. Step 5 is the only thing that stops it. Weekly for the first month, then fifteen minutes a quarter.
Build the ladder with Chirpy: rules on app, channel, person or keyword, priority ordering, per-rule volume, 72+ built-in sounds plus your own .mp3, .wav or .caf uploads. macOS 13 or later, 7.8 MB, $19.99 once with a 3-day free trial and no card needed.