Slack Event Listener — challenge_failed on URL verification; challenge-response config doesn't persist after save

Hi all,

I'm configuring a Slack Event Listener in integrator.io to receive Events API notifications, and I can't get past Slack's URL verification handshake. I'd like to know whether this is a known issue, a known limitation of Slack-native listeners, or whether I've missed a configuration step.

Symptom: Slack consistently returns challenge_failed during URL verification.

What Slack sends (the listener receives it fine — I can see the full body, including challenge, in the debug logs):

json

{
  "token": "...",
  "challenge": "ZokfTcncoHABNTq1PB71...",
  "type": "url_verification"
}

What the listener returns — HTTP 200, but with an empty body and empty headers, so Slack never sees the echoed challenge:

json

{
  "statusCode": 200
}

The part that looks like the root cause: every time I open the listener, set values under "Configure response for challenge requests", Save & Close, and then re-open it, the configuration is gone — override response media type reverts, response headers disappear, and the response body is blank again. The challenge-response settings don't appear to persist across a save.

Already tried:

  • Response body set to {{record.challenge}}, and as static values
  • Plain-text response media type / Content-Type: text/plain
  • Detection rules on record.challenge is not empty, record.type = url_verification, and request headers
  • Re-validated the Slack Signing Secret
  • Confirmed Slack is hitting the correct listener URL and that the listener receives the verification request

Working hypothesis: the challenge-response configuration is either not being saved or being ignored at runtime, so the listener returns 200 with an empty body instead of echoing the challenge.

My questions:

  1. Is this a known issue or limitation with Slack-native Event Listeners?
  2. Are Slack-native listeners supposed to handle the url_verification handshake automatically, with no manual challenge-response config?
  3. Is "Configure response for challenge requests" actually supported/persisted for Slack-native listeners, or is it intended only for generic HTTP listeners?
  4. Has anyone completed Slack URL verification with this listener recently — and if so, what does a working config look like?

Happy to share listener exports, screenshots of the blank challenge-response config after re-opening, and debug logs. Any acknowledgment of whether this is known, or a working reference config, would be appreciated.

Thanks!

Can you try this using the generic webhook connector? I wonder if it's an issue with the branded Slack connector.



The verification for this is working on my end and fields aren't getting wiped for me. I couldn't verify runtime for a non challenge event because I need IT to approve my app first :slight_smile: