SiteAud!tLint Support

Full issues CSV in Slack (bot token)

Add a Slack bot token with chat:write, files:write and files:read scopes so each audit uploads the complete issues CSV into the message thread.

With a bot token saved, every audit posts its Slack message, uploads a file named <site>-issues-<date>-audit<N>.csv into the message's thread, and adds a Download link to the message.

Set up the bot

  1. Open your Slack app at api.slack.com/apps and go to OAuth & Permissions.
  2. Under Scopes > Bot Token Scopes, click Add an OAuth Scope and add chat:write, files:write and files:read.
  3. Scroll up, click Install to Workspace (or Reinstall to Workspace), then Allow.
  4. Copy the Bot User OAuth Token. It starts with xoxb-.
  5. In the Slack channel, send /invite @SiteAuditLint (use your app's name).
  6. In SiteAud!tLint, Settings > Connections: paste the token into Bot token, type the channel (for example #siteauditlint, or its channel ID), click Save, then Send test message. The test posts a message with a one-row test CSV in its thread.

What is in the CSV

One row per URL and issue: severity, issue, URL, evidence, category, new since last audit (yes or no), and how to fix it. Info notices are only in the CSV, not the message. When Linear is connected, a linear_ticket column links each row to its ticket.

Good to know

  • When both a webhook and a bot are saved, the bot is used.
  • If the upload fails, the message still arrives and says why the CSV is missing.
  • Leave token rotation off for this Slack app. With rotation on, the token stops working after 12 hours.

Frequently asked questions

Why does the test say not_in_channel?

The bot has not been invited to the channel. Send /invite @YourAppName in that channel and test again.

Why does the upload fail with missing_scope?

One of the three scopes is missing, or the app was not reinstalled after adding it. Add the scope, click Reinstall to Workspace, and paste the token again if it changed.

Applies to SiteAud!tLint 0.4.1 and later. Current version 0.7.1.