

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-timeUse case type
notificationReal-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.
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
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.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Sprint Name | ||
| Total Tasks | ||
| Completed Tasks | ||
| Completion Percentage | ||
| Incomplete Tasks | ||
2 optional fieldsβΈ show
| Sprint Duration | |
| Team Members |
Step-by-Step Setup
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.
- 1Click Workflows in the left sidebar
- 2Click the green New button
- 3Enter 'ClickUp Sprint Summary to Slack' as the name
- 4Click Create to open the builder
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.
- 1Click on Step 1 to open the trigger configuration
- 2Type 'ClickUp' in the app search box
- 3Select ClickUp from the results
- 4Choose 'New Webhook Event' as the trigger
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.
- 1Click the Connect Account button
- 2Sign into ClickUp in the popup window
- 3Click Allow to grant permissions
- 4Select your target workspace from the dropdown
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.
- 1Copy the webhook URL from the Pipedream step
- 2Open ClickUp and go to Settings > Integrations
- 3Click Webhooks and then Add Webhook
- 4Paste the URL and select Task Status Updated and List Updated events
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.
- 1Click the + button below the ClickUp trigger
- 2Select 'Run Node.js Code' from the step options
- 3Name this step 'Filter Sprint Completion'
- 4Click Continue to open the code editor
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.
- 1Clear the existing template code
- 2Add logic to check webhook event type
- 3Filter for sprint-related list changes
- 4Add conditions for completion detection
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.
- 1Click + below the filter step
- 2Search for and select ClickUp
- 3Choose 'Get Tasks in List' action
- 4Use the same Connected Account from Step 1
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.
- 1Set List ID to steps.trigger.event.list_id
- 2Enable include_closed parameter
- 3Leave status filters empty to get all tasks
- 4Set page limit to 100 for complete results
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.
- 1Click + to add another code step
- 2Name it 'Calculate Sprint Summary'
- 3Reference steps.get_tasks_in_list.tasks for task data
- 4Add logic to count completed vs total tasks
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.
- 1Click + below the calculation step
- 2Search for and select Slack
- 3Choose 'Send Message to Channel'
- 4Connect your Slack workspace account
assignees[0].username: {{assignees[0].username}}
due_date: {{due_date}}
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.
- 1Select your target channel from the dropdown
- 2Reference steps.calculate_sprint_summary for message text
- 3Add sprint name from webhook data
- 4Format with Slack markdown for better visibility
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
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.
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.
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
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup