Slack Integration
Available on: Solo plans and higher
Connect Slack to receive Cuppa notifications in your workspace and run /cuppa slash commands without leaving Slack. Generate articles, check status, pull Performance Hub snapshots, refresh your content planner, and more.
What You Can Do
- Real-time notifications when articles, bulk projects, or brand setup complete (or fail)
- Performance alerts for visibility score drops, audit regressions, and weekly digests
- Social inbox alerts when new comments or DMs arrive (Slack only)
- Slash commands to generate content, check status, and manage brands from any Slack channel
- @mention triggers so bots and automations can run the same commands (Slack blocks slash commands from bot-posted messages)
- Approval cards to review and approve commands before they run (human-in-the-loop)
- Per-brand channels so multi-brand teams route each brand’s alerts to the right channel
Plan Requirements
| Plan | Slack Access |
|---|---|
| Solo | Available |
| Studio | Available |
| Scale | Available |
| Enterprise | Available |
Legacy plans: Power, Business, Agency, and Agency+ include the same access (mapped to Solo, Studio, Scale, and Enterprise). Hobby does not. Legacy plans are no longer available for new purchases.
Prerequisites
- A Slack workspace where you can install apps (Workspace Admin or permission to approve apps)
- A Cuppa Solo plan or higher
- API keys configured in Team Settings if you plan to use generation commands (
/cuppa generate,/cuppa bulk, etc.)
Step 1: Connect Slack
- Go to Team Settings → Integrations
- Find Slack
- Click Add to Slack
- Sign in to Slack if prompted
- Review the permissions and click Allow
After authorization, you return to Cuppa with a Connected badge showing your workspace name.
Important: One Slack workspace connects to one Cuppa team. If you manage multiple Cuppa teams, connect Slack from the team you want commands and notifications to use. Large agencies often connect each client’s Cuppa team to that client’s Slack workspace.
Step 2: Choose Your Notification Channel
During OAuth, Slack may ask you to pick a default channel for incoming webhooks. That channel becomes the team default for notifications.
To change notification preferences later:
- Go to Team Settings → Notifications
- Toggle events under Slack Notifications
Default Slack notifications (enabled out of the box)
| Event | Description |
|---|---|
| Article generation completed | Article finished successfully |
| Article generation failed | Article hit an error |
| Bulk project completed | Bulk run finished |
| Bulk project failed | Bulk run had failures |
| Brand setup completed | Brand onboarding finished |
| Weekly performance digest | BVS and search snapshot (Mondays) |
| Visibility score dropped | BVS fell significantly |
| Website audit regression | Audit score dropped or checks failed |
| New social comment or message | Social inbox item (Slack only) |
Additional events (approvals, agent workflows, client notes, firehose mentions) can be toggled on in Team Settings → Notifications.
Step 3: Route Notifications per Brand (Optional)
If your Cuppa team has multiple brands, send each brand’s alerts to a dedicated Slack channel:
- Open Brand Settings for the site
- Go to Integrations
- Find Brand Slack channel
- Select a channel and click Save channel
Notes:
- Only channels the Cuppa app has joined appear in the list
- For private channels, invite the Cuppa app first: in Slack, open the channel → Integrations → Add apps → add Cuppa
- If you see a message about a webhook-only connection, click Reconnect on the Slack card in Team Settings to grant full channel-posting permissions
Slash Commands
Type /cuppa in any Slack channel where the Cuppa app is installed.
Run /cuppa help anytime for the full list. Common commands:
Brands (multi-brand teams)
/cuppa sites
/cuppa sites coffeeLists or searches your brands by domain. When you have more than one brand, include site= or brand= on generation commands.
Generate a single article
/cuppa generate keyword="best coffee makers" site=cuppa.ai
/cuppa generate keyword="best coffee makers" site=cuppa.ai model=gpt-5-mini preset=1Bulk generation
/cuppa bulk keywords="kw1, kw2" site=cuppa.ai
/cuppa bulk keywords="kw1, kw2" site=cuppa.ai model=gpt-5-miniBrand keywords
/cuppa brand-keywords site=cuppa.ai keywords="kw1, kw2"Bulk images
/cuppa images count=5 site=cuppa.ai
/cuppa images count=5 site=cuppa.ai model=gpt-image-1Content cluster
/cuppa cluster pillar="main keyword" supporting="kw1, kw2" site=cuppa.aiVideo generation
/cuppa video prompt="sunrise over mountains" site=cuppa.ai duration=5
/cuppa video prompt="sunrise over mountains" site=cuppa.ai model=replicate:runway-gen-4.5Performance Hub snapshot
/cuppa performance site=cuppa.aiReturns Brand Visibility Score and search snapshot for the brand.
Social post drafts
/cuppa social site=cuppa.ai article=<article_id>
/cuppa social site=cuppa.ai article=<article_id> platforms=linkedin,twitter draft=trueContent planner
/cuppa planner site=cuppa.ai
/cuppa planner refresh site=cuppa.airefresh resyncs the calendar from keywords and publish cadence.
Status and summaries
/cuppa status
/cuppa status <article_id>
/cuppa summary
/cuppa summary weeklyTriggering Commands from Automations (@Cuppa mentions)
Slack does not fire /cuppa slash commands from messages posted by bots or the Slack API. Only a human typing /cuppa in the Slack client triggers a slash command. So if you have an automation (for example, a Claude/agent workflow) that drafts commands and posts them into a channel, those slash commands will never run.
To support this, Cuppa also listens for @mentions. Anywhere the Cuppa app is present, post:
@Cuppa generate keyword="best coffee makers" site=cuppa.aiCuppa runs the exact same command as /cuppa generate ... and replies in a thread on your message. This works whether the message was typed by a human or posted by a bot/automation via the Slack API.
Anything after @Cuppa is treated as the command (no /cuppa prefix needed). All the same commands, options, and per-brand site= handling apply.
Human-in-the-loop: propose and approve
For an audit or review loop, prefix the command with propose:
@Cuppa propose generate keyword="best coffee makers" site=cuppa.aiCuppa posts an Approve & run / Reject card instead of running immediately. When a teammate clicks Approve & run, Cuppa executes the command and replies with the result. Reject discards it. This lets an automation draft commands while a human stays in control of what actually runs.
Notes for automations
- The command runs asynchronously: Cuppa acknowledges the mention instantly and posts the result in-thread when it finishes (generation can take a while).
- Cuppa ignores its own messages, so replies never trigger new commands (no loops).
- For teams with many brands, always include
site=domain.comso the command targets the right brand.
API, CLI, and MCP
The same command execution and approval flow is available programmatically, so you can trigger Cuppa from your own tools without going through the Slack UI.
REST API
# Run a command (optionally post the result into a Slack channel)
curl -X POST https://api.cuppa.ai/v1/integrations/slack/command
-H "X-API-KEY: cpa-your-key"
-H "Content-Type: application/json"
-d '{"command":"generate keyword=\"best coffee makers\" site=cuppa.ai","channel":"C0123456789"}'
# Propose a command for human approval in a Slack channel
curl -X POST https://api.cuppa.ai/v1/integrations/slack/propose
-H "X-API-KEY: cpa-your-key"
-H "Content-Type: application/json"
-d '{"command":"generate keyword=\"best coffee makers\" site=cuppa.ai","channel":"C0123456789"}'command runs synchronously and returns the result blocks plus a plain-text summary. Include channel to also post the result into Slack. propose requires a channel and posts an Approve/Reject card.
CLI
cuppa slack run "generate keyword=\"best coffee makers\" site=cuppa.ai"
cuppa slack run "status" --channel C0123456789
cuppa slack propose "bulk keywords=\"a, b, c\" site=cuppa.ai" --channel C0123456789MCP
Two tools are exposed to MCP clients (Claude, Cursor, etc.):
slack_run_command- run a command, optionally post the result to a channelslack_propose_command- post an Approve/Reject card to a channel
Command Options Reference
| Option | Used by | Description |
|---|---|---|
keyword="..." | generate | Target keyword (required for generate) |
keywords="kw1, kw2" | bulk, brand-keywords | Comma-separated keywords |
site=example.com | most commands | Brand domain or slug (required when you have multiple brands) |
brand=example.com | most commands | Alias for site= |
model=gpt-5-mini | generate, bulk | AI model |
preset=1 | generate, bulk | Preset ID |
count=5 | images | Number of images |
pillar="..." | cluster | Pillar keyword |
supporting="..." | cluster | Supporting keywords |
prompt="..." | video | Video scene description |
duration=5 | video | Length in seconds |
article=<id> | social | Completed article ID |
platforms=linkedin,twitter | social | Target platforms |
draft=true | social | Create drafts instead of publishing |
Generation commands use your team’s API keys (same as the Cuppa web app). They run on behalf of the team owner account.
Permissions Cuppa Requests
When you click Add to Slack, Cuppa requests:
| Scope | Purpose |
|---|---|
chat:write | Post notifications and command responses |
channels:read | List public channels for per-brand routing |
groups:read | List private channels the app has joined |
incoming-webhook | Post to your chosen default channel |
commands | Handle /cuppa slash commands |
app_mentions:read | Handle @Cuppa mention triggers (for automations) |
You do not need to create your own Slack app or configure slash command URLs. Cuppa manages the Slack app on our side.
Reconnect for @mentions: If you connected Slack before mention triggers launched, click Reconnect on the Slack card in Team Settings to grant
app_mentions:read. Slash commands and notifications keep working without reconnecting.
Troubleshooting
”Slack workspace not connected to Cuppa” when running /cuppa
The Slack workspace you are typing in has not completed OAuth for your Cuppa team.
- Open app.cuppa.ai/team/settings/integrations
- Confirm you are on the correct Cuppa team (check the team name in the sidebar)
- Click Add to Slack and approve the install for this workspace
- Retry
/cuppa help
OAuth fails or redirects with an error
| Symptom | Fix |
|---|---|
| App install blocked | Ask a Slack Workspace Admin to approve the Cuppa app |
| Wrong team connected | Disconnect and reconnect from the intended Cuppa team |
| Cancelled during OAuth | Click Add to Slack again and complete authorization |
Notifications not appearing
- Confirm Slack shows Connected in Team Settings → Integrations
- Check Team Settings → Notifications and ensure the event is enabled for Slack
- Verify the Cuppa app is in the target channel (especially private channels)
- For per-brand routing, confirm Brand Settings → Integrations → Brand Slack channel is saved
/cuppa generate fails but connection works
Generation needs valid API keys:
- Go to Team Settings → API Keys
- Add or verify your OpenAI key (and any model-specific keys you use)
- Confirm the key has credits and is not expired
Multiple brands: “Which site?” or site not found
Use site= with a domain fragment or full domain:
/cuppa sites
/cuppa generate keyword="..." site=yourbrand.com@Cuppa mentions don’t respond
- Make sure the Cuppa app is a member of the channel (invite it for private channels)
- Click Reconnect on the Slack card in Team Settings to grant the
app_mentions:readpermission (needed if you connected before mention triggers launched) - Confirm the message is
@Cuppa <command>(the command follows the mention, with no/cuppaprefix) - Remember results post in a thread on your message and generation can take a moment
Per-brand channel list is empty
- Invite the Cuppa app to the private channel first
- Reconnect Slack if you only have webhook-only permissions (see Step 3 above)
Disconnect and reconnect
- Team Settings → Integrations → Slack → Disconnect
- Click Add to Slack again
- Re-select your default channel during OAuth if prompted
- Re-save per-brand channel mappings if you use them
Related Guides
- Team Settings - API keys, members, billing
- Performance Hub - BVS and weekly digests in Slack
- Content Planner - Calendar automation and
/cuppa planner refresh - Social Integrations - Connect accounts for
/cuppa social