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

How to Send Sprint Completion Summaries with Pipedream

Automatically post Slack summaries with completed vs incomplete task counts when ClickUp sprints finish.

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

Best for

Dev teams running sprints in ClickUp who need instant completion visibility in Slack

Not ideal for

Teams wanting daily progress updates instead of completion-only notifications

Sync type

real-time

Use case type

notification

Real-World Example

πŸ’‘

A 12-person product team runs 2-week sprints in ClickUp and wants immediate notifications in #dev-updates when sprints close. Before automation, the scrum master manually checked task completion rates and posted updates 4-6 hours after sprint end, missing the daily standup window.

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 Pipedream

Copy the pre-built Pipedream blueprint and paste it straight into Pipedream. 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 admin access to create webhooks
Slack workspace permission to add apps and post messages
ClickUp lists or folders configured as sprints with clear naming
Consistent task status workflow in ClickUp with defined complete states

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Sprint Name
Total Tasks
Completed Tasks
Completion Percentage
Incomplete Tasks
2 optional fieldsβ–Έ show
Sprint Duration
Team Members

Step-by-Step Setup

1

Workflows > New

Create new workflow in Pipedream

Go to pipedream.com and click Workflows in the left sidebar. Click the green New button to create a workflow. Name it 'ClickUp Sprint Summary to Slack' and click Create. You'll land on the workflow builder with an empty trigger step ready.

  1. 1Click Workflows in the left sidebar
  2. 2Click the green New button
  3. 3Enter 'ClickUp Sprint Summary to Slack' as the name
  4. 4Click Create to open the builder
βœ“ What you should see: You should see the workflow builder with Step 1 showing 'Select a trigger' and an empty canvas.
2

Step 1 > Select App > ClickUp

Add ClickUp webhook trigger

Click on Step 1 to configure the trigger. Search for 'ClickUp' in the app list and select it. Choose 'New Webhook Event' as your trigger type. This creates an instant webhook that ClickUp will ping when events happen in your workspace.

  1. 1Click on Step 1 to open the trigger configuration
  2. 2Type 'ClickUp' in the app search box
  3. 3Select ClickUp from the results
  4. 4Choose 'New Webhook Event' as the trigger
βœ“ What you should see: You should see ClickUp webhook configuration options and a unique webhook URL generated by Pipedream.
⚠
Common mistake β€” ClickUp webhooks fire for ALL matching events in your workspace. You'll filter for sprint completion in a later step.
Pipedream
+
click +
search apps
ClickUp
CL
ClickUp
Add ClickUp webhook trigger
ClickUp
CL
module added
3

Step 1 > Connect Account

Connect your ClickUp account

Click 'Connect Account' and sign into ClickUp when prompted. Grant Pipedream access to your workspace. Select the specific workspace where your sprints live from the dropdown. The webhook will only receive events from this workspace.

  1. 1Click the Connect Account button
  2. 2Sign into ClickUp in the popup window
  3. 3Click Allow to grant permissions
  4. 4Select your target workspace from the dropdown
βœ“ What you should see: You should see your ClickUp account name and workspace displayed with a green Connected status.
Pipedream settings
Connection
Choose a connection…Add
click Add
ClickUp
Log in to authorize
Authorize Pipedream
popup window
βœ“
Connected
green checkmark
4

ClickUp Settings > Integrations > Webhooks

Configure webhook events in ClickUp

Copy the webhook URL from Pipedream. In ClickUp, go to your workspace settings and find Integrations. Click Webhooks and paste the Pipedream URL. Check 'Task Status Updated' and 'List Updated' events to catch sprint completion triggers.

  1. 1Copy the webhook URL from the Pipedream step
  2. 2Open ClickUp and go to Settings > Integrations
  3. 3Click Webhooks and then Add Webhook
  4. 4Paste the URL and select Task Status Updated and List Updated events
βœ“ What you should see: ClickUp should show the webhook as Active with the selected events checked.
⚠
Common mistake β€” Don't enable all events or you'll get flooded with notifications for every task change.
5

Step 1 > + > Node.js Code

Add sprint completion filter step

