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

How to Send Sprint Summaries from ClickUp to Slack with Power Automate

Automatically post a sprint completion summary to Slack showing completed vs incomplete tasks when a ClickUp sprint finishes.

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

Best for

Development teams using ClickUp sprints who want automated sprint retrospectives in Slack channels.

Not ideal for

Teams that need complex sprint analytics or custom formatting beyond basic task counts.

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 12-person development team runs 2-week sprints in ClickUp and posts results to #dev-updates in Slack. Before automation, the scrum master manually counted completed tasks and typed summaries every sprint end. Now they get instant notifications showing 23/30 tasks completed with a breakdown by assignee.

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 Power Automate

Copy the pre-built Power Automate blueprint and paste it straight into Power Automate. 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 sprint/list management permissions
Slack workspace admin rights to install Power Automate app
Microsoft 365 account with Power Automate license
ClickUp webhook access (may require paid plan)

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Sprint Name
Sprint Status
Task Array
Task Status
2 optional fields▸ show
Sprint End Date
Assignee Names

Step-by-Step Setup

1

My flows > New flow > Automated cloud flow

Create New Automated Flow

Open make.powerautomate.com and sign in with your Microsoft account. Click 'My flows' in the left sidebar, then 'New flow' at the top. Select 'Automated cloud flow' from the dropdown menu. Name your flow 'ClickUp Sprint Summary to Slack'.

  1. 1Click 'My flows' in the left navigation
  2. 2Click 'New flow' button at the top
  3. 3Select 'Automated cloud flow'
  4. 4Enter flow name: ClickUp Sprint Summary to Slack
What you should see: You should see the flow creation dialog with trigger selection options.
2

Choose your flow's trigger > HTTP

Configure ClickUp Webhook Trigger

Search for 'HTTP' in the trigger list and select 'When an HTTP request is received'. This creates a webhook endpoint that ClickUp will call when a sprint completes. Power Automate will generate a unique URL after you save the flow. Leave the JSON schema blank for now.

  1. 1Type 'HTTP' in the trigger search box
  2. 2Select 'When an HTTP request is received'
  3. 3Leave Request Body JSON Schema empty
  4. 4Click 'Create' to proceed
What you should see: You should see the HTTP trigger configured with a placeholder for the webhook URL.
Common mistake — The webhook URL won't appear until you save the flow at least once.
Power Automate
+
click +
search apps
ClickUp
CL
ClickUp
Configure ClickUp Webhook Tr…
ClickUp
CL
module added
3

New step > Data Operations > Parse JSON

Add Parse JSON Action

Click 'New step' and search for 'Parse JSON'. Select 'Parse JSON' from Data Operations. This will extract the sprint data from ClickUp's webhook payload. In the Content field, select 'body' from the dynamic content menu. Leave the Schema field empty for now - we'll populate it after testing.

  1. 1Click 'New step' below the HTTP trigger
  2. 2Search for 'Parse JSON' in actions
  3. 3Select 'Parse JSON' from Data Operations
  4. 4Click Content field and select 'body' from dynamic content
What you should see: Parse JSON action appears with the HTTP body selected as content input.
Common mistake — Don't worry about the schema yet - Power Automate can auto-generate it from sample data.
4

New step > Variables > Initialize variable

Initialize Variables for Task Counting

Add 'Initialize variable' action and create three integer variables: CompletedTasks, IncompleteTasks, and TotalTasks. Set all initial values to 0. These will store the task counts we calculate from the sprint data. You'll need to add this action three times, once for each variable.

  1. 1Click 'New step' and search for 'Initialize variable'
  2. 2Set Name to 'CompletedTasks', Type to 'Integer', Value to 0
  3. 3Add another Initialize variable for 'IncompleteTasks'
  4. 4Add a third Initialize variable for 'TotalTasks'
What you should see: Three variable initialization actions appear, each configured for task counting.
Common mistake — Variable names are case-sensitive and cannot contain spaces - use camelCase.
5

New step > Control > Apply to each

Add Apply to Each Loop

