Intermediate~20 min setupProject Management & CommunicationVerified April 2026
ClickUp logo
Slack logo

How to Send ClickUp Task Status Alerts to Slack with N8n

Automatically notify Slack channels when ClickUp tasks move to Ready for Review or Blocked status.

Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.

Best for

Teams that need custom routing logic or complex status change filtering

Not ideal for

Simple single-channel notifications (use Zapier's native integration instead)

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 25-person product team uses this to route ClickUp status alerts to the right people. Development tasks marked 'Ready for Review' go to #code-review, design tasks go to #design-review, and any task marked 'Blocked' goes to #urgent with @channel. Before automation, developers posted manual Slack messages requesting reviews, and blocked tasks sat unnoticed for days.

What Will This Cost?

Drag the slider to your expected monthly volume.

/mo
505005K50K

Each platform counts differently — Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.

Prices shown for annual billing. Based on published pricing as of April 2026.

Estimated ROI

1000

min saved/mo

$583

labor value/mo

Free

no platform cost

Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.

Implementation

Skip the setup

Import this workflow directly into n8n

Copy the pre-built n8n blueprint and paste it straight into n8n. All modules, filters, and field mappings are already configured — you just need to connect your accounts.

Before You Start

Make sure you have everything ready.

ClickUp workspace with admin access to create webhooks
Slack workspace with permission to install apps
N8n instance (cloud or self-hosted) with webhook access enabled
Tasks in ClickUp using 'Ready for Review' and 'Blocked' status names

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Task IDtask.id
Task Statustask.status.status
Task Nametask.name
Task URLtask.url
Project Nametask.project.name
1 optional field▸ show
Assigneestask.assignees

Step-by-Step Setup

1

Dashboard > New Workflow

Create N8n Workflow

Start a new workflow in N8n to handle ClickUp task status changes. You'll build a webhook-triggered flow that filters for specific statuses and posts to Slack.

  1. 1Click 'New Workflow' from the N8n dashboard
  2. 2Rename the workflow to 'ClickUp Status Alerts'
  3. 3Save the workflow before adding nodes
What you should see: Empty workflow canvas with the default workflow name updated to 'ClickUp Status Alerts'
2

Workflow Canvas > + > Webhook

Add Webhook Trigger

Configure a webhook node to receive ClickUp task updates. This creates an endpoint URL that ClickUp will POST to whenever tasks change status.

  1. 1Click the '+' button and search for 'Webhook'
  2. 2Select the 'Webhook' trigger node
  3. 3Set HTTP Method to 'POST'
  4. 4Leave Authentication as 'None'
  5. 5Copy the webhook URL from the node
What you should see: Webhook node shows a unique URL like 'https://your-n8n.domain/webhook/abc123'
Common mistake — Don't activate the workflow yet — ClickUp will start sending data immediately and you need the filter logic first
n8n
+
click +
search apps
ClickUp
CL
ClickUp
Add Webhook Trigger
ClickUp
CL
module added
3

ClickUp Settings > Integrations > Webhooks

Configure ClickUp Webhook

Set up ClickUp to send task status changes to your N8n webhook. You'll configure this at the workspace level to catch all task updates.

  1. 1Open ClickUp and go to Settings > Integrations > Webhooks
  2. 2Click 'Create Webhook'
  3. 3Paste your N8n webhook URL in the Endpoint field
  4. 4Check 'taskUpdated' under Events
  5. 5Select your target workspace from the dropdown
What you should see: ClickUp shows the webhook as 'Active' with a green status indicator
Common mistake — Select 'taskUpdated' not 'taskStatusUpdated' — the latter only exists in ClickUp 3.0 and misses some status changes
4

Workflow Canvas > + > Logic > IF

Add Status Filter Node

Filter incoming webhooks to only process tasks that moved to 'Ready for Review' or 'Blocked' status. This prevents spam notifications for every task change.

  1. 1Add an 'IF' node after the webhook
  2. 2Set condition to 'String' > 'is equal to'
  3. 3Enter {{ $json.task.status.status }} in the Value 1 field
  4. 4Enter 'ready for review' in Value 2 field
  5. 5Click 'Add Condition' and repeat for 'blocked' status
What you should see: IF node shows two conditions checking for 'ready for review' OR 'blocked' status values
Common mistake — Status values are lowercase in ClickUp's API even if they display as 'Ready For Review' in the UI
ClickUp
CL
trigger
filter
Status
matches criteria?
yes — passes through
no — skipped
Slack
SL
notified
5

Workflow Canvas > + > ClickUp > Credentials

Add ClickUp Credentials

Connect N8n to ClickUp to fetch additional task details like assignee names and project info that aren't included in webhook payloads.

  1. 1Add a 'ClickUp' node after the IF node (True branch)
  2. 2Click 'Create New Credential'
  3. 3Select 'Personal Token' authentication
  4. 4Generate an API token in ClickUp Settings > Apps > API Token
  5. 5Paste the token and save the credential
What you should see: ClickUp node shows 'Credential connected' with a green checkmark
Common mistake — Personal tokens expire after 1 year — set a calendar reminder to regenerate or use OAuth2 for production
6

ClickUp Node > Task > Get

Fetch Task Details

Use the ClickUp node to get complete task information including assignee, project, and formatted URLs for the Slack message.

  1. 1Set Operation to 'Get' and Resource to 'Task'
  2. 2Map Task ID to {{ $json.task.id }} from the webhook
  3. 3Enable 'Include Subtasks' if you want subtask notifications
  4. 4Test this node to verify it returns full task data
What you should see: ClickUp node returns task object with assignees array, project name, and task URL
7

Workflow Canvas > + > Logic > IF

Determine Slack Channel

Route notifications to the correct Slack channel based on task project or status. Different teams often want alerts in different channels.

  1. 1Add another 'IF' node to check project or custom field values
  2. 2Set condition to check {{ $json.project.name }} or task status
  3. 3Map 'Ready for Review' tasks to '#reviews' channel
  4. 4Map 'Blocked' tasks to '#urgent' or project-specific channel
What you should see: IF node routes to different branches based on your channel mapping logic
Common mistake — Use channel IDs (C1234567890) instead of names (#channel) for private channels — names fail silently
8

api.slack.com/apps > OAuth & Permissions

Add Slack Credentials

Connect N8n to your Slack workspace to enable message posting. You'll need a bot token with chat:write permissions.

  1. 1Go to api.slack.com/apps and create a new app
  2. 2Add 'chat:write' and 'chat:write.public' OAuth scopes
  3. 3Install the app to your workspace and copy the Bot User OAuth Token
  4. 4In N8n, add Slack credentials using the bot token
What you should see: Slack credential test succeeds and shows your bot's username
Common mistake — Don't use legacy tokens — they're being deprecated and lack granular permissions
9

Slack Node > Message > Post

Format Slack Message

Create a rich Slack message with task details, assignee mentions, and action buttons. Use Slack's Block Kit format for better presentation.

  1. 1Add a 'Slack' node and set Operation to 'Post Message'
  2. 2Select your target channel (e.g., '#reviews')
  3. 3Build message text with task title, status, and assignee
  4. 4Add the task URL as a button or link in the message
What you should see: Slack node preview shows formatted message with task details and clickable links
Common mistake — Slack truncates messages over 4000 characters — keep task descriptions under 3800 chars to be safe
10

Workflow > Activate > ClickUp Task Status Change

Test the Workflow

Activate the workflow and test it with a real ClickUp task status change. This verifies the webhook, filters, and Slack posting work end-to-end.

  1. 1Click 'Save' and then 'Activate' workflow toggle
  2. 2Go to ClickUp and change a task status to 'Ready for Review'
  3. 3Check the N8n execution log for successful runs
  4. 4Verify the Slack notification appears in the correct channel
What you should see: Slack receives formatted notification within 30 seconds of ClickUp status change
Common mistake — First test might take 2-3 minutes as ClickUp webhook registration can be delayed
n8n
▶ Run once
executed
ClickUp
Slack
Slack
🔔 notification
received
11

Workflow Canvas > + > Error Trigger

Add Error Handling

Configure error handling to retry failed Slack posts and log issues without breaking the entire workflow.

  1. 1Add an 'Error Trigger' node to catch failures
  2. 2Connect it to a 'Slack' node that posts to an admin channel
  3. 3Set up retry logic with exponential backoff for API failures
  4. 4Test error handling by temporarily breaking the Slack token
What you should see: Failed executions trigger admin alerts and retry automatically up to 3 times
12

Workflow Settings > Execution Limit

Configure Rate Limiting

Add delays and batching to handle high-volume task updates without hitting API limits. Both ClickUp and Slack have rate limits you need to respect.

  1. 1Add a 'Wait' node with 1-2 second delay between Slack posts
  2. 2Set workflow execution limit to 10 concurrent runs maximum
  3. 3Configure exponential backoff for 429 rate limit responses
  4. 4Monitor execution logs for rate limit warnings
What you should see: Workflow settings show execution limits and delay nodes are positioned correctly
Common mistake — Slack allows 1 message per second per channel — batching multiple status changes into one message works better at scale

Drop this into an n8n Code node.

JavaScript — Code Node// Deduplicate rapid status changes in code node
▸ Show code
// Deduplicate rapid status changes in code node
const recent = $('Webhook').all().filter(item => {
  const timestamp = new Date(item.json.event.date).getTime();

... expand to see full code

// Deduplicate rapid status changes in code node
const recent = $('Webhook').all().filter(item => {
  const timestamp = new Date(item.json.event.date).getTime();
  const now = Date.now();
  return (now - timestamp) < 30000; // 30 second window
});

if (recent.length > 1) {
  return []; // Skip duplicate
}
return $input.all();

Scaling Beyond 100+ status changes/day+ Records

If your volume exceeds 100+ status changes/day records, apply these adjustments.

1

Batch Multiple Status Changes

Group status changes from the same project into single Slack messages posted every 5 minutes. This reduces API calls and prevents channel spam when multiple tasks change status rapidly.

2

Use Slack Threading

Post initial status change as main message, then thread subsequent changes for the same task. This keeps channels cleaner and makes it easier to follow task progression over time.

Going live

Production Checklist

Before you turn this on for real, confirm each item.

Troubleshooting

Common errors and how to fix them.

Frequently Asked Questions

Common questions about this workflow.

Analysis

VerdictWhy n8n for this workflow

Use N8n for this if you need custom logic for routing different task types to different channels, or if you're already running N8n for other automations. The code nodes let you build complex filtering that Zapier and Make can't match — like checking custom fields, parsing task descriptions, or batching multiple status changes. Skip N8n if you just want basic status notifications to one channel — Zapier's ClickUp-Slack integration does this in 2 clicks.

Cost

This workflow uses 2 executions per status change (webhook + Slack post). At 200 status changes per month, that's 400 executions total. N8n's Starter plan ($20/month) includes 5,000 executions, so you're well covered. Make would cost $9/month for 1,000 operations but charges extra for webhooks. Zapier's $20 plan includes 750 tasks — you'd hit the limit at 375 status changes. N8n wins on cost at any volume over 100 changes/month.

Tradeoffs

Make's ClickUp module includes better field mapping with dropdown menus showing your actual custom fields and statuses. Zapier's formatter tools handle Slack message formatting more elegantly than N8n's manual JSON building. But N8n's code nodes let you implement complex routing logic — like sending design tasks to #design-review and bug reports to #qa-blocked based on task labels or custom fields. Neither Make nor Zapier can match that flexibility without multiple scenarios.

ClickUp's webhook payload is inconsistent — sometimes assignees is an array, sometimes null, and custom field values change format between ClickUp 2.0 and 3.0 workspaces. You'll need to add null checks and type validation in your IF nodes. Slack's rate limit is 1 message per second per channel, so batch multiple rapid status changes or add delays. The ClickUp API token expires annually with no warning — set a calendar reminder or your workflow will silently break.

Ideas for what to build next

  • Add Task Completion NotificationsExtend the workflow to notify channels when tasks move to Done status, with different formatting or channels than in-progress alerts.
  • Create Daily Status DigestBuild a scheduled workflow that summarizes all status changes from the previous day and posts a digest to management channels each morning.
  • Implement SLA MonitoringTrack how long tasks spend in Ready for Review status and automatically escalate to managers if reviews take longer than 48 hours.

Related guides

Was this guide helpful?
ClickUp + Slack overviewn8n profile →