This guide helps you run a real end-to-end Slack flow with your current local setup.
- BacklogAI backend runs locally on port
8001 - Jira runs locally on port
8081 - Cloudflare quick tunnel URL for BacklogAI:
- 📋
https://taxi-copying-powered-recorded.trycloudflare.com
- 📋
- Cloudflare quick tunnel URL for Jira:
- 📋
https://electricity-relationships-activists-clubs.trycloudflare.com
- 📋
Tip: GitHub shows a copy button on fenced code blocks. Use it for commands below.
Note: Quick tunnel URLs are temporary. If the tunnel restarts, update Slack callback URLs with the new URL.
Set where Slack sends command and interaction requests.
Without callback URLs, Slack cannot reach your backend.
- Open 📋
https://api.slack.com/apps - If you do not have an app yet:
- Click Create New App
- Choose From scratch
- Enter app name (for example:
BacklogAI Bot) - Select your workspace and click Create App
- Select your Slack app
- In the app settings page, use this navigation path:
- Left Sidebar -> Features -> Slash Commands
- If you cannot find it, scroll the sidebar and expand Features
- In Slash Commands:
- Click Create New Command (or edit existing)
- Command:
/backlogai - Short description:
Generate backlog story preview - Usage hint:
opens input modal - Request URL:
- 📋
https://taxi-copying-powered-recorded.trycloudflare.com/slack/commands
- 📋
- Click Save
- In the left sidebar, open Interactivity & Shortcuts
- Enable Interactivity
- Request URL:
- 📋
https://taxi-copying-powered-recorded.trycloudflare.com/slack/interactions
- 📋
- Click Save Changes
Grant bot permissions to receive commands and post messages.
Missing scopes block Slack flows even if endpoints are correct.
- Slack app settings -> OAuth & Permissions
- Under Bot Token Scopes, add:
commandschat:write- Optional:
channels:history,users:read
- Click Install to Workspace or Reinstall to Workspace
- Copy Bot User OAuth Token (
xoxb-...) for Step 3
Provide Slack credentials to backend.
Backend needs these to verify Slack requests and post replies.
📋 Copy into project .env:
SLACK_BOT_TOKEN=xoxb-...
SLACK_SIGNING_SECRET=...
SLACK_INTEGRATION_ENABLED=trueWhere to find signing secret:
- Slack app settings -> Basic Information -> App Credentials ->
Signing Secret
Restart backend process.
Existing process does not auto-load changed .env values.
From repo root:
📋 Copy and run:
pkill -f "uvicorn app.main:app" || true
nohup env PYTHONPATH="/Users/rameshk/Desktop/projects/BacklogAI/backend" JIRA_URL="http://localhost:8081" \
/Users/rameshk/Desktop/projects/BacklogAI/backend/.venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8001 \
> /tmp/backlogai-backend-8001.log 2>&1 &Quick checks:
📋 Copy and run:
curl http://127.0.0.1:8001/health
curl https://taxi-copying-powered-recorded.trycloudflare.com/health
curl https://electricity-relationships-activists-clubs.trycloudflare.comBoth should respond successfully.
Run the real user flow.
Confirms Slack -> BacklogAI -> Jira integration works end-to-end.
- In Slack channel, run 📋
/backlogai - Fill modal inputs and submit
- Confirm Story Preview appears
- Click Sync to JIRA
- Confirm Slack posts Jira key + URL
- Open Jira URL and verify issue exists
-
Invalid Slack signature
- Check
SLACK_SIGNING_SECRET - Confirm Slack callbacks hit the same tunnel URL configured in app settings
- Check
-
Cannot find Slash Commands panel
- Open your app at
https://api.slack.com/apps - Select your app first (panel appears only inside an app)
- In left sidebar, expand Features and choose Slash Commands
- If needed, refresh browser after app creation
- Open your app at
-
Command works but no preview
- Check backend logs:
/tmp/backlogai-backend-8001.log - Verify
SLACK_BOT_TOKENandchat:writescope
- Check backend logs:
-
Preview appears but Sync fails
- Check Jira availability at
http://localhost:8081 - Verify Jira credentials in
.env
- Check Jira availability at
-
Tunnel URL changed
- Update Slack command and interactivity URLs with the new tunnel URL
- Use quick checklist:
SLACK_QUICK_TUNNEL_CHECKLIST.md
-
/backlogaishowsdispatch_unknown_error- Most common cause is stale callback URL in Slack app config
- Re-check both URLs point to current tunnel host:
/slack/commands/slack/interactions
- Verify endpoint behavior from browser/CLI:
GETshould return405- unsigned
POSTshould return401