Click the + button below Step 1 to add a new step. Choose 'Run Node.js Code' from the options. This code step will filter incoming webhooks to only process sprint completion events. You'll check if the webhook contains sprint-related data before proceeding.

  1. 1Click the + button below the ClickUp trigger
  2. 2Select 'Run Node.js Code' from the step options
  3. 3Name this step 'Filter Sprint Completion'
  4. 4Click Continue to open the code editor
βœ“ What you should see: You should see a Node.js code editor with a basic async function template.
⚠
Common mistake β€” Filters are the most common place setups break. Double-check the field name and value exactly match what your app sends β€” a single capital letter difference will block everything.
ClickUp
CL
trigger
filter
Condition
matches criteria?
yes β€” passes through
no β€” skipped
Slack
SL
notified
6

Step 2 > Code Editor

Write sprint detection logic

Replace the template code with logic to detect sprint completion. Check if the webhook event relates to a list or folder marked as a sprint, and if tasks have been moved to 'complete' status. Use steps.trigger.event to access webhook data from ClickUp.

  1. 1Clear the existing template code
  2. 2Add logic to check webhook event type
  3. 3Filter for sprint-related list changes
  4. 4Add conditions for completion detection
βœ“ What you should see: Your code should check webhook data and only proceed when a sprint actually completes.
⚠
Common mistake β€” ClickUp's webhook payload varies by event type. Test with sample data to verify your filters work.
7

Step 2 > + > ClickUp > Get Tasks in List

Add ClickUp API step to fetch tasks

Add another step by clicking the + button. Search for ClickUp again and select 'Get Tasks in List' action. This will pull all tasks from the completed sprint so you can count completed vs incomplete items for your summary.

  1. 1Click + below the filter step
  2. 2Search for and select ClickUp
  3. 3Choose 'Get Tasks in List' action
  4. 4Use the same Connected Account from Step 1
βœ“ What you should see: You should see ClickUp task retrieval configuration with list ID and filter options.
8

Step 3 > Configuration

Configure task retrieval parameters

Set the List ID using data from your webhook trigger - reference steps.trigger.event.list_id. Configure filters to include all task statuses so you get both complete and incomplete tasks. Set include_closed to true to capture everything in the sprint.

  1. 1Set List ID to steps.trigger.event.list_id
  2. 2Enable include_closed parameter
  3. 3Leave status filters empty to get all tasks
  4. 4Set page limit to 100 for complete results
βœ“ What you should see: The step should show configuration pulling list ID from the webhook and including all task types.
⚠
Common mistake β€” Some ClickUp webhooks don't include list_id directly. You may need to extract it from the task object path.
9

Step 3 > + > Node.js Code

Add summary calculation step

Add another Node.js code step to process the task data. Loop through all returned tasks and count how many are in 'complete' vs 'incomplete' status. Calculate percentages and build the summary message text that will go to Slack.

  1. 1Click + to add another code step
  2. 2Name it 'Calculate Sprint Summary'
  3. 3Reference steps.get_tasks_in_list.tasks for task data
  4. 4Add logic to count completed vs total tasks
βœ“ What you should see: Your code should output completed count, total count, percentage, and formatted message text.
10

Step 4 > + > Slack > Send Message to Channel

Add Slack message step

Click + to add a final step and search for Slack. Select 'Send Message to Channel' action. Connect your Slack workspace when prompted. Choose the channel where sprint summaries should appear - typically a dev or project updates channel.

  1. 1Click + below the calculation step
  2. 2Search for and select Slack
  3. 3Choose 'Send Message to Channel'
  4. 4Connect your Slack workspace account
βœ“ What you should see: You should see Slack configuration with channel selection and message formatting options.
⚠
Common mistake β€” Make sure the Pipedream app has permission to post in your target channel before testing.
message template
πŸ”” New Record: {{name}} {{status}}
assignees[0].username: {{assignees[0].username}}
due_date: {{due_date}}
#sales
πŸ”” New Record: Jane Smith
Company: Acme Corp
11

Step 5 > Message Configuration

Configure Slack message format

