Webhooks & APIIntegrations

Slack

Receive Slack Events API, slash commands, and interactive payloads

Wexio has native Slack signature verification. Paste the app's Signing Secret and Wexio handles the X-Slack-Signature + X-Slack-Request-Timestamp headers.

Provider docs: Setting up webhooks in Slack

Setup

1. Wexio connection

New connection → Inbound → Slack preset (or pick Auth mode: Slack manually).

2. Slack app config

At api.slack.com/apps → select your app → paste the Wexio URL into any of:

  • Event Subscriptions → Request URL — for the Events API
  • Slash Commands → Request URL — for /commands
  • Interactivity & Shortcuts → Request URL — for button clicks and modal submissions

Slack verifies the URL with a handshake — Wexio auto-handles the url_verification challenge.

Copy the Signing Secret from the app's Basic Information → App Credentials page and paste it into Wexio's Signing secret field. (Not an OAuth token — the Signing Secret specifically.)

3. Contact resolution

Slack events are team-internal — normally you don't map to a messaging contact. Use a static contact (the team's shared ops channel on Telegram/WhatsApp) as the flow recipient.

If you do want to map Slack users to Wexio contacts (for escalation from Slack to WhatsApp, for example):

Identifier typeJSON path
Email$.event.user_profile.email (after enriching via users.profile.get)

4. Capture schema, bind a flow

Standard flow. Branch on {{webhook.event.type}} for event subtype.

Timestamp Tolerance

Slack rejects signatures older than ±5 minutes; Wexio mirrors that tolerance on verify. Old replays fail auth and land in history as UNAUTHORIZED: Slack signature timestamp outside ±5 min tolerance.

Troubleshooting

SymptomFix
URL verification failsMake sure url_verification returns the challenge token. Wexio does this automatically — if it's still failing, check Wexio history for a 401
UNAUTHORIZED: Slack signature mismatchYou copied the wrong secret (OAuth token vs Signing Secret) — re-copy from Basic Information
Slash command doesn't respond visibly in SlackSlack expects a response within 3 seconds. Wexio returns 200 immediately; the actual flow runs async. Use response_url from the payload inside the flow to post delayed replies back to Slack

On this page