Home
cd ../playbooks
CommunicationsAdvanced

Slack Workflow Automation

Slack automation and workflow builder - notifications, standup bots, approval flows, and cross-platform integrations

10 minutes
By communitySource
#slack#automation#workflow#notifications#bots
CLAUDE.md Template

Download this file and place it in your project folder to get started.

# Slack Workflows

Automate Slack with intelligent workflows for notifications, standup collection, approval processes, and cross-platform integrations. Based on n8n automation patterns.

## Overview

This workflow covers:
- Automated notifications and alerts
- Daily standup collection
- Approval workflows
- Cross-platform integrations
- Channel management automation

---

## Core Workflows

### 1. Daily Standup Bot

```yaml
workflow: "Async Standup"
schedule: "9:00 AM weekdays"

steps:
  1. send_prompt:
      channel: each team member (DM)
      message: |
        šŸ‘‹ Good morning! Time for standup.
        
        Please share:
        1ļøāƒ£ What did you complete yesterday?
        2ļøāƒ£ What are you working on today?
        3ļøāƒ£ Any blockers?
        
        Reply in this thread šŸ‘‡
        
  2. collect_responses:
      timeout: 2_hours
      reminder: at_1_hour
      
  3. compile_summary:
      time: "11:00 AM"
      channel: "#team-standup"
      format: |
        šŸ“‹ *Daily Standup - {date}*
        
        {for_each_member}
        *{name}*
        āœ… Yesterday: {yesterday}
        šŸ“Œ Today: {today}
        🚧 Blockers: {blockers}
        
        ---
        {end_for}
        
        *Summary:*
        • {total} team members responded
        • {blockers_count} blockers flagged
        
  4. flag_blockers:
      if: blockers_count > 0
      notify: manager
      action: create_thread_for_discussion
```

### 2. Approval Workflow

```yaml
workflow: "Expense Approval"
trigger: form_submission OR slash_command

steps:
  1. receive_request:
      data:
        - requester
        - amount
        - category
        - description
        - receipt_url
        
  2. route_approval:
      rules:
        - if: amount < 100
          approver: direct_manager
          
        - if: amount >= 100 AND amount < 1000
          approver: department_head
          
        - if: amount >= 1000
          approver: [department_head, finance]
          type: sequential
          
  3. send_approval_request:
      channel: DM to approver
      message: |
        šŸ“ *Expense Approval Request*
        
        *From:* {requester}
        *Amount:* ${amount}
        *Category:* {category}
        *Description:* {description}
        
        [View Receipt]({receipt_url})
        
      actions:
        - button: "āœ… Approve"
          action: approve
        - button: "āŒ Reject"
          action: reject
        - button: "šŸ’¬ Ask Question"
          action: request_info
          
  4. handle_response:
      approved:
        - notify_requester: "Your expense was approved! šŸŽ‰"
        - create_task: in_accounting_system
        - log: in_expense_tracker
        
      rejected:
        - notify_requester: "Expense not approved. Reason: {reason}"
        - log: with_rejection_reason
        
  5. escalate_if_no_response:
      timeout: 24_hours
      action: remind_approver
      final_escalation: 48_hours
```

### 3. New Hire Onboarding

```yaml
workflow: "Employee Onboarding"
trigger: new_employee_added_to_HRIS

timeline:
  day_minus_7:
    - create_channels:
        - "#welcome-{name}"
        - add_to: ["#general", "#team-{department}"]
    - notify_it: "Set up laptop for {name}"
    - notify_manager: "Onboarding starts in 7 days"
    
  day_1:
    - morning:
        - post_welcome: "#general"
          message: |
            šŸŽ‰ Please welcome *{name}* to the team!
            
            Role: {title}
            Team: {department}
            Location: {office}
            
            Fun fact: {fun_fact}
            
            Say hi and make them feel welcome! šŸ‘‹
            
        - dm_new_hire:
            message: |
              Welcome to {Company}! šŸš€
              
              Here are your first steps:
              1. [Complete HR paperwork]({hr_link})
              2. [Set up your accounts]({it_link})
              3. [Meet the team]({org_chart})
              
              Your buddy is @{buddy_name} - reach out anytime!
              
    - afternoon:
        - schedule_intros: with_key_stakeholders
        
  day_3:
    - check_in:
        dm: "How's your first week going? Any questions?"
        
  day_7:
    - survey:
        question: "How was your onboarding experience?"
        scale: 1-5
        
  day_30:
    - feedback_request:
        dm: "You've been here a month! What could we improve?"
```