Add 'Apply to each' action to loop through tasks in the sprint. In the 'Select an output from previous steps' field, you'll reference the tasks array from the parsed JSON. Since we don't have the schema yet, type this expression manually: body('Parse_JSON')?['tasks']. This loops through each task to count completed vs incomplete.

  1. 1Click 'New step' and search for 'Apply to each'
  2. 2Click the output field and select 'Expression' tab
  3. 3Type: body('Parse_JSON')?['tasks']
  4. 4Click OK to confirm the expression
What you should see: Apply to each loop is configured to iterate over task data from ClickUp.
Common mistake — The expression won't validate until you have actual data - this is normal.
6

Inside Apply to each > Control > Condition

Add Task Status Condition

Inside the Apply to each loop, add a Condition action. Configure it to check if the current task status equals 'Complete' or 'Done'. In the left side, select 'items()?['status']' from dynamic content. Set the operator to 'is equal to' and enter 'Complete' in the right field. This separates completed from incomplete tasks.

  1. 1Click 'Add an action' inside the Apply to each loop
  2. 2Search for and select 'Condition'
  3. 3Set left value to items()?['status'] using expression
  4. 4Set condition to 'is equal to' and value to 'Complete'
What you should see: Condition appears inside the loop to check task completion status.
Common mistake — Task status values are case-sensitive and vary by ClickUp workspace setup.
ClickUp
CL
trigger
filter
Status
matches criteria?
yes — passes through
no — skipped
Slack
SL
notified
7

Condition branches > Variables > Increment variable

Increment Task Counters

In the 'Yes' branch of the condition, add 'Increment variable' and select CompletedTasks. In the 'No' branch, increment IncompleteTasks. After the Apply to each loop, add a 'Set variable' action to calculate TotalTasks by adding CompletedTasks and IncompleteTasks using the expression add(variables('CompletedTasks'), variables('IncompleteTasks')).

  1. 1In 'Yes' branch, add 'Increment variable' for CompletedTasks
  2. 2In 'No' branch, add 'Increment variable' for IncompleteTasks
  3. 3After the loop, add 'Set variable' for TotalTasks
  4. 4Use expression: add(variables('CompletedTasks'), variables('IncompleteTasks'))
What you should see: Task counters increment based on completion status, with total calculated afterward.
8

New step > Slack > Post message

Connect to Slack

Add 'Post message' action and search for Slack. Select 'Post message' from the Slack connector. Power Automate will prompt you to sign in to Slack and authorize access. Choose the workspace where you want to post sprint summaries. You'll need admin permissions to add the Power Automate app to your Slack workspace.

  1. 1Click 'New step' and search for 'Slack'
  2. 2Select 'Post message' from Slack actions
  3. 3Click 'Sign in' when prompted for connection
  4. 4Authorize Power Automate in your Slack workspace
What you should see: Slack connection established with Post message action ready to configure.
Common mistake — You need Slack admin rights to install Power Automate - regular users cannot complete this step.
9

Slack Post message > Channel and Message

Configure Slack Message

