Intermediate~15 min setupCommunication & Project ManagementVerified April 2026
Slack logo
Jira logo

How to Send Sprint Notifications from Jira to Slack with Pipedream

Automatically notify your Slack team when Jira sprints start, end, or have goal updates with burndown summaries and incomplete ticket counts.

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

Jira Cloud for Slack exists as a native integration, but it handles basic notifications but no conditional routing. This guide uses an automation platform for full control. View native option →

Best for

Dev teams using Jira sprints who need automatic ceremony reminders and sprint status updates in Slack.

Not ideal for

Teams tracking projects in basic task tools without sprint concepts or formal agile processes.

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 12-person development team gets instant Slack notifications in #dev-team when their 2-week sprints start, end, or have goal changes. The message includes current burndown data and lists incomplete tickets. Before automation, the Scrum Master manually posted these updates and often forgot, causing missed standup prep.

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.

Jira admin permissions to create webhooks in System settings
Slack workspace admin access to install apps and connect OAuth
Active Jira project using Scrum boards with sprint planning enabled
Pipedream account with workflow creation permissions

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Sprint Namesprint.name
Sprint Statesprint.state
Sprint Start Datesprint.startDate
Sprint End Datesprint.endDate
Board Namesprint.originBoardId
Event TypewebhookEvent
4 optional fields▸ show
Sprint Goalsprint.goal
Completed Story PointscompletedPoints
Remaining Story PointsremainingPoints
Incomplete Issue CountincompleteIssues.total

Step-by-Step Setup

1

Pipedream > Workflows > New

Create New Pipedream Workflow

Log into pipedream.com and click New Workflow in the top right. Choose to start with a trigger source. You'll see a blank workflow canvas with a single trigger step. This will listen for Jira webhook events about sprint changes.

  1. 1Click 'New Workflow' in the dashboard
  2. 2Select 'HTTP / Webhook Requests' as your trigger source
  3. 3Copy the generated webhook URL from the trigger step
  4. 4Leave the HTTP method as POST
What you should see: You should see a unique webhook URL like https://xxxxx.m.pipedream.net that Jira will send events to.
Common mistake — Don't configure the webhook in Jira yet - you need to set up authentication first or you'll get permission errors.
2

Workflow > Add Step > Apps > Jira

Configure Jira Webhook Connection

Add a new step after your trigger and select Jira. You'll authenticate using your Atlassian account credentials. Pipedream stores these securely and handles token refresh automatically. Choose the 'Custom Request' action since we're processing webhook data.

  1. 1Click the + button below your webhook trigger
  2. 2Search for and select 'Jira Software Cloud'
  3. 3Click 'Connect Account' and auth with Atlassian
  4. 4Choose 'Make a Custom API Request' action
What you should see: You'll see a green 'Connected' badge next to your Jira account email in the step header.
Common mistake — If connecting a company Jira instance, make sure your personal account has admin permissions or webhook creation will fail.
3

Jira > Settings > System > Webhooks

Set Up Jira Webhook in Admin

In your Jira instance, go to System settings and create a new webhook pointing to your Pipedream URL. Select sprint-related events: sprint started, sprint closed, and sprint updated. This ensures you catch all ceremony timing changes and goal updates.

  1. 1Navigate to Jira Settings > System > WebHooks
  2. 2Click 'Create a WebHook'
  3. 3Paste your Pipedream webhook URL
  4. 4Select 'Sprint started', 'Sprint closed', and 'Sprint updated' events
  5. 5Click 'Create' to save the webhook
What you should see: The webhook shows as 'Enabled' with a green status indicator in your Jira webhook list.
Common mistake — Sprint events only fire for active boards with sprint planning enabled - they won't trigger on basic Kanban boards.
4

Workflow > Add Step > Apps > Slack

Add Slack Connection Step

Add another step and select Slack. Connect your workspace using OAuth - this gives Pipedream permission to post messages and read channel info. Choose the 'Send Message to Channel' action since you'll be posting sprint updates to a specific channel.

  1. 1Click + to add another step after Jira
  2. 2Search for and select 'Slack'
  3. 3Click 'Connect Account' and authorize your workspace
  4. 4Choose 'Send Message to Channel' action
  5. 5Select your target channel from the dropdown