Set the channel to your sprint updates channel. Reference the summary data from Step 4 to build your message. Include sprint name, completion percentage, and task counts. Use Slack formatting like *bold* for emphasis and bullet points for readability.

  1. 1Select your target channel from the dropdown
  2. 2Reference steps.calculate_sprint_summary for message text
  3. 3Add sprint name from webhook data
  4. 4Format with Slack markdown for better visibility
βœ“ What you should see: Your message configuration should show dynamic content pulled from previous steps with proper Slack formatting.
⚠
Common mistake β€” Map fields using the variable picker β€” don't type field names manually. Hand-typed variable names often have invisible spacing errors that produce blank output.

This Node.js code goes in Step 4 (Calculate Sprint Summary) to build a formatted Slack message with task breakdown and team mentions.

JavaScript β€” Code Stepexport default defineComponent({
β–Έ Show code
export default defineComponent({
  async run({ steps, $ }) {
    const tasks = steps.get_tasks_in_list.tasks || [];

... expand to see full code

export default defineComponent({
  async run({ steps, $ }) {
    const tasks = steps.get_tasks_in_list.tasks || [];
    
    // Count task statuses
    const completed = tasks.filter(task => 
      task.status?.status === 'complete' || 
      task.status?.status === 'closed'
    ).length;
    
    const total = tasks.length;
    const incomplete = total - completed;
    const percentage = total > 0 ? Math.round((completed / total) * 100) : 0;
    
    // Extract sprint info
    const sprintName = steps.trigger.event.list?.name || 'Sprint';
    const teamMembers = [...new Set(
      tasks.map(task => task.assignees?.[0]?.username).filter(Boolean)
    )];
    
    // Build Slack message
    const message = `*${sprintName} Complete!* πŸŽ‰\n\n` +
      `βœ… Completed: ${completed} tasks (${percentage}%)\n` +
      `❌ Incomplete: ${incomplete} tasks (${100-percentage}%)\n` +
      `πŸ‘₯ Team: ${teamMembers.map(u => `@${u}`).join(', ')}\n\n` +
      `${percentage >= 80 ? 'Outstanding work! πŸš€' : 'Good progress made! πŸ’ͺ'}`;
    
    return {
      message,
      completed,
      total,
      percentage,
      sprint_name: sprintName
    };
  }
});

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 Pipedream for this if your team runs fast sprints and needs instant completion visibility. The webhook processing is genuinely instant - you get Slack notifications within 5-10 seconds of ClickUp status changes. The Node.js code steps let you build complex task counting logic that Zapier's formatter can't handle. Skip Pipedream if you want scheduled daily summaries instead of event-driven ones - Zapier's scheduler is simpler for that.

Cost

This workflow costs about 1 credit per sprint completion. At 4 sprints per month, you're looking at 4 credits monthly on Pipedream's free tier. ClickUp webhooks don't count against their API limits, so no extra costs there. Zapier would charge 1 task per sprint but their webhook processing has 5-15 minute delays. Make charges 1 operation and processes webhooks faster than Zapier but slower than Pipedream.

Tradeoffs

Make's ClickUp integration has better built-in task filtering options, so you write less custom logic. Zapier's ClickUp trigger has more event types available out of the box. n8n gives you the same Node.js flexibility as Pipedream but requires self-hosting for webhook reliability. Power Automate's ClickUp connector is limited and doesn't support webhooks well. Pipedream wins on webhook speed and built-in hosting, which matters when teams want instant sprint visibility.

You'll hit ClickUp's webhook payload inconsistencies first. Sometimes list_id is nested under task.list.id, other times it's direct. Add defensive coding with optional chaining. Large sprints over 100 tasks will hit pagination limits - the Get Tasks API only returns 100 per call by default. ClickUp's status names vary by workspace configuration, so 'complete' might be 'done' or 'finished' in your setup.

Ideas for what to build next

  • β†’
    Add task assignee breakdown β€” Extend the summary to show which team members completed the most tasks in the sprint.
  • β†’
    Create sprint burndown charts β€” Connect to a charting service to generate visual progress reports alongside text summaries.
  • β†’
    Set up retrospective reminders β€” Trigger follow-up Slack messages 24 hours after sprint completion to schedule retro meetings.

Related guides

Was this guide helpful?
← ClickUp + Slack overviewPipedream profile β†’