### 4. Incident Response

```yaml
workflow: "Incident Alert"
trigger: monitoring_alert OR manual

severity_levels:
  critical:
    - create_channel: "#incident-{timestamp}"
    - notify: "@channel in #engineering"
    - page: on_call_engineer
    - create_war_room: video_link
    - start_timer: for_resolution_tracking
    
  high:
    - notify: "#engineering-alerts"
    - assign: on_call_engineer
    - create_ticket: in_jira
    
  medium:
    - notify: "#engineering-alerts"
    - create_ticket: in_jira
    
  low:
    - create_ticket: in_jira
    - notify: next_business_day

incident_channel_template: |
  🚨 *INCIDENT: {title}*
  
  *Severity:* {severity}
  *Status:* Investigating
  *Started:* {timestamp}
  *Commander:* @{commander}
  
  ---
  
  *Affected Systems:*
  {systems}
  
  *Customer Impact:*
  {impact}
  
  ---
  
  šŸ“‹ *Actions:*
  • [ ] Identify root cause
  • [ ] Implement fix
  • [ ] Verify resolution
  • [ ] Communicate to stakeholders
  
  šŸ”— *Links:*
  • [Runbook]({runbook_url})
  • [Dashboard]({dashboard_url})
  • [Video Room]({video_url})

resolution_flow:
  1. commander_declares: "resolved"
  2. notify_stakeholders: resolution_message
  3. archive_channel: after_24_hours
  4. create_postmortem: in_notion
  5. schedule_review: in_calendar
```

### 5. Cross-Platform Sync

```yaml
workflow: "CRM to Slack Notifications"

triggers:
  hubspot_deal_won:
    channel: "#wins"
    message: |
      šŸŽ‰ *Deal Closed!*
      
      *Company:* {company}
      *Value:* ${amount}
      *Rep:* @{sales_rep}
      *Product:* {product}
      
      Congrats! šŸš€
      
  hubspot_deal_lost:
    channel: "#sales-team"
    message: |
      šŸ“Š *Deal Lost*
      
      *Company:* {company}
      *Value:* ${amount}
      *Reason:* {loss_reason}
      *Competitor:* {competitor}
      
      Thread for learnings šŸ‘‡
      
  github_pr_merged:
    channel: "#engineering"
    message: |
      āœ… PR merged: *{pr_title}*
      by @{author}
      
      {pr_description_summary}
      
  stripe_payment_failed:
    channel: "#revenue-alerts"
    message: |
      āš ļø *Payment Failed*
      
      *Customer:* {customer_email}
      *Amount:* ${amount}
      *Reason:* {failure_reason}
      
      [View in Stripe]({stripe_link})
```

---

## Slash Commands

### Custom Commands

```yaml
slash_commands:
  /kudos:
    description: "Give recognition to a teammate"
    usage: "/kudos @person for [reason]"
    action:
      - post_to: "#kudos"
      - format: |
          🌟 *Kudos!*
          
          @{sender} gave kudos to @{recipient}
          
          > {reason}
          
      - track: in_recognition_spreadsheet
      
  /pto:
    description: "Request time off"
    usage: "/pto [start_date] to [end_date] for [reason]"
    action:
      - create_approval: pto_approval_flow
      - update_calendar: block_dates
      - notify_team: if_approved
      
  /standup:
    description: "Submit async standup"
    usage: "/standup"
    action:
      - open_modal: standup_form
      - collect_responses: yesterday, today, blockers
      - post_to: "#team-standup"
      
  /poll:
    description: "Create a quick poll"
    usage: "/poll 'Question' 'Option 1' 'Option 2' ..."
    action:
      - create_message: with_reactions
      - track_votes: by_reaction_count
      - close_poll: after_24h_or_manual
```