What you should see: Your workspace name appears in the connected account section and the channel dropdown populates with your available channels.
Common mistake — The Slack app needs to be added to private channels before they appear in the dropdown - public channels show automatically.
5

Workflow > Add Step > Code > Node.js

Create Sprint Data Processing Code Step

Add a Node.js code step between Jira and Slack to parse the webhook payload and fetch additional sprint data. This step extracts sprint details, calculates burndown metrics, and formats the data for Slack. You'll use Jira's REST API to get incomplete issue counts.

  1. 1Click + between your Jira and Slack steps
  2. 2Select 'Code' then 'Run Node.js code'
  3. 3Name the step 'Process Sprint Data'
  4. 4Clear the default code and paste the processing logic
What you should see: The code editor opens with syntax highlighting and you can see the webhook payload structure in the trigger test data.
Common mistake — Jira webhook payloads vary by event type - sprint started events have different fields than sprint closed events.

Add this Node.js code to your processing step to calculate sprint velocity trends and include team performance context in notifications. Paste this in the code step between Jira and Slack.

JavaScript — Code Stepexport default defineComponent({
▸ Show code
export default defineComponent({
  async run({ steps, $ }) {
    const event = steps.trigger.event;

... expand to see full code

export default defineComponent({
  async run({ steps, $ }) {
    const event = steps.trigger.event;
    const sprint = event.sprint;
    
    // Fetch sprint issues for burndown calculation
    const issuesResponse = await $.send.http({
      method: 'GET',
      url: `https://your-domain.atlassian.net/rest/agile/1.0/sprint/${sprint.id}/issue`,
      headers: {
        'Authorization': `Bearer ${auths.jira_software_cloud.oauth_access_token}`,
        'Accept': 'application/json'
      }
    });
    
    let completedPoints = 0;
    let remainingPoints = 0;
    let incompleteIssues = [];
    
    issuesResponse.issues.forEach(issue => {
      const storyPoints = issue.fields.customfield_10016 || 0;
      if (issue.fields.status.statusCategory.key === 'done') {
        completedPoints += storyPoints;
      } else {
        remainingPoints += storyPoints;
        incompleteIssues.push({
          key: issue.key,
          summary: issue.fields.summary,
          points: storyPoints
        });
      }
    });
    
    // Calculate burndown health
    const totalPoints = completedPoints + remainingPoints;
    const completionRate = totalPoints > 0 ? (completedPoints / totalPoints) * 100 : 0;
    
    // Get sprint duration info
    const startDate = new Date(sprint.startDate);
    const endDate = new Date(sprint.endDate);
    const sprintDays = Math.ceil((endDate - startDate) / (1000 * 60 * 60 * 24));
    
    return {
      sprintName: sprint.name,
      sprintGoal: sprint.goal || 'No goal set',
      startDate: startDate.toLocaleDateString(),
      endDate: endDate.toLocaleDateString(),
      sprintDays,
      completedPoints,
      remainingPoints,
      totalPoints,
      completionRate: Math.round(completionRate),
      incompleteCount: incompleteIssues.length,
      topIncompleteIssues: incompleteIssues.slice(0, 5),
      eventType: event.webhookEvent,
      burndownHealth: completionRate > 70 ? '🟢' : completionRate > 40 ? '🟡' : '🔴'
    };
  }
});
6

Slack Step > Configuration > Message Text

Configure Message Field Mapping

In your Slack step, map the processed data from your code step to create rich sprint notifications. Use the dynamic field picker to reference sprint name, dates, and metrics. Format the message with Slack markdown for better readability including bullet points for incomplete tickets.

  1. 1Click in the 'Text' field of your Slack step
  2. 2Use the field picker to select data from your code step
  3. 3Format with Slack markdown: *bold*, code, and bullet points
  4. 4Add conditional text based on sprint event type
  5. 5Test the message preview
What you should see: The message preview shows formatted text with sprint data populated from your test webhook payload.
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.
Slack fields
text
user
channel
ts
thread_ts
available as variables:
1.props.text
1.props.user
1.props.channel
1.props.ts
1.props.thread_ts
7

Code Step > Edit Code

Add Sprint Burndown Chart Logic

Enhance your code step to calculate remaining story points and compare against ideal burndown. Query Jira's sprint report API to get completion metrics. This requires additional API calls but provides the team with actionable sprint health data in each notification.

  1. 1Return to your Node.js code step
  2. 2Add burndown calculation functions
  3. 3Make API calls to Jira's sprint report endpoint
  4. 4Calculate story point completion percentage
  5. 5Format burndown summary for Slack
What you should see: Your code step outputs include burndown metrics like 'completedPoints', 'remainingPoints', and 'burndownHealth' status.
Common mistake — Sprint reports are only available while the sprint is active - closed sprints return limited burndown data.
8

Jira Board > Sprint Actions > Start Sprint

Test Sprint Event Simulation

Trigger a test by starting or updating a sprint in your Jira board. Watch the workflow execution in Pipedream's logs to verify each step processes correctly. Check that your Slack channel receives the formatted notification with all expected sprint data and burndown metrics.

  1. 1Go to your Jira board and start a new sprint
  2. 2Watch for the webhook event in Pipedream's event inspector
  3. 3Check each step's output in the execution log
  4. 4Verify the Slack message appears in your target channel
  5. 5Confirm all data fields are populated correctly
What you should see: Your Slack channel shows a formatted sprint notification with burndown data, and the Pipedream log shows green checkmarks for all steps.
Common mistake — Test during low-activity hours since sprint start/stop events affect the entire development team's board view.
Pipedream
▶ Deploy & test
executed
Slack
Jira
Jira
🔔 notification
received
9

Workflow Settings > Deploy > Error Handling

Enable Workflow and Set Error Handling

Activate your workflow using the toggle switch and configure error notifications. Set up failure alerts to your personal Slack DM so you know immediately if sprint notifications fail. Add retry logic to handle temporary Jira API outages during critical sprint transitions.

  1. 1Click the Deploy button to activate your workflow
  2. 2Toggle the workflow status to 'On'
  3. 3Configure error notifications in Workflow Settings
  4. 4Set retry attempts to 3 with exponential backoff
  5. 5Test error handling by temporarily breaking a connection
What you should see: The workflow status shows 'Active' with a green indicator and error notifications are configured to alert you of failures.
Common mistake — Error notifications can be noisy during Jira maintenance windows - consider setting quiet hours for non-critical failures.

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 you need real-time sprint notifications with custom burndown calculations and your team codes. The Node.js environment handles complex Jira API responses better than drag-and-drop tools, and webhook processing is instant. Skip Pipedream if your team wants a simple point-and-click setup - Zapier's Jira integration covers basic sprint started/ended notifications without code.

Cost

This costs 1 credit per sprint event. Most teams run 2-week sprints with occasional goal updates, so expect 8-12 events per month = $0.40-0.60 monthly. Zapier charges $0.30 per task but limits API calls in lower tiers. Make costs €0.10 per operation but struggles with Jira's nested webhook payloads without custom parsing.

Tradeoffs

Make handles Jira webhooks well but requires multiple HTTP modules to fetch sprint reports and calculate burndowns - your scenarios get messy fast. Zapier's built-in Jira app covers basic sprint events but can't access the sprint report API for burndown metrics. n8n processes webhook payloads cleanly but lacks Jira-specific helper functions for parsing assignee and status data. Power Automate integrates deeply with Azure DevOps but treats Jira as a generic REST API. Pipedream wins because its async/await syntax matches Jira's API patterns perfectly.

You'll hit Jira's webhook retry behavior - failed deliveries retry 5 times over 24 hours, so temporary Pipedream outages create delayed notification floods. Sprint report APIs return different data structures for active vs completed sprints, breaking your burndown logic unexpectedly. Story point fields use custom field IDs that vary between Jira instances, so hardcoded field references fail when moving between environments.

Ideas for what to build next

  • Add Sprint Retrospective RemindersExtend the workflow to automatically post retrospective meeting reminders 2 days before sprint end with agenda templates and previous action items.
  • Create Sprint Health DashboardBuild a weekly digest that compares sprint velocity trends across multiple teams and identifies consistently underperforming sprints for coaching opportunities.
  • Integrate with Calendar AppsConnect to Google Calendar or Outlook to automatically create sprint ceremony events when sprints start and send calendar invites to the development team.

Related guides

Was this guide helpful?
Slack + Jira overviewPipedream profile →