Slack Tools

Slack Webhook Sender

Build the exact JSON payload and a one-line curl command for a Slack Incoming Webhook. Browsers block posting to Slack directly (a CORS restriction), so copy the curl command and run it in your terminal. You can still try the in-browser send to see the block for yourself.

Advanced: raw JSON / Block Kit (optional)+

Paste a full Slack payload, for example a blocks array from the Block Kit Builder. When this box has content it overrides the simple message text. Leave it empty to send plain text.

Payload

JSON sent to Slack

{
  "text": "Hello team"
}
Terminal

Ready-to-run curl command

curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello team"}' https://hooks.slack.com/services/YOUR/WEBHOOK/URL

Add your webhook URL above to replace the placeholder in the command.

Optional

Try to send from the browser

Heads up: browsers almost always block this with a CORS error because Slack webhooks do not send CORS headers, so the request never reaches Slack. The curl command above is the reliable way to post your message. This button is here so you can confirm the behaviour yourself.
Enter a valid webhook URL first.
FAQ

Slack webhook sender FAQ

Why does the browser send fail with a CORS error?+

Slack's incoming webhook endpoint (hooks.slack.com) does not return the Access-Control-Allow-Origin header, so browsers block cross-origin requests to it for security. The request never reaches Slack. This is expected and cannot be fixed from a web page. Copy the curl command instead and run it from a terminal, script, or server, which is not subject to the browser CORS rules.

How do I create a Slack Incoming Webhook URL?+

Open api.slack.com/apps and create (or open) an app for your workspace, choose Incoming Webhooks, toggle it on, then click Add New Webhook to Workspace and pick a channel. Slack gives you a URL that starts with https://hooks.slack.com/services/ followed by three path segments. Paste that URL into the field above.

What is the curl command for?+

It is the exact request Slack expects: a POST to your webhook URL with a Content-type of application/json and your payload as the body. Paste it into any terminal (macOS, Linux, or Windows with curl) and it posts the message to your channel. It is the reliable path because it runs outside the browser.

Can I send Block Kit blocks, attachments, or a custom username?+

Yes. Open the advanced raw JSON box and paste any valid Slack payload, for example an object with a "blocks" array from the Block Kit Builder, or fields like "username" and "icon_emoji". When the raw box has content it overrides the simple message text, and the tool re-serializes it so the JSON stays valid.

Is this tool free and is my webhook safe?+

It is completely free with no login. Everything runs in your browser: the payload and curl command are built locally and nothing is sent to Digital Den. The only request that ever leaves is the optional browser send test, which goes straight to Slack (and is normally blocked by CORS anyway). Still, treat a webhook URL like a password, since anyone with it can post to that channel.

Related tools

All tools →

More in Slack Tools.