Skip to content

Slack ​

Standcast posts each team's digest to a Slack channel. One Slack workspace is connected per installation.

Connect ​

Only an organization admin can connect or reconnect Slack: a GitHub organization admin, or the account owner for a personal account. Standcast checks the role with GitHub when the connection starts and again when Slack sends the admin back. Other members see the connection on the setup page read-only.

On the setup page, click Connect Slack and approve the app. The Slack step then shows "Connected to" and the workspace name.

To connect again, for example after the app was removed from Slack or to move the digests to another workspace, click Reconnect Slack on the setup page. It goes through the same approval and replaces the previous connection.

Bot permissions ​

ScopeWhy
chat:writePost the digest and the late dailies in its thread
chat:write.publicPost in public channels without being invited
channels:readTurn a public #channel name into its id
groups:readTurn a private #channel name into its id, for private channels the bot was invited to
users:readLook up Slack users
users:read.emailFind a person's Slack user by their email, to mention them
im:writeSend direct messages: reminders, routed blockers and suggested blockers

Standcast does not read messages.

Channels ​

Set the channel in standcast.yml under chat.channel:

  • "#daily-backend": a channel name. Quote it.
  • C0123456789: a channel id. In Slack, open the channel details; the id is at the bottom.

Public channels work right away: the bot posts without being invited.

Private channels need the bot as a member. In the channel, run /invite and pick the Standcast app, or add it from the channel details under Integrations. Until then, the digest fails with channel_not_found.

Archived channels are not found.

How people are mentioned ​

The digest mentions each person with their Slack user when Standcast knows it, and shows @ followed by their GitHub login as plain text otherwise. A person is linked to their Slack user when they sign in (with standcast login or on the setup page), if Slack is already connected and standcast.yml has a valid version:

  1. If standcast.yml has members.<login>.slack, that id is used.
  2. Otherwise, Standcast looks up the Slack user with the primary verified email of the person's GitHub account.

If neither works, the digest still goes out with @login. To fix it, see My name shows as @login.

Delivery errors ​

When a post fails, the setup page lists it under "Latest failed deliveries" with the team, the date and the error as code: message. Standcast tries each message up to 3 times in total. A digest is retried only within 120 minutes after digest_at. A reminder is sent at most 60 minutes late and never at or after digest_at.

Error codeMeaningFix
channel_not_foundThe channel name does not exist, is archived, or is private and the bot is not in it.Check chat.channel. For a private channel, invite the bot.
not_in_channelThe bot is not a member of the channel.Invite the bot to the channel.
is_archivedThe channel is archived.Unarchive it or pick another channel.
invalid_auth, token_revoked, account_inactiveThe Slack token no longer works, usually because the app was removed from the workspace.An admin clicks Reconnect Slack.
missing_scopeThe token lacks a permission Standcast needs.An admin clicks Reconnect Slack and approves all permissions.
ratelimitedSlack asked Standcast to slow down.Nothing to do; it is retried.
no_chat_connectionSlack is not connected for this installation.An admin clicks Connect Slack on the setup page.
no_chat_identityA reminder or routed blocker could not be sent because the person, or the manager it fell back to, has no Slack user. The setup page shows their login.Ask the person to run standcast login after Slack is connected, or add members.<login>.slack to standcast.yml.
no_route_targetA blocker was reported but there was no recipient at all, for example because the author is the team's only manager.Add another manager to the team.
unsupported_providerThe team uses chat.provider: google-chat, which is coming soon.Use slack.
worker_diedThe worker stopped three times while sending.Contact support if it repeats.
internal_errorUnexpected error. The message has the details.Contact support if it repeats.

After you fix the cause, the next day's digest goes out normally. A digest that already used its 3 attempts is not sent again for that day.