Link Search Menu Expand

Slack Integration

Get real-time ButterStack notifications and updates directly in Slack.

Table of contents

  1. Overview
  2. Quick Setup (Incoming Webhooks)
    1. Step 1: Create Webhook in Slack
    2. Step 2: Configure in ButterStack
  3. Full Slack App Setup
    1. Step 1: Create Slack App
    2. Step 2: Install App to Workspace
    3. Step 3: Configure OAuth in ButterStack
  4. Notification Configuration
    1. Channel Routing
    2. Message Formatting
    3. Notification Templates
  5. Slash Commands
    1. /butterstack status
    2. /butterstack build
    3. /butterstack approve
    4. /butterstack help
  6. Interactive Features
    1. Approval Workflows
    2. Build Controls
  7. Advanced Configuration
    1. Thread Notifications
    2. Custom Workflows
    3. Analytics Integration
  8. Troubleshooting
  9. Best Practices
  10. Integration Examples
    1. Python Webhook Example
  11. Related

Overview

Connect ButterStack to Slack for instant notifications about builds, asset updates, and team collaboration. This integration supports both incoming webhooks and full Slack app functionality.

πŸ”” Real-time Alerts

Instant notifications for critical events

πŸ’¬ Interactive Messages

Approve assets directly from Slack

πŸ€– Slash Commands

Control ButterStack from any channel

Quick Setup (Incoming Webhooks)

The fastest way to get started is with incoming webhooks for basic notifications.

Step 1: Create Webhook in Slack

  1. Go to api.slack.com/apps
  2. Click Create New App β†’ From scratch
  3. Name it β€œButterStack” and select your workspace
  4. Go to Incoming Webhooks β†’ Enable
  5. Click Add New Webhook to Workspace
  6. Select the channel for notifications
  7. Copy the webhook URL

Step 2: Configure in ButterStack

  1. Navigate to Settings β†’ Integrations
  2. Click Add Integration β†’ Slack
  3. Paste the webhook URL
  4. Select notification types:
    • βœ… Build completions
    • βœ… Asset approvals needed
    • βœ… Task assignments
    • βœ… Error alerts

Full Slack App Setup

For interactive features and slash commands, create a full Slack app.

Step 1: Create Slack App

  1. Visit api.slack.com/apps
  2. Click Create New App β†’ From manifest
  3. Paste this manifest:
display_information:
  name: ButterStack
  description: Asset pipeline and build management
  background_color: "#5D5DFF"
  
oauth_config:
  scopes:
    bot:
      - channels:read
      - chat:write
      - commands
      - users:read
      
settings:
  interactivity:
    is_enabled: true
    request_url: https://app.butterstack.com/slack/interactive
  event_subscriptions:
    request_url: https://app.butterstack.com/slack/events
    bot_events:
      - app_mention
      - message.channels
  org_deploy_enabled: false
  socket_mode_enabled: false
  
features:
  bot_user:
    display_name: ButterStack
    always_online: true
  slash_commands:
    - command: /butterstack
      url: https://app.butterstack.com/slack/commands
      description: Interact with ButterStack
      usage_hint: "[status|build|approve] [options]"

Step 2: Install App to Workspace

  1. Go to OAuth & Permissions
  2. Click Install to Workspace
  3. Review and approve permissions
  4. Copy the Bot User OAuth Token

Step 3: Configure OAuth in ButterStack

  1. In ButterStack, go to Settings β†’ Integrations β†’ Slack
  2. Switch to OAuth App mode
  3. Enter:
    • Bot Token: xoxb-your-token
    • Signing Secret: (from Basic Information)
    • Default Channel: #butterstack

Channel Naming

We recommend creating dedicated channels like #butterstack-builds, #butterstack-approvals for different notification types.

Notification Configuration

Channel Routing

Route different notifications to specific channels:

Build Success: #butterstack-builds
Build Failure: #butterstack-alerts
Asset Approval: #butterstack-approvals
Task Assignment: #butterstack-tasks
System Errors: #butterstack-critical

Message Formatting

Customize notification appearance:

🧈 ButterStack 2:34 PM
βœ… Build Completed Successfully
Project: MyGame
Platform: Linux
Duration: 12m 34s
Commit: a1b2c3d

Notification Templates

Configure custom templates:

