Troubleshooting
Common problems and their fixes.
My Slack messages aren't appearing
- Is the bot in the channel? Run
/invite @DevPulse. - Did Slack accept your Request URL? Open your Slack App settings → Event Subscriptions. The Request URL should show a green checkmark. If it shows red, your
SLACK_GLOBAL_SIGNING_SECRETmay not be configured. - Are scopes correct? You need
channels:historyat minimum, plusgroups:history,im:history,mpim:historyfor non-public channels. - Does the message contain a PR URL or a keyword? See parsing rules.
I see a 401 in the Slack "Recent Events" tab
The signing secret stored in DevPulse doesn't match the one Slack is sending. Re-copy the signing secret from Basic Information → App Credentials and paste it into Settings → Slack integration.
OAuth install fails with signing_secret_missing
Set SLACK_GLOBAL_SIGNING_SECRET in your server's environment. This is the signing secret of the Slack App you registered — the same value you'd paste in manual setup.
Outgoing webhook fails to deliver
- Check the Health page for pending delivery count.
- Verify your endpoint returns
2xx. Anything else triggers retry-with-backoff. - Confirm the URL is publicly reachable (firewalled internal hosts won't work without a tunnel).
Daily digest emails aren't arriving
- Is
RESEND_API_KEYset on the server? - Is
DIGEST_FROM_EMAILa verified sender in Resend? - Workspace timezone and day boundary determine when the cron fires. Default is local 17:00. The Vercel cron runs every 30 minutes and only delivers when local time matches.
Sprint progress doesn't update after a merge
A ticket is only marked done when at least one PR for it has both an approved event AND status merged. If you merged without ever recording an approval, the ticket stays open. Post approved <PR URL> in Slack to add the missing signal.
Need more help?
Visit /<workspace>/health to see system status, recent events, and any pending webhook deliveries.