[{"data":1,"prerenderedAt":552},["ShallowReactive",2],{"content-query-oWgFfm2TTm":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"layout":10,"author":11,"tags":12,"categories":16,"date":18,"image":19,"faq":20,"body":33,"_type":545,"_id":546,"_source":547,"_file":548,"_stem":549,"_extension":550,"sitemap":551},"/blog/how-to-get-slack-webhook-url","blog",false,"","How to Get a Slack Webhook URL (Incoming Webhooks)","A step-by-step guide to getting a Slack incoming webhook URL — create a Slack app, enable Incoming Webhooks, pick a channel, and post messages with a simple curl. Includes the URL format, a Workflow Builder alternative, and how to send any event to Slack.","post","Karolis Rusenas",[13,14,15],"slack","webhooks","guide",[17],"guides","2026-07-21 09:00:00","/images/generic/webhooks.png",[21,24,27,30],{"q":22,"a":23},"How do I get a Slack webhook URL?","Create a Slack app at api.slack.com/apps, open the Incoming Webhooks feature and toggle it on, click 'Add New Webhook to Workspace', choose the channel to post to, and authorize. Slack then shows a webhook URL under 'Webhook URLs for Your Workspace' that looks like https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXX.",{"q":25,"a":26},"What does a Slack webhook URL look like?","A Slack incoming webhook URL has the form https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX — a workspace ID, an app/webhook ID, and a secret token. Anyone with the full URL can post to the channel, so treat it as a secret.",{"q":28,"a":29},"Is a Slack incoming webhook tied to one channel?","Yes. Each incoming webhook posts to the single channel you selected when you created it. To post to another channel, add another webhook to the workspace and pick that channel — you'll get a separate URL.",{"q":31,"a":32},"How do I send a message to a Slack webhook?","Send an HTTP POST with a JSON body containing a 'text' field (or Block Kit 'blocks') to the webhook URL. For example: curl -X POST -H 'Content-type: application/json' --data '{\"text\":\"Hello\"}' \u003Cyour-webhook-url>.",{"type":34,"children":35,"toc":536},"root",[36,61,68,73,93,105,111,123,245,250,256,268,340,368,374,393,407,428,465,471,509,530],{"type":37,"tag":38,"props":39,"children":40},"element","p",{},[41,44,50,52,59],{"type":42,"value":43},"text","A ",{"type":37,"tag":45,"props":46,"children":47},"strong",{},[48],{"type":42,"value":49},"Slack incoming webhook URL",{"type":42,"value":51}," lets any app or script post messages into a Slack channel with a simple HTTP request — no Slack SDK required. This guide gets you a URL in a couple of minutes, shows the exact format, and covers how to send messages and a no-app alternative. (New to webhooks in general? See ",{"type":37,"tag":53,"props":54,"children":56},"a",{"href":55},"/blog/what-is-webhook",[57],{"type":42,"value":58},"what is a webhook",{"type":42,"value":60},".)",{"type":37,"tag":62,"props":63,"children":65},"h2",{"id":64},"what-a-slack-webhook-url-looks-like",[66],{"type":42,"value":67},"What a Slack webhook URL looks like",{"type":37,"tag":38,"props":69,"children":70},{},[71],{"type":42,"value":72},"An incoming webhook URL has three parts — a workspace ID, an app/webhook ID, and a secret token:",{"type":37,"tag":74,"props":75,"children":78},"pre",{"className":76,"code":77,"language":42,"meta":7,"style":7},"language-text shiki shiki-themes github-dark","https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX\n",[79],{"type":37,"tag":80,"props":81,"children":82},"code",{"__ignoreMap":7},[83],{"type":37,"tag":84,"props":85,"children":88},"span",{"class":86,"line":87},"line",1,[89],{"type":37,"tag":84,"props":90,"children":91},{},[92],{"type":42,"value":77},{"type":37,"tag":38,"props":94,"children":95},{},[96,98,103],{"type":42,"value":97},"Anyone who has the full URL can post to that channel, so ",{"type":37,"tag":45,"props":99,"children":100},{},[101],{"type":42,"value":102},"treat it like a password",{"type":42,"value":104}," — don't commit it to a public repo.",{"type":37,"tag":62,"props":106,"children":108},{"id":107},"get-a-slack-webhook-url-incoming-webhooks",[109],{"type":42,"value":110},"Get a Slack webhook URL (Incoming Webhooks)",{"type":37,"tag":38,"props":112,"children":113},{},[114,116,121],{"type":42,"value":115},"Slack exposes incoming webhooks through a ",{"type":37,"tag":45,"props":117,"children":118},{},[119],{"type":42,"value":120},"Slack app",{"type":42,"value":122},". It sounds heavier than it is:",{"type":37,"tag":124,"props":125,"children":126},"ol",{},[127,168,198,228],{"type":37,"tag":128,"props":129,"children":130},"li",{},[131,136,138,146,148,153,154,159,161,166],{"type":37,"tag":45,"props":132,"children":133},{},[134],{"type":42,"value":135},"Create an app.",{"type":42,"value":137}," Go to ",{"type":37,"tag":53,"props":139,"children":143},{"href":140,"rel":141},"https://api.slack.com/apps",[142],"nofollow",[144],{"type":42,"value":145},"api.slack.com/apps",{"type":42,"value":147}," → ",{"type":37,"tag":45,"props":149,"children":150},{},[151],{"type":42,"value":152},"Create New App",{"type":42,"value":147},{"type":37,"tag":45,"props":155,"children":156},{},[157],{"type":42,"value":158},"From scratch",{"type":42,"value":160},". Give it a name and pick the workspace, then ",{"type":37,"tag":45,"props":162,"children":163},{},[164],{"type":42,"value":165},"Create App",{"type":42,"value":167},".",{"type":37,"tag":128,"props":169,"children":170},{},[171,176,178,183,185,190,192,197],{"type":37,"tag":45,"props":172,"children":173},{},[174],{"type":42,"value":175},"Enable Incoming Webhooks.",{"type":42,"value":177}," In the app's left sidebar, open ",{"type":37,"tag":45,"props":179,"children":180},{},[181],{"type":42,"value":182},"Features → Incoming Webhooks",{"type":42,"value":184}," and toggle ",{"type":37,"tag":45,"props":186,"children":187},{},[188],{"type":42,"value":189},"Activate Incoming Webhooks",{"type":42,"value":191}," to ",{"type":37,"tag":45,"props":193,"children":194},{},[195],{"type":42,"value":196},"On",{"type":42,"value":167},{"type":37,"tag":128,"props":199,"children":200},{},[201,206,208,213,215,220,222,227],{"type":37,"tag":45,"props":202,"children":203},{},[204],{"type":42,"value":205},"Add a webhook to the workspace.",{"type":42,"value":207}," Scroll down and click ",{"type":37,"tag":45,"props":209,"children":210},{},[211],{"type":42,"value":212},"Add New Webhook to Workspace",{"type":42,"value":214},". Choose the ",{"type":37,"tag":45,"props":216,"children":217},{},[218],{"type":42,"value":219},"channel",{"type":42,"value":221}," the webhook should post to and click ",{"type":37,"tag":45,"props":223,"children":224},{},[225],{"type":42,"value":226},"Allow",{"type":42,"value":167},{"type":37,"tag":128,"props":229,"children":230},{},[231,236,238,243],{"type":37,"tag":45,"props":232,"children":233},{},[234],{"type":42,"value":235},"Copy the URL.",{"type":42,"value":237}," Slack drops you back on the Incoming Webhooks page with your new URL listed under ",{"type":37,"tag":45,"props":239,"children":240},{},[241],{"type":42,"value":242},"Webhook URLs for Your Workspace",{"type":42,"value":244},". Copy it.",{"type":37,"tag":38,"props":246,"children":247},{},[248],{"type":42,"value":249},"That URL posts to exactly the channel you chose. Need another channel? Repeat step 3 to add a second webhook and you'll get a second URL.",{"type":37,"tag":62,"props":251,"children":253},{"id":252},"send-a-test-message",[254],{"type":42,"value":255},"Send a test message",{"type":37,"tag":38,"props":257,"children":258},{},[259,261,266],{"type":42,"value":260},"Post any JSON with a ",{"type":37,"tag":80,"props":262,"children":264},{"className":263},[],[265],{"type":42,"value":42},{"type":42,"value":267}," field:",{"type":37,"tag":74,"props":269,"children":273},{"className":270,"code":271,"language":272,"meta":7,"style":7},"language-bash shiki shiki-themes github-dark","curl -X POST -H 'Content-type: application/json' \\\n  --data '{\"text\":\"Hello from an incoming webhook :wave:\"}' \\\n  https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXX\n","bash",[274],{"type":37,"tag":80,"props":275,"children":276},{"__ignoreMap":7},[277,313,331],{"type":37,"tag":84,"props":278,"children":279},{"class":86,"line":87},[280,286,292,298,303,308],{"type":37,"tag":84,"props":281,"children":283},{"style":282},"--shiki-default:#B392F0",[284],{"type":42,"value":285},"curl",{"type":37,"tag":84,"props":287,"children":289},{"style":288},"--shiki-default:#79B8FF",[290],{"type":42,"value":291}," -X",{"type":37,"tag":84,"props":293,"children":295},{"style":294},"--shiki-default:#9ECBFF",[296],{"type":42,"value":297}," POST",{"type":37,"tag":84,"props":299,"children":300},{"style":288},[301],{"type":42,"value":302}," -H",{"type":37,"tag":84,"props":304,"children":305},{"style":294},[306],{"type":42,"value":307}," 'Content-type: application/json'",{"type":37,"tag":84,"props":309,"children":310},{"style":288},[311],{"type":42,"value":312}," \\\n",{"type":37,"tag":84,"props":314,"children":316},{"class":86,"line":315},2,[317,322,327],{"type":37,"tag":84,"props":318,"children":319},{"style":288},[320],{"type":42,"value":321},"  --data",{"type":37,"tag":84,"props":323,"children":324},{"style":294},[325],{"type":42,"value":326}," '{\"text\":\"Hello from an incoming webhook :wave:\"}'",{"type":37,"tag":84,"props":328,"children":329},{"style":288},[330],{"type":42,"value":312},{"type":37,"tag":84,"props":332,"children":334},{"class":86,"line":333},3,[335],{"type":37,"tag":84,"props":336,"children":337},{"style":294},[338],{"type":42,"value":339},"  https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXX\n",{"type":37,"tag":38,"props":341,"children":342},{},[343,345,351,353,360,362,367],{"type":42,"value":344},"For richer messages — buttons, sections, fields — send ",{"type":37,"tag":80,"props":346,"children":348},{"className":347},[],[349],{"type":42,"value":350},"blocks",{"type":42,"value":352}," built with Slack's ",{"type":37,"tag":53,"props":354,"children":357},{"href":355,"rel":356},"https://api.slack.com/block-kit",[142],[358],{"type":42,"value":359},"Block Kit",{"type":42,"value":361}," instead of plain ",{"type":37,"tag":80,"props":363,"children":365},{"className":364},[],[366],{"type":42,"value":42},{"type":42,"value":167},{"type":37,"tag":62,"props":369,"children":371},{"id":370},"alternative-workflow-builder-no-app",[372],{"type":42,"value":373},"Alternative: Workflow Builder (no app)",{"type":37,"tag":38,"props":375,"children":376},{},[377,379,384,386,391],{"type":42,"value":378},"If you'd rather not create an app, Slack's ",{"type":37,"tag":45,"props":380,"children":381},{},[382],{"type":42,"value":383},"Workflow Builder",{"type":42,"value":385}," can generate a webhook trigger: create a workflow, choose ",{"type":37,"tag":45,"props":387,"children":388},{},[389],{"type":42,"value":390},"From a webhook",{"type":42,"value":392}," as the trigger, and Workflow Builder gives you a URL plus a step to post a message. It's handy for no-code posting, though it's less flexible than an app-based incoming webhook and depends on your Slack plan. Verify availability for your workspace.",{"type":37,"tag":62,"props":394,"children":396},{"id":395},"sending-any-event-to-slack",[397,399,405],{"type":42,"value":398},"Sending ",{"type":37,"tag":400,"props":401,"children":402},"em",{},[403],{"type":42,"value":404},"any",{"type":42,"value":406}," event to Slack",{"type":37,"tag":38,"props":408,"children":409},{},[410,412,418,420,426],{"type":42,"value":411},"An incoming webhook is only half the story — you still need something to POST to it in the right shape. That's where Webhook Relay fits: point a provider (Stripe, GitHub, a monitoring alert) at Webhook Relay, ",{"type":37,"tag":53,"props":413,"children":415},{"href":414},"/features/transform-webhooks",[416],{"type":42,"value":417},"transform the payload",{"type":42,"value":419}," into a Slack message, and forward it to your Slack URL — optionally ",{"type":37,"tag":53,"props":421,"children":423},{"href":422},"/features/webhook-multiple-destinations",[424],{"type":42,"value":425},"fanning out",{"type":42,"value":427}," to other destinations too.",{"type":37,"tag":429,"props":430,"children":431},"ul",{},[432,443,454],{"type":37,"tag":128,"props":433,"children":434},{},[435,441],{"type":37,"tag":53,"props":436,"children":438},{"href":437},"/blog/webhook-to-slack",[439],{"type":42,"value":440},"Send a webhook to Slack",{"type":42,"value":442}," — the full forward-and-transform walkthrough.",{"type":37,"tag":128,"props":444,"children":445},{},[446,452],{"type":37,"tag":53,"props":447,"children":449},{"href":448},"/blog/slack-webhook-tester",[450],{"type":42,"value":451},"Slack webhook tester",{"type":42,"value":453}," — inspect exactly what you're sending.",{"type":37,"tag":128,"props":455,"children":456},{},[457,463],{"type":37,"tag":53,"props":458,"children":460},{"href":459},"/blog/receive-slack-events-locally",[461],{"type":42,"value":462},"Receive Slack events locally",{"type":42,"value":464}," — for the other direction (Slack → your app).",{"type":37,"tag":62,"props":466,"children":468},{"id":467},"security-notes",[469],{"type":42,"value":470},"Security notes",{"type":37,"tag":429,"props":472,"children":473},{},[474,486,498],{"type":37,"tag":128,"props":475,"children":476},{},[477,479,484],{"type":42,"value":478},"The URL is a ",{"type":37,"tag":45,"props":480,"children":481},{},[482],{"type":42,"value":483},"secret",{"type":42,"value":485},". Anyone with it can post to your channel.",{"type":37,"tag":128,"props":487,"children":488},{},[489,491,496],{"type":42,"value":490},"To ",{"type":37,"tag":45,"props":492,"children":493},{},[494],{"type":42,"value":495},"revoke",{"type":42,"value":497}," a webhook, delete it from the app's Incoming Webhooks page (or remove the app) and create a new one.",{"type":37,"tag":128,"props":499,"children":500},{},[501,503,507],{"type":42,"value":502},"Incoming webhooks can only ",{"type":37,"tag":45,"props":504,"children":505},{},[506],{"type":42,"value":10},{"type":42,"value":508}," to the chosen channel — they can't read messages or act as a user.",{"type":37,"tag":38,"props":510,"children":511},{},[512,514,520,522,529],{"type":42,"value":513},"Ready to route real events into Slack? ",{"type":37,"tag":53,"props":515,"children":517},{"href":516},"/webhook-bin",[518],{"type":42,"value":519},"Test a webhook now",{"type":42,"value":521}," or ",{"type":37,"tag":53,"props":523,"children":526},{"href":524,"rel":525},"https://my.webhookrelay.com/register",[142],[527],{"type":42,"value":528},"start forwarding for free",{"type":42,"value":167},{"type":37,"tag":531,"props":532,"children":533},"style",{},[534],{"type":42,"value":535},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":7,"searchDepth":333,"depth":333,"links":537},[538,539,540,541,542,544],{"id":64,"depth":315,"text":67},{"id":107,"depth":315,"text":110},{"id":252,"depth":315,"text":255},{"id":370,"depth":315,"text":373},{"id":395,"depth":315,"text":543},"Sending any event to Slack",{"id":467,"depth":315,"text":470},"markdown","content:blog:how-to-get-slack-webhook-url.md","content","blog/how-to-get-slack-webhook-url.md","blog/how-to-get-slack-webhook-url","md",{"loc":4},1784660737137]