Skip to content

Slack

Workforce0 becomes a native member of your Slack workspace. It:

  • Posts briefs and approval cards into chosen channels.
  • Receives inline button clicks (Approve / Redirect / Pause).
  • DMs the exec for urgent clarifying questions.
  • Threads every update under the brief’s original message.
  1. Slack side — create a Slack app

    • api.slack.com/appsCreate New App → From manifest.
    • Paste the manifest from docs/integrations/slack-manifest.yaml in the repo. It has the scopes, event subscriptions, and interactivity URLs pre-set.
    • Install to workspace → approve the scopes.
    • Copy the Bot User OAuth Token (xoxb-…) and the Signing Secret.
  2. Workforce0 side

    • Integrations → Slack → Connect.
    • Paste xoxb-… and the signing secret.
    • Test: click Send test message to a channel you invite the bot to.

From the manifest:

  • chat:write — post messages.
  • chat:write.public — post in channels the bot isn’t a member of.
  • commands — slash commands (/workforce0 status, /workforce0 brief).
  • im:write — DM the exec.
  • reactions:write — react to messages (a ✓ when a clarifying question is answered).
  • channels:read — list channels for routing.
  • users:read — map Slack users to Workforce0 accounts.

No broader read scopes. We can’t see other channels’ contents.

  • Default — every brief posts to a single channel (e.g. #exec-briefs).
  • Per project — map project → channel in Integrations → Slack → Routes.
  • Per roledev_agent pings to #dev-briefs, ba_agent to #research-briefs. Useful at medium / large companies.
  • /workforce0 status — current open briefs awaiting action.
  • /workforce0 brief <project> — start a brief from scratch without a meeting.
  • /workforce0 approve <brief-id> — alternate approval path for keyboard users.
  • Approvals → channel (by default), for visibility.
  • Clarifying questions → DM to the specific exec (quieter).
  • Failure escalations → DM, with a “mention in channel?” button if the exec wants to bring it public.

Inline action buttons POST to /api/webhooks/slack with Slack’s signed payload. We verify the signature against your signing secret before handling.

No action completes silently. Every button click gets either an ephemeral ”✓ received” toast or a thread reply.

If your org has multiple Slack workspaces (parent + subsidiaries), each needs its own app install. Workforce0 supports N connected Slack workspaces per tenant.

Integrations → Slack → Disconnect tears down the OAuth token server-side. Also revoke in Slack’s app management to clean up on Slack’s side.

SymptomFix
Messages arrive, buttons do nothingInteractivity URL wrong in app config.
”not_in_channel” errorsInvite the bot to that channel.
Signature verification failingSigning secret wrong or clock drift > 60s.
Duplicate messagesTwo bot installs in the same workspace.