Select your target channel from the dropdown (like #dev-updates or #sprint-reports). In the message field, build a summary using dynamic content and expressions. Include the sprint name, completion date, and task statistics. Format it like: 'Sprint @{body('Parse_JSON')?['sprint_name']} completed! ✅ @{variables('CompletedTasks')} tasks done ❌ @{variables('IncompleteTasks')} incomplete (@{variables('TotalTasks')} total)'.

  1. 1Select target channel from Channel dropdown
  2. 2Click in Message field and select 'Expression' tab
  3. 3Build message with sprint name and task counts
  4. 4Include emojis and formatting for readability
What you should see: Slack message configured with dynamic sprint data and task statistics.
Common mistake — Channel names must include the # symbol and exist in your Slack workspace.
10

Top toolbar > Save > Test

Save and Test Flow

Click 'Save' at the top to save your flow. Power Automate will generate the webhook URL in the HTTP trigger. Copy this URL - you'll need it for ClickUp webhook configuration. Test the flow by clicking 'Test' and selecting 'Manually'. The flow will wait for a webhook call from ClickUp.

  1. 1Click 'Save' button in the top toolbar
  2. 2Copy the webhook URL from HTTP trigger
  3. 3Click 'Test' and select 'I'll perform the trigger action'
  4. 4Click 'Save & Test' to start listening
What you should see: Flow saved successfully with webhook URL ready for ClickUp configuration.
Power Automate
▶ Test flow
executed
ClickUp
Slack
Slack
🔔 notification
received
11

ClickUp Settings > Integrations > Webhooks

Configure ClickUp Webhook

In ClickUp, go to your workspace settings and find Webhooks. Create a new webhook pointing to your Power Automate URL. Set the event to trigger when a List (sprint) status changes to 'Complete' or 'Done'. Include task data in the payload by checking the appropriate boxes. Test the webhook by completing a test sprint in ClickUp.

  1. 1Open ClickUp workspace settings
  2. 2Navigate to Integrations > Webhooks
  3. 3Click 'Create Webhook' and paste Power Automate URL
  4. 4Select 'List updated' event and set status filter to 'Complete'
What you should see: ClickUp webhook configured to trigger Power Automate when sprints complete.
Common mistake — Webhook events vary by ClickUp plan - some features require paid subscriptions.

Add this expression to the Slack message field to calculate completion percentage and format a more detailed summary with sprint metrics.

JavaScript — Code Stepconcat(
▸ Show code
concat(
  'Sprint ', body('Parse_JSON')?['name'], ' completed! 📊\n',
  '✅ Completed: ', variables('CompletedTasks'), '\n',

... expand to see full code

concat(
  'Sprint ', body('Parse_JSON')?['name'], ' completed! 📊\n',
  '✅ Completed: ', variables('CompletedTasks'), '\n',
  '❌ Incomplete: ', variables('IncompleteTasks'), '\n',
  '📈 Success Rate: ', 
  if(equals(variables('TotalTasks'), 0), '0%', 
    concat(string(div(mul(variables('CompletedTasks'), 100), variables('TotalTasks'))), '%')
  )
)

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 Power Automate for this if you're already deep in the Microsoft ecosystem and want to avoid managing another integration platform. The HTTP trigger handles ClickUp webhooks reliably, and the built-in Slack connector includes proper error handling and retry logic. Power Automate also gives you expressions for calculating completion percentages without external code. Skip this if you need complex sprint analytics or custom formatting - n8n handles that better.

Cost

At 10 sprint completions per month, you'll use roughly 30 Power Automate actions per run (loops count as separate actions). That's 300 actions monthly, well within the 2,000-action free tier if you have Microsoft 365. Pure usage costs hit around $15/month for teams completing 100+ sprints monthly. Zapier charges per task in the loop, making it 3x more expensive for the same volume.

Tradeoffs

Zapier beats Power Automate with a native ClickUp trigger that doesn't require webhook setup - just point and click. Make offers better conditional logic for complex sprint rules and custom status mappings. n8n gives you full JavaScript for advanced sprint analytics like velocity trending. Pipedream handles ClickUp API rate limits more gracefully with built-in exponential backoff. But Power Automate wins on enterprise compliance and integration with Teams if your company uses Microsoft everything.

You'll hit ClickUp's webhook payload inconsistencies first - task arrays sometimes come back empty or malformed depending on sprint size. Power Automate's Parse JSON throws cryptic errors when the schema doesn't match, so build error handling early. The Apply to each loop gets slow with 100+ tasks per sprint, adding 2-3 seconds of processing time that delays your Slack notifications.

Ideas for what to build next

  • Add Sprint MetricsExtend the message to include story points, assignee breakdown, and sprint velocity calculations.
  • Create Digest VersionBuild a weekly flow that summarizes multiple sprint completions into a single report.
  • Add Error NotificationsSend alerts to a separate channel when sprints complete with high numbers of incomplete tasks.

Related guides

Was this guide helpful?
ClickUp + Slack overviewPower Automate profile →