March 27, 2026
6 min read
Share article

How to Build a Slack Notification Bot for Client Updates Using n8n

Slack notification bot built with n8n sending automated client updates

Your clients shouldn't have to check five different apps to know what's happening in their business. A well-built Slack notification bot surfaces the right information, to the right person, in the right channel — automatically.

In this tutorial, you'll build a Slack notification system in n8n that sends real-time updates for new leads, closed deals, overdue tasks, and client activity. This is a high-retention add-on to any automation package because clients see the value every single day.

What You'll Build

  • New lead notifications with lead score and source
  • Deal won/lost notifications with deal value and rep
  • Overdue task alerts with assignee and due date
  • Daily digest summaries every morning
  • Custom channel routing based on notification type
  • Rich message formatting with Block Kit
  • Interactive buttons for quick actions

Step 1: Create a Slack App

Before connecting n8n, you need a Slack App (a bot) in your client's workspace:

  1. Go to api.slack.com/apps and click Create New App
  2. Choose From scratch
  3. App Name: something like BusinessName Bot
  4. Workspace: select your client's workspace
  5. Under OAuth & Permissions → Bot Token Scopes, add: chat:write, chat:write.public, channels:read, users:read
  6. Click Install to Workspace
  7. Copy the Bot User OAuth Token (starts with xoxb-)

Step 2: Add Slack Credentials in n8n

In n8n, go to Credentials → Add Credential → Slack API:

  • Access Token: paste your xoxb- token
  • Save as Client Slack Bot

Test the connection by adding a Slack node, selecting the credential, and running a test message to yourself.

Step 3: Build the New Lead Notification

This notification fires whenever a new lead is created. Connect it to your lead intake workflow (from the CRM automation guide) or use a dedicated trigger.

Add a Slack node configured as:

  • Resource: Message
  • Operation: Send
  • Channel: #new-leads (create this channel in Slack first and invite the bot)
  • Text: fallback text (shows in notifications)
  • Blocks: enable rich formatting

Blocks JSON for a beautiful lead card:

[{"type":"section","text":{"type":"mrkdwn","text":"*🆕 New Lead:* {{$json.first_name}} {{$json.last_name}}\n*Company:* {{$json.company}}\n*Score:* {{$json.lead_score}}/10 | *Source:* {{$json.source}}"},"accessory":{"type":"button","text":{"type":"plain_text","text":"View in CRM"},"url":"https://app.hubspot.com/contacts/..."}}]

Step 4: Format Rich Messages with Block Kit

Slack's Block Kit lets you create visually rich messages with sections, buttons, dividers, and context. Use the Slack Block Kit Builder (api.slack.com/block-kit-builder) to design your messages visually, then paste the JSON into n8n.

Here are the most useful block types for business notifications:

  • Section: main text area with optional accessory (button, image, datepicker)
  • Fields: two-column key-value display
  • Actions: row of buttons for interactive commands
  • Context: small gray text for metadata (timestamps, IDs)
  • Divider: horizontal line separator
  • Header: large bold title

In n8n, switch to Expression mode for the Blocks field to inject dynamic data from previous nodes.

Step 5: Build Channel Routing Logic

Different notifications should go to different channels. Use a Switch node before your Slack nodes to route by notification type:

  • type = new_lead → channel: #new-leads
  • type = deal_won → channel: #wins
  • type = deal_lost → channel: #pipeline
  • type = overdue_task → DM to the assigned rep
  • type = urgent_support → channel: #support-escalations

For DMs, use the Slack Users → Get User by Email operation to look up the rep's Slack user ID from their email address, then send to their user ID instead of a channel name.

Step 6: Build the Deal Won Notification

This fires when a deal is marked as Won in your CRM. Connect to a HubSpot webhook or a scheduled check. The Slack message should celebrate:

  • Use 🎉 emoji prominently
  • Show deal name, value, rep who closed it
  • Include a running monthly total using a Code node to query previous wins from Google Sheets
  • Tag the rep with their Slack user ID: <@U123456>

Example message:

🎉 *Deal Closed!* {{$json.deal_name}} — ${{$json.deal_value}} closed by <@{{$json.rep_slack_id}}>. Monthly total: ${{$json.monthly_total}} ({{$json.monthly_progress}}% of goal).

Step 7: Build the Daily Digest

Create a separate workflow with a Schedule Trigger at 8:30 AM every weekday:

  1. Query HubSpot for deals opened, closed, and in-progress this week
  2. Query Google Sheets for overdue tasks
  3. Query your leads sheet for new leads in the past 24 hours
  4. Compile everything into a single Slack message
  5. Send to #daily-digest channel

Use a Code node to assemble the digest data, then build the Block Kit message dynamically. The digest might look like:

📊 Daily Business Digest — Monday, March 27. New leads: 8 (+2 hot). Pipeline: $24,500 across 12 deals. Closed this week: $5,200. Overdue tasks: 3 (see below).

Step 8: Add Interactive Buttons

For action-oriented notifications, add Slack interactive buttons. This requires an Interactivity URL set in your Slack App settings pointing to a second n8n webhook.

When a user clicks a button in Slack, Slack sends a POST to your interaction webhook with the action data. In n8n, handle it:

  • Action mark_complete: update task status in CRM, send confirmation message
  • Action view_lead: respond with the CRM link
  • Action snooze_alert: update the next_alert_date in your sheet by 24 hours

Step 9: Overdue Task Alerts

Create a scheduled workflow running at 9 AM daily:

  1. HubSpot: Search Tasks where due date is before today and status is not completed
  2. SplitInBatches: process each overdue task
  3. For each task, look up the assigned rep's Slack ID
  4. Slack: send a DM to the rep with task details and an action button

Step 10: Error Handling and Reliability

Slack notifications are only valuable if they're reliable. Add these safeguards:

  • Add error handling to catch Slack API rate limit errors (Tier 1: 1 req/sec)
  • Use n8n's built-in retry: in Workflow Settings, enable Error Workflow
  • Test every notification type before deployment — use a private test channel
  • Log every notification sent (type, timestamp, recipient, message_id) to a Google Sheet for audit purposes

Packaging This for Clients

This system is best sold as an add-on to any automation package. The pitch: "You'll know exactly what's happening in your business in real time — without opening any other apps."

Common upsell: start with basic lead and deal notifications ($300 setup), then add daily digest and interactive buttons ($500 setup). Total package: $800 setup, $150/month maintenance.

For more n8n workflow ideas, see our n8n AI agent beginner's guide. And if you're comparing tools for your agency stack, read our n8n vs Make vs Zapier comparison.

Want to learn how to build and sell AI automations? Join our free community. Join the free AI Agency Sprint community.
Community & Training

Join 215+ AI Agency Owners

Get free access to our LinkedIn automation tool, AI content templates, and a community of builders landing clients in days.

Access the Free Sprint
22 people joined this week