---

## Channel Management

```yaml
channel_automation:
  project_channels:
    trigger: jira_project_created
    action:
      - create_channel: "#proj-{project_key}"
      - add_members: project_team
      - set_topic: "{project_name} - {project_description}"
      - pin_message: project_resources
      - archive: when_project_completed
      
  customer_channels:
    trigger: deal_closed_won
    action:
      - create_channel: "#customer-{company}"
      - add_members: [csm, sales_rep, support]
      - set_purpose: "Support channel for {company}"
      - integrate: zendesk_alerts
      
  cleanup:
    schedule: monthly
    rules:
      - archive_if:
          no_messages: 90_days
          AND:
            not_pinned: true
            not_customer_channel: true
      - notify_before_archive: 7_days
```

---

## Output Example

**Request**: "Set up a deal win notification in Slack"

**Output**:

```markdown
# Deal Win Notification Setup

## Workflow Configuration

```yaml
trigger: hubspot_deal_stage_changed
condition: new_stage == "Closed Won"

action:
  channel: "#wins"
  message: see_below
```

## Message Template

```
šŸŽ‰ *DEAL CLOSED!*

━━━━━━━━━━━━━━━━━━━━━━

šŸ¢ *Company:* {company_name}
šŸ’° *Value:* ${deal_amount}
šŸ‘¤ *Sales Rep:* @{owner_slack_id}
šŸ“¦ *Product:* {product_line}

━━━━━━━━━━━━━━━━━━━━━━

*Deal Summary:*
• Sales cycle: {days_in_pipeline} days
• Lead source: {lead_source}
• Industry: {industry}

šŸŽŠ Congrats to the team!
```

## n8n Implementation

```javascript
// HubSpot Trigger → Slack Node
{
  "nodes": [
    {
      "name": "HubSpot Trigger",
      "type": "n8n-nodes-base.hubspotTrigger",
      "parameters": {
        "eventsUi": {
          "eventValues": ["deal.propertyChange"]
        },
        "property": "dealstage",
        "value": "closedwon"
      }
    },
    {
      "name": "Format Message",
      "type": "n8n-nodes-base.set",
      "parameters": {
        "values": {
          "message": "šŸŽ‰ *DEAL CLOSED!*\n\nšŸ¢ {{$json.company}}\nšŸ’° ${{$json.amount}}"
        }
      }
    },
    {
      "name": "Slack",
      "type": "n8n-nodes-base.slack",
      "parameters": {
        "channel": "#wins",
        "text": "={{$json.message}}"
      }
    }
  ]
}
```

## Sample Output

```
šŸŽ‰ *DEAL CLOSED!*

━━━━━━━━━━━━━━━━━━━━━━

šŸ¢ *Company:* Acme Corporation
šŸ’° *Value:* $45,000
šŸ‘¤ *Sales Rep:* @alice.chen
šŸ“¦ *Product:* Enterprise Plan

━━━━━━━━━━━━━━━━━━━━━━

*Deal Summary:*
• Sales cycle: 45 days
• Lead source: Inbound - Website
• Industry: Technology

šŸŽŠ Congrats to the team!
```
```

---

*Slack Workflows Workflow - Part of Claude Code*
README.md

What This Does

Automate Slack with intelligent workflows for notifications, standup collection, approval processes, and cross-platform integrations. Based on n8n automation patterns.


Quick Start

Step 1: Create a Project Folder

mkdir -p ~/Documents/SlackWorkflows

Step 2: Download the Template

Click Download above, then:

mv ~/Downloads/CLAUDE.md ~/Documents/SlackWorkflows/

Step 3: Start Working

cd ~/Documents/SlackWorkflows
claude

Examples

Request: "Set up a deal win notification in Slack"

Output:

# Deal Win Notification Setup

$Related Playbooks