# Recipe variant: social workflow with Add to Slack

**When available.** This variant needs the `slack_app` capability. Until `whoami` shows `slack_app: true`, use the main [social post workflow](/docs/recipes/social-workflow) with your own Slack app.

With Add to Slack, a workspace owner or admin installs the shared BakedBrie Slack app with one click. There is no Slack app to create, and no bot token or signing secret goes through `prepare_secret`.

## What the person does in the app

1. Go to **Settings** and click **Add to Slack**. Only workspace owners and admins can install it. Approve the install in Slack.
2. For a private channel, type `/invite @BakedBrie` in that channel so the bot can see it.
3. After the prompt below has made the board, open the board's **Automate** panel, then **Cards from Slack**, click **Add to Slack** there if asked, and pick the channel. BakedBrie must be in that channel (type `/invite @BakedBrie` in it), or its review messages cannot be posted there.

Approvers link themselves: the first time an unlinked Slack user clicks Approve or Request changes, BakedBrie answers with a private one-time link. They open it signed in to BakedBrie, confirm, and the click counts as their own decision. The board's reviewer rule and "the maker cannot approve" still apply. Admins can still link people in **Settings**, **Members**, **Slack approvals**.

## How the prompt changes

Start from the prompt in the [main recipe](/docs/recipes/social-workflow) and make these changes:

- Replace step 4 with the first block below. It still makes the Slack destination and the four board hooks (the review message with Approve and Request changes, the decision reply, the live links and the stats), but on the BakedBrie Slack app, so there is no bot token.
- Delete steps 10 and 11 (the Slack intake and the approver link). **Cards from Slack** in the app replaces the intake, and approvers link themselves.
- Remove `SLACK_BOT_TOKEN` and `SLACK_SIGNING_SECRET` from your environment list; they are not needed.
- Add `slack_app` to the capability list in the first line of the prompt.
- Add the second block before the read back:

```text
4. Slack destination: create an API destination with the Slack preset named "Slack social posts" for channel {{SLACK_CHANNEL_ID}} with team_id {{SLACK_TEAM_ID}} and token_source shared_app (the BakedBrie Slack app). It takes no credential, so do not call prepare_secret for it. Run manage_destination test on it and tell me if it is not ok (SLACK_INSTALL_REVOKED means Add to Slack is not done yet; SLACK_CHANNEL_NOT_JOINED means BakedBrie must be invited to the channel). Then set the board hooks with manage_board_hooks so these board events go to that destination with their default actions: review_requested, review_decided, published and stats.
```

```text
Slack messages become cards through Cards from Slack in the app, not through you. Do not create an inbound endpoint. In the read back, list the board hooks (manage_board_hooks list) so I can see the four Slack hooks, and tell me if any is missing.
```

## Your own Slack app still works

The Slack preset on your own app stays available under **Advanced**. Everything in [Recipe: Slack intake and approvals](/docs/recipes/slack-intake-and-approvals) keeps working unchanged.
