Slack App
Daily summaries and live NPS alerts
Setup
Connect Slack to this workspace
Option A — Incoming webhook (recommended)
Per-workspace, post-only (the app can't read your Slack). No env vars, no redeploy.
-
1
Create a Slack incoming webhook
In Slack, go to api.slack.com/apps → your app → Incoming Webhooks, enable it, and Add New Webhook to Workspace for the channel you want alerts in. Copy the webhook URL. Add one per channel.
-
2
Paste it into the workspace
In the Incoming webhook URL field above, paste the URL and click Save webhook. It saves instantly — no environment variables or redeploy. Switch workspace and repeat with that workspace's channel URL.
-
3
Verify
Click Send test (sample response alert) or Send summary test (sample daily digest) above — it should land in the channel. Real response alerts and the daily summary then post there automatically.
Required scopes (OAuth app)
chat:writePost messages with chat.postMessage.channels:readList public channels for the channel picker.groups:readList private channels the app is in.incoming-webhookPost to the channel chosen during install.Option B — Full OAuth app (per-workspace install + channel picker)
Use this to let each customer install the app and pick a channel from the UI.
-
1
Create the Slack app
At api.slack.com/apps, create an app From an app manifest using the repo's
slack-app-manifest.json. Set the OAuth redirect to<APP_BASE_URL>/api/slack/oauth/callback. -
2
Add credentials to your environment
Set these in Vercel, then redeploy:
SLACK_CLIENT_IDFrom the app's Basic Information.SLACK_CLIENT_SECRETFrom the app's Basic Information.SLACK_SIGNING_SECRETVerifies Slack requests (interactivity/commands).SLACK_STATE_SECRETAny long random string; signs the OAuth state.APP_BASE_URLYour deployed URL, e.g. https://your-app.vercel.app-
3
Install & choose a channel
Open Settings → Notifications, click Connect Slack to run the install, pick the alert channel, then Send test to confirm.