Part 1: Slack Data Ingestion
Set up a Slack app so ConfigView can pull your workspace data (users, channels, user groups) into the dashboard.Step 1: Create a Slack App
- Go to: https://api.slack.com/apps
- Click Create New App
- Choose From scratch
- App Name:
ConfigView - Pick your workspace from the dropdown
- Click Create App
Step 2: Add Bot Token Scopes
- In the left sidebar, click OAuth & Permissions
- Scroll down to Scopes > Bot Token Scopes
- Click Add an OAuth Scope and add each of the following:
| Scope | Purpose |
|---|---|
users:read | Read workspace member profiles |
users:read.email | Read member email addresses |
channels:read | List public channels |
groups:read | List private channels the bot is in |
usergroups:read | List user groups and their members |
Step 3: Install the App to Your Workspace
- Scroll to the top of OAuth & Permissions
- Click Install to Workspace
- Review the permissions and click Allow
- Copy the Bot User OAuth Token (starts with
xoxb-)
Keep this token safe. You will add it to ConfigView in the next step.
Step 4: Add the Token to ConfigView
- Go to your ConfigView dashboard:
https://{companyname}.configview.com/admin/secret/ - Click Add Secret
- Secret name:
SLACK_BOT_TOKEN - Secret value: Paste the
xoxb-...token you copied - Click Save
Step 5: Enable the Slack App in ConfigView
-
Go to:
https://{companyname}.configview.com/admin/app/ - You should see Slack in the list of available apps
-
Select the scripts you want to run:
- Users — All workspace members with email, admin status, 2FA, timezone
- Channels — Public and private channels with member counts
- User Groups — Handle-based groups (e.g. @engineering)
- User Group Members — Which users belong to which groups
- Click Save
Note: User Group Members depends on User Groups. ConfigView handles this automatically — it will always run User Groups first.
Step 6: Verify
- Go to:
https://{companyname}.configview.com/admin/status/ - Run the Slack health check
- All checks should pass:
- Secret Manager access
- Slack API auth
- users.list scope
- conversations.list scope
- The
SLACK_BOT_TOKENsecret is saved correctly (no extra spaces) - The bot has been installed to the correct workspace
- All scopes from Step 2 were added before installing
Data Tables
Once the scripts run, the following tables are created:| Table | Key Columns |
|---|---|
slack_users | slack_user_id, email, real_name, is_admin, has_2fa, deleted |
slack_channels | channel_id, name, is_private, is_archived, num_members, creator |
slack_user_groups | group_id, name, handle, user_count |
slack_user_group_members | group_id, slack_user_id |
run_at column for historical tracking.
Part 2: Slack Bot (Query Runner)
Run ConfigView queries directly from Slack using the/configview slash command.
Step 1: Add Bot Scopes
- Go back to: https://api.slack.com/apps
- Select your ConfigView app
- Go to OAuth & Permissions > Bot Token Scopes
- Add the following additional scopes:
| Scope | Purpose |
|---|---|
chat:write | Post messages to channels |
commands | Enable slash commands |
- You will be prompted to reinstall the app. Click Reinstall to Workspace and approve.
Important: After reinstalling, the bot token stays the same. You do not need to update the secret in ConfigView.
Step 2: (Optional) Add Signing Secret
The signing secret lets ConfigView verify that incoming requests are genuinely from Slack.- In your Slack app settings, go to Basic Information
- Scroll to App Credentials
- Copy the Signing Secret
- In ConfigView, go to
https://{companyname}.configview.com/admin/secret/ - Add a secret: Name:
SLACK_SIGNING_SECRET, Value: paste the signing secret
This is optional but recommended for production use.
Step 3: Enable the Slash Command
- In the left sidebar, click Slash Commands
- Click Create New Command
- Fill in:
- Command:
/configview - Request URL:
https://{companyname}.configview.com/api/slack/command - Short Description:
Run ConfigView queries - Usage Hint:
[help | run <query_id>]
- Command:
- Click Save
Step 4: Enable Interactivity
This lets users click the “Run” buttons in the query list.- In the left sidebar, click Interactivity & Shortcuts
- Toggle Interactivity to On
- Set Request URL to:
https://{companyname}.configview.com/api/slack/interaction - Click Save Changes
Step 5: Invite the Bot to a Channel
- Open the Slack channel where you want the bot to post (e.g.
#configview-alerts) - Type:
/invite @ConfigView
Create a dedicated channel like #configview-alerts to keep query results organized.
Step 6: Mark Queries as Slack-Enabled
- Go to:
https://{companyname}.configview.com/admin/query/ - Open a saved query and click Save
- Toggle Enable for Slack bot to on
- Fill in the Slack summary — this is the description users see when browsing queries in Slack
- Click Save
Step 7: Test It
- Open the Slack channel where the bot was invited
- Type:
/configview - You should see a list of slack-enabled queries with Run buttons
- Click Run on a query — the bot posts the results to the channel
Bot Commands
| Command | Action |
|---|---|
/configview | List all slack-enabled queries with Run buttons |
/configview run <id> | Run a specific query by ID and post results |
/configview help | Show available commands |
Message Format
The bot posts formatted messages with:- Query name as the header
- Row count summary
- Table of results (up to 10 rows, 6 columns)
- Truncation notice if results exceed the display limit
Troubleshooting
| Issue | Fix |
|---|---|
/configview says “not found” | Verify the Slash Command Request URL matches your ConfigView domain |
| Bot posts nothing on button click | Check the Interactivity Request URL is correct |
| ”channel_not_found” error | Verify the channel name — no # prefix, exact spelling |
| ”not_in_channel” error | The bot must be invited to private channels with /invite @ConfigView |
| ”not_authed” or “invalid_auth” | Verify SLACK_BOT_TOKEN secret is correct in ConfigView |
| Query results are empty | Check that the query works in the ConfigView Query page first |
| Messages stop after app reinstall | Token should persist, but re-check SLACK_BOT_TOKEN if issues occur |