Every channel · one API · one key
One API for every message.
Email, SMS, Slack, Discord: every project signs up for a provider per channel, keeps the keys and writes its own retries. notifything is one API in front of all of them, with one key and the scopes you set. No dashboards.
Act I
Every project, every provider.
A shop wants to email receipts, text a code and ping a channel when an order fails. Here's what that takes, before the next project needs the same.
01 · Email
Sign up for email.
An account, a verified sending domain, three DNS records you copy by hand, and an API key you'll paste into a project.
02 · SMS
Then a second provider for SMS.
Another account, a phone number to buy, a business to verify, and a trial mode that only texts numbers you've verified yourself.
03 · Chat
Then Slack, then Discord.
An app or a webhook in each, and the URLs pasted into an .env file, because a webhook URL is a key nobody treats as one.
04 · The code
Then glue it together.
Two SDKs, two raw webhooks, four error shapes and a retry loop that resends everything when one fails. Every project writes this again.
05 · And then it changes
A provider changes its prices.
Now the SDK, the keys and the DNS records change in every project that copied this code, one pull request at a time.
That was one project.
- providers signed up
- 4
- keys to keep
- 4
- ways it fails
- 3
- projects that copy it
- all of them
Here's the same message, with notifything.
Act II
The notifything way.
Providers, keys, retries and templates live in one place. A project gets one key and makes one call.
01 · One key
One key, scoped to what it may do.
A project gets a key that can send, say, email and Slack to its own groups, and nothing else. You decide the scopes; revoking it is one command.
02 · One call
One call, any channel.
The project names who it's for and what to say. notifything decides how: which channels, which provider, and what to retry if one fails.
03 · Channels are config
Who gets what is written down.
Groups and channels live in one file, so moving the ops alerts from Slack to Discord is an edit, and no project knows it happened.
04 · The provider changes
And a provider swap is one line.
Change the provider in one place and every project sends through the new one. Zero pull requests, zero keys handed out again.
Act III
Why one place.
Sending a message is boring until it fails. notifything is where the boring failures get handled, once, for everything that sends.
-
1
One API
Email, SMS, Slack, Discord and whatever comes next are channels behind the same call. A project never learns a provider's SDK.
-
2
One key, your scopes
Each project holds one key that can do exactly what you allowed: which channels, which groups. No dashboard to remember it in.
-
3
The hard parts, once
Retries that don't resend what already went out, rate limits, templates and delivery status. Fix it here and every project gets the fix.
| Measure | Per project | notifything |
|---|---|---|
| Provider accounts | one per channel | none in any project |
| Keys in each project | one per provider | one, scoped |
| Retries and failures | a loop in every codebase | handled once |
| Changing a provider | a pull request per project | one line |
| Dashboards | one per provider | none |
Tired of wiring up email again?
Tell me which channels your projects send to. notifything is the seam every project here will send through.