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 type | JSON path |
|---|---|
$.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
| Symptom | Fix |
|---|---|
| URL verification fails | Make 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 mismatch | You copied the wrong secret (OAuth token vs Signing Secret) — re-copy from Basic Information |
| Slash command doesn't respond visibly in Slack | Slack 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 |