Slack

Setting Up a Slack Webhook (and Where It Stops Being Enough)

A Slack incoming webhook is a unique URL that posts a message into one specific channel whenever you send it an HTTP request, no login or ongoing session needed. You get one by creating a Slack app, turning on the Incoming Webhooks feature inside it, and installing that app to a channel; Slack retired the old standalone webhook page years ago, so an app is the only path there now. It's genuinely the fastest way to get an automated message into Slack. It's also a one-way street, and that's exactly where it runs out of road.

Getting a webhook URL and actually using it

Inside your Slack app's settings, under Incoming Webhooks, you flip the feature on and click “Add New Webhook to Workspace.” Slack asks which channel it should post to and hands back a URL that looks like a long, unguessable address. Anyone (or anything) that sends a POST request to that URL with a JSON payload gets a message posted into that channel, formatted as plain text, attachments, or a full Block Kit layout if you want buttons and structure rather than a flat line of text.

Each webhook URL is tied to exactly one channel. If you want messages landing in three different channels, you need three different webhook URLs, created the same way, each installed against its own destination. That's a common surprise for anyone expecting one webhook to post anywhere based on a parameter in the request.

What a webhook genuinely can't do

A webhook only sends. It has no way to read anything back, so a message posted through a webhook can't carry working buttons that trigger a response, can't react to someone replying in the thread, and can't be edited or deleted later through the same mechanism. Anything interactive needs a full app built on the Events API and interactive components instead, which is a different, heavier setup covered on the Slack API page →.

Webhooks also have no built-in retry or delivery guarantee beyond a standard HTTP response. If your system sends the request and Slack's endpoint is briefly unavailable, that message is simply gone unless your own code catches the failure and tries again. For a one-off alert that's a minor annoyance; for something a business actually depends on, like a fulfillment delay notice, silent message loss is a real risk.

What that looks like built out

Webhook delivery that actually gets confirmed

An alert that retries automatically and logs a failure somewhere a person will actually see it, instead of a message that just silently never arrived because Slack's endpoint hiccuped for a second.

One alert, routed to the right channel every time

A single event source that correctly posts to whichever channel matches the account, region, or team it belongs to, managing the handful of separate webhook URLs behind the scenes so nobody has to track which URL goes where.

Where's a webhook already failing silently on you?

If a Slack alert has ever just not shown up and nobody noticed for a day, that's usually a webhook with no retry logic behind it. Tell us which one.

Let's talk

Posting into Slack through a webhook that was never built to be reliable?

Tell us what the message is supposed to say, how often it fires, and what happens on the day it doesn't show up. We'll look at whether that still fits a webhook with proper retry logic or needs a full app with real delivery guarantees. Slack alerts are one example; n-frames fixes whatever's quietly unreliable across the rest of your business too.

Let's talk

Frequently Asked Questions

How do I create a Slack webhook URL?+
Create (or open) a Slack app at api.slack.com, turn on the Incoming Webhooks feature under its Features section, then click Add New Webhook to Workspace and pick the channel. Slack generates a unique URL immediately; anything you POST to it posts as a message in that channel.
Can I use one Slack webhook for multiple channels?+
No. Each webhook URL is bound to the single channel you selected when you created it. Posting to different channels means creating a separate webhook for each one and sending the right request to the matching URL.
Is a Slack webhook URL a secret I need to protect?+
Yes. Anyone with the URL can post messages into that channel with no further authentication, so treat it like a credential, not a public link. If one leaks, delete it from the app's settings and generate a new one.
What's the difference between an incoming webhook and a Slack bot?+
A webhook only sends messages one way, with no way to read replies or respond to clicks. A bot, built on the Events API and the Web API together, can react to messages, handle interactive buttons, and carry on something closer to a real conversation. Webhooks are simpler and faster to set up; bots are what you need once the automation has to go both directions.
Why did my old Slack webhook URL stop working?+
Slack retired its standalone, app-free webhook creation page some time ago. Any webhook created that old way still needs to live inside an app's Incoming Webhooks settings now; if an app was deleted or had the feature disabled, its webhook URLs stop working immediately.

Let's talk

Tell us the one thing your team does manually that eats up time. We read every message and reply within a day.