# Why I Built Claude Notifications: Claude Code Notifications on Any Channel

> I kept coming back to Claude Code runs that had been waiting on me. So I built an open-source plugin that sends hook events to Slack, Discord, email, WhatsApp, voice or web push.

*2026-10-19T12:49:01Z*

# Why I Built Claude Notifications: Claude Code Notifications on Any Channel

I start long Claude Code runs and walk away. Too often I came back about forty minutes later to find it had been waiting for my answer the whole time.

That is the whole reason **Claude Notifications** exists. It is a Claude Code plugin that sends Claude Code notifications to where I will actually see them.

![Why I built Claude Notifications](https://fadymondy.com/uploads/sites/3b93f650-28ec-4093-99aa-e7b16c2a2e2f/media/why-i-built-claude-notifications-en.png)

## What I wanted

Two moments matter in a long run: it finished, and it needs me. Claude Code already exposes both as hook events. What was missing was something that takes those events and sends them out, to Slack, Discord, email, WhatsApp, a desktop voice line or a web push on my phone, with me choosing the channels and the events.

So the plugin does exactly that and nothing more. One script, `scripts/notify.sh`, is bound to the hook events. It runs each enabled channel in parallel with a 5-second cap and always exits 0, so a broken webhook can never block Claude.

## Choices I made, and what they cost

- **Plain bash for the dispatcher.** It needs `bash`, `jq` and `curl`, which most machines already have. The cost: it is shell, so adding a channel means writing a small shell script. I made that the documented path: drop a `.sh` in `~/.claude-notifications/channels/`.
- **Seven channels built in:** desktop, Slack, Discord, email, WhatsApp, web push and a signed generic webhook. WhatsApp goes through Twilio or CallMeBot, so it needs an account or key with one of them.
- **Routing per event.** Nothing fires unless you list the event. The README warns that `pre-tool`, `post-tool` and `user-prompt` fire many times per turn, so they are opt-in for a reason.
- **A tray app, optional.** The repo history shows the Electron tray app arriving within the first two days (the first commit is dated 2 May 2026), because editing JSON for credentials is not how most people want to configure Slack. It reads and writes the same `config.json` as the dispatcher.

## Where it is now

It is open source under the MIT license and free. There are three slash commands (`/notify`, `/notify-test`, `/notify-setup`), three skills and a `notification-manager` agent for wiring up custom channels and debugging silence. It launches on Product Hunt on 21 October.

It is not built on ToGO. It is a Claude Code plugin with a bash core.

## FAQ

**Who is it for?** Anyone who runs Claude Code on long tasks and doesn't want to sit and watch the terminal.

**Is it open source?** Yes, MIT.

**What would I like to hear?** Which channel you would turn on first, and which event you would want that isn't there yet.

## Next steps

- The full guide with install steps, config and troubleshooting: [Claude Code notifications on Slack, Discord, WhatsApp or voice](https://notifications.fadymondy.com/en/blog/claude-code-notifications-slack-discord-whatsapp-voice).
- The code: [github.com/fadymondy/claude-notifications](https://github.com/fadymondy/claude-notifications).
- The launch: [Product Hunt](https://www.producthunt.com/products/claude-notifications).

---

Source: https://fadymondy.com/en/blog/why-i-built-claude-notifications
