Blog
Get SupahPost in Slack in one click
Your posting tool should tell you when a post goes out, and especially when one does not. What that looks like in Slack, why it used to take nine steps, and what the app actually asks permission for.
Connecting SupahPost to Slack now takes one press and a channel picker. Open Settings, then Connections, press Add to Slack, choose a channel on Slack's own screen, press Allow. That is the whole thing, and it works while your computer is off.
This post is about why it used to be nine steps, what the app can and cannot see, and one detail of the screen that took longer to get right than the connection itself.
What lands in the channel
A short message the moment something happens to one of your posts. There are four kinds and you tick the ones you want:
| What | When it arrives | On by default |
|---|---|---|
| A post went out | Every time something publishes | Yes |
| A post did not go out | Something needs your attention | Yes |
| A post was scheduled | Somebody queued something up | Yes |
| Your numbers finished updating | Background housekeeping finished | No |
The last one is off on purpose. A channel that pings when a background job finishes is a channel people mute, and a muted channel is worse than no channel — the failure notice is still arriving, and nobody is reading it.
The message that earns its place is the second one. A post that fails is invisible: your calendar still shows it, the platform simply never received it, and unless something tells you, you find out when somebody asks why you went quiet.
Why the old version took nine steps
Slack has two ways for an app to post into a channel, and the difference is entirely about who does the work.
The way most tools ship first is an incoming webhook you create yourself. You open Slack's developer console, create an app, find the Incoming Webhooks section, turn a toggle on, add a webhook to your workspace, choose a channel, copy a long address, go back to the other product, and paste it in. Nine steps, two of them inside a developer console, for somebody whose actual goal is "tell me when a post goes out".
It ships first because it needs nothing from Slack: no app registration, no review, no distribution. Every product can build it in an afternoon. It is also the reason a lot of people never turn notifications on at all.
The other way is Slack's own install flow. We register one app, once. You press a button, Slack shows you its own screen with a channel picker on it, you choose and approve, and Slack hands us an address bound to that channel. The nine steps happen on Slack's side, where they are one screen.
The scope that makes this work is incoming-webhook, and it is the only one of Slack's scopes whose consent screen carries a channel picker — which is why the whole flow collapses into one press rather than into "connect, then come back and choose a channel". Checked 2026-09-08 against Slack's own incoming webhooks documentation.
Both doors are still open here, and the second is not a fallback for the first. Slack will not send somebody back to an address on your own laptop, so a local install genuinely has no one-click flow — and some Slack administrators restrict which apps can be installed at all. When the button is not available the nine steps are on the screen, numbered, with a box to paste the result into.
What the app is allowed to do
One permission: post to the single channel you picked.
That is not a policy we promise to follow — it is the only thing the app asks Slack for, and a Slack app cannot do what it did not ask for. It has no access to your messages, your other channels, your files, or your member list, because none of those were requested. You can see exactly what was granted under Apps in your Slack settings, and remove it there in one click, independently of anything on our side.
The other half of that is what we keep: only what the feature needs, and nothing more. The screen never shows the channel address back in full — just the last four characters, which is enough to tell two connections apart and useless to anybody who copies it.
The third state
Here is the detail that took the longest.
Every product's connection screen has two states: connected, and not connected. Both are easy, and between them they miss the one that actually bites — connected, and nothing has ever arrived.
From your side that looks exactly like a quiet week. The row says connected. No error appears anywhere, because from the software's point of view nothing has gone wrong: it has an address, and it has had nothing to send. Meanwhile the channel was archived in March, or the app was removed from it, or every event got unticked during a tidy-up. You find out in November, when you go looking for the notification about the post that failed and there was never one to find.
So the row has a third state, and it says so in words: Nothing has arrived here yet. Send a test to make sure it works. The Send a test button next to it sends a real message through the real routing — not a validation of the configuration, an actual message that either turns up in your channel or does not.
That distinction matters more than it sounds. A button that checks the settings and reports success is the button that lets you discover six weeks later that your alerts have been going nowhere. Every part of the chain can be correct and the message can still not arrive.
Splitting it up
A Slack address is bound to one channel, so everything goes to the same place by default. If you want publishing news somewhere quiet and problems somewhere people look, open More channels on the Slack row and add a second address for each. Each has its own test button, and each test travels the same path a real message does — so a test that lands proves the real one will.
If you already use SupahPost, it is in Settings → Connections, and the step-by-step version with pictures covers both doors and what to do when nothing arrives.