Skip to main content
Slack signs every Events API request with an HMAC-SHA256 value in the X-Slack-Signature header using a v0=<hex> format, alongside a timestamp in X-Slack-Request-Timestamp. Use the Webhook Debugger to confirm your signing secret is correct, capture both JSON event callbacks and form-encoded interactivity payloads, and prototype immediate response bodies without deploying your real Slack backend.

Configure the actor for Slack

Start the actor with the following input. Replace slack_signing_secret with the signing secret from your Slack app’s Basic Information page.
Slack request verification uses the signed raw body and the X-Slack-Request-Timestamp header. The tolerance value (in seconds) controls how far apart the request timestamp and server clock can be before verification fails. The default of 300 seconds matches Slack’s own tolerance window. After the actor starts, call /info to retrieve the generated webhook URL.

Set the request URL in your Slack app

1

Open your Slack app settings

Go to api.slack.com/apps, select your app, and open Event Subscriptions or Interactivity & Shortcuts depending on what you want to test.
2

Paste the endpoint URL

Copy the /webhook/:id URL from /info and paste it into the Request URL field.
3

Handle the URL verification challenge

Slack immediately sends a url_verification challenge when you save the URL. The actor returns {"ok":true} by default, which does not satisfy Slack’s challenge response requirement.Use a customScript to return the challenge value:
Paste this script into the customScript field in the actor input before saving the Request URL in Slack.
4

Subscribe to events or enable interactivity

Once the URL is verified, subscribe to the event types your app handles (for example, message.channels or app_mention) or enable interactivity for slash commands and interactive components.
Interactive payloads from slash commands and block actions are sent as application/x-www-form-urlencoded, not JSON. The actor captures them as raw text. Use the customScript or forward the payload to app code that already knows how to decode Slack interactivity data.

Test event callbacks and slash commands

After Slack delivers a callback, query /logs to see what was captured. Filter for Events API JSON callbacks:
Filter for signature failures:
Filter for form-encoded interactivity payloads:
A captured event callback looks like this:

Prototype a custom immediate response

Use customScript to return a custom response body for interactivity requests without deploying your real Slack backend:
Turn on forwarding after you confirm the payload shape you want your real app to consume.

Common failure patterns