Slack Webhook Trigger: Challenge Not Sent

Hey folks, I’ve followed all the guides for configuring Slack to trigger workflows via webhook, but I’m stuck at the step to enable Event Subscriptions with my Webhook URL.

I have tried everything, read all the forum posts, nothing works:

  1. My workflow is active when testing the production URL
  2. My trigger is listening when testing the test url
  3. I have tried several http methods - POST, GET
  4. I have tested the webhook url with reqbin to confirm it is publicly accessible

In the response I see it looks like Slack isn’t sending a Challenge value?

I am using n8n cloud v 1.108.1

Hey @JasonBroderick hope all is good. Welcome to the community.

Can you expand on how exactly you tried multiple methods?

Hi Jason, how are you doing?

Slack’s Events API requires your endpoint to pass a url_verification handshake: the very first request Slack sends contains a JSON body like

{
  "type": "url_verification",
  "token": "…",
  "challenge": "random‑string"
}

and Slack expects the endpoint to respond with that challenge string within a few seconds. n8n will only handle this automatically if you use the Slack Trigger node’s production URL. A recent forum thread with the same “challenge_failed” error explains that when you paste the Slack trigger’s production URL into Slack’s Event Subscriptions page the platform takes care of the handshake for you. community.n8n.io.

Here are a few tips to get it working:

  • Use the Slack Trigger node, not a generic Webhook. Drag a Slack Trigger node into your workflow, select the events you want, activate the workflow and copy the Production Webhook URL shown in the node. Paste that URL into Slack’s Event Subscriptions “Request URL” field. n8n will return the challenge automaticallycommunity.n8n.io. The test URL (…/webhook-test/…) is only for testing workflows in the editor; Slack’s verification will fail if you use it.

  • If you prefer to use a generic Webhook + Respond to Webhook combination, you must handle the handshake yourself. Add an IF node that checks {{$json.body.type}} === 'url_verification', then send a plain‑text response with {{$json.body.challenge}} in the Respond to Webhook node. Only after the URL verification succeeds should you enable events and let Slack call your workflow normally.

  • Ensure your Slack app is set to send events via POST and that it has the required scopes for the events you subscribe to.

  • If your workflow works when you hit it with curl but Slack still can’t verify it, double‑check that you’re using the production URL and that your workflow is active. n8n Cloud automatically provides a valid HTTPS endpoint, so you don’t need to configure certificates yourself.

Once Slack accepts the URL verification, you can subscribe to message events and other events and n8n will process them through the Slack Trigger node.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.