{
  "build_success": {
    "color": "good",
    "title": "βœ… Build #{build_number} Completed",
    "fields": [
      {"title": "Project", "value": "{project_name}", "short": true},
      {"title": "Duration", "value": "{duration}", "short": true}
    ],
    "actions": [
      {"text": "View Build", "url": "{build_url}"},
      {"text": "Download", "url": "{artifact_url}"}
    ]
  }
}

Slash Commands

Available commands after full app setup:

/butterstack status

Check system and project status

/butterstack status [project-name]

/butterstack build

Trigger or check builds

/butterstack build start MyGame linux
/butterstack build status 123
/butterstack build list --limit 5

/butterstack approve

Approve pending assets

/butterstack approve asset-123
/butterstack approve --list

/butterstack help

Show all available commands

Command Permissions

Commands respect ButterStack user permissions. Link your Slack account in ButterStack settings.

Interactive Features

Approval Workflows

Enable direct approvals from Slack:

🎨 Asset Approval Required
New character model ready for review
Asset: character_warrior_v3.fbx
Artist: @jane.doe
Changes: Updated textures and rigging
[Asset Preview]

Build Controls

Start and manage builds:

// Triggered by: /butterstack build start MyGame linux
{
  "response_type": "in_channel",
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "πŸš€ *Build Started*\nProject: MyGame\nPlatform: Linux"
      }
    },
    {
      "type": "actions",
      "elements": [
        {
          "type": "button",
          "text": {"type": "plain_text", "text": "Cancel Build"},
          "action_id": "cancel_build",
          "value": "build_123"
        }
      ]
    }
  ]
}

Advanced Configuration

Thread Notifications

Group related notifications in threads:

Thread Grouping:
  - Build start β†’ Updates β†’ Completion
  - Asset upload β†’ Analysis β†’ Approval
  - Task creation β†’ Assignment β†’ Completion

Custom Workflows

Create Slack workflows that integrate with ButterStack:

  1. Use Slack Workflow Builder
  2. Add ButterStack webhook step
  3. Configure triggers:
    • Message reactions
    • Form submissions
    • Scheduled times

Analytics Integration

Track Slack interaction metrics:

  • Message delivery rates
  • Interaction frequencies
  • Response times
  • Most used commands

Troubleshooting

Messages Not Delivering

Check these common issues:

  1. Webhook URL: Ensure it’s correctly copied
  2. Channel permissions: Bot must be invited to private channels
  3. Rate limits: Slack limits to 1 message/second per channel
  4. Network: Verify ButterStack can reach Slack (no firewall blocking)

Test with cURL:

curl -X POST -H 'Content-type: application/json' \
  --data '{"text":"Test from ButterStack"}' \
  YOUR_WEBHOOK_URL
Interactive Buttons Not Working

Solutions:

  1. Verify interactive URL is configured in Slack app
  2. Check signing secret matches
  3. Ensure HTTPS is enabled (Slack requires it)
  4. Verify user has permissions in ButterStack
  5. Check ButterStack logs for incoming requests
Slash Commands Failing

Common fixes:

  1. Reinstall app to workspace
  2. Verify command URL endpoints
  3. Check command is enabled in app settings
  4. Ensure response is within 3 seconds
  5. Use proper response format

Best Practices

πŸ“’ Channel Strategy

  • Separate channels by notification type
  • Use threads for related updates
  • Set up critical alert channels

πŸ”• Noise Reduction

  • Configure notification levels
  • Batch similar notifications
  • Use scheduling for non-urgent

πŸ” Security

  • Rotate webhook URLs regularly
  • Limit bot permissions
  • Audit slash command usage

Integration Examples

Python Webhook Example

import requests
import json

def send_butterstack_notification(webhook_url, message):
    payload = {
        "text": "ButterStack Notification",
        "attachments": [{
            "color": "#5D5DFF",
            "title": message['title'],
            "text": message['description'],
            "fields": [
                {"title": "Status", "value": message['status'], "short": True},
                {"title": "Time", "value": message['timestamp'], "short": True}
            ],
            "footer": "ButterStack",
            "footer_icon": "https://app.butterstack.com/icon.png"
        }]
    }
    
    response = requests.post(
        webhook_url,
        data=json.dumps(payload),
        headers={'Content-Type': 'application/json'}
    )
    
    return response.status_code == 200


Back to top

Copyright © 2026 ButterStack. All rights reserved.