

How to Automate Sprint Reports from Trello to Slack with n8n
Send automated daily standup reports from Trello boards to Slack channels with completed tasks, overdue cards, and upcoming deadlines.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Development teams running daily standups who want automated status reports from Trello boards
Not ideal for
Teams needing real-time notifications for individual card changes
Sync type
scheduledUse case type
reportingReal-World Example
A 12-person development team gets daily Trello summaries in #standup at 8:30 AM. The message shows cards completed yesterday, overdue items, and deadlines for the next 3 days. Before automation, the Scrum Master spent 15 minutes each morning manually checking boards and typing status updates.
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 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.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Card Name | ||
| List Name | ||
5 optional fields▸ show
| Due Date | |
| Completion Date | |
| Assignees | |
| Labels | |
| Card URL |
Step-by-Step Setup
Workflows > + New Workflow
Create new n8n workflow
Open n8n and create a new workflow for your daily standup automation. You'll set up a scheduled trigger that runs every weekday morning. The workflow will query your Trello boards and format results for Slack.
- 1Click the + New Workflow button
- 2Name it 'Daily Standup Reports'
- 3Save the workflow
Add Node > Trigger > Schedule Trigger
Add Cron Schedule trigger
Replace the manual trigger with a Cron node to run daily at 8:30 AM on weekdays. Use the cron expression to target Monday through Friday only. This ensures reports only generate during work days.
- 1Delete the Manual Trigger node
- 2Click + and select Schedule Trigger
- 3Set Mode to 'Cron'
- 4Enter cron expression: 30 8 * * 1-5
Add Node > Apps > Trello
Connect to Trello
Add a Trello node and authenticate with your account. You'll need a Trello API key and token from your account settings. This connection lets n8n read your board data and card details.
- 1Click + after the Schedule node
- 2Search for and select Trello
- 3Click 'Create New' credential
- 4Enter your API Key and Token from trello.com/app-key
Trello Node > Parameters
Configure board selection
Set the Trello node to get all cards from your sprint board. Choose the specific board from the dropdown and set filters for the data you need. This pulls all cards regardless of list position.
- 1Set Operation to 'Get Cards'
- 2Select your sprint board from the Board dropdown
- 3Set 'Return All' to true
- 4Add additional fields: due date, labels, members
Add Node > Data > Code > Function
Add date filtering logic
Insert a Function node to filter cards by completion date and due dates. This code identifies cards completed yesterday, overdue items, and upcoming deadlines. You'll process the raw Trello data into meaningful categories.
- 1Add a Function node after Trello
- 2Paste the date filtering JavaScript code
- 3Set the function name to 'categorizeCards'
- 4Connect it to the Trello output
Add Node > Data > Code > Function
Format Slack message
Add another Function node to build the Slack message format. This creates a structured report with sections for each card category. Use Slack's block kit formatting for better readability in channels.
- 1Add a second Function node
- 2Write code to format the daily report
- 3Include card names, assignees, and due dates
- 4Use Slack markdown for formatting
Add Node > Apps > Slack
Connect Slack integration
Add a Slack node and set up bot authentication. Create a Slack app in your workspace with chat:write permissions. This allows n8n to post messages to your chosen standup channel.
- 1Add Slack node after the message formatter
- 2Create new Slack credential
- 3Add your Bot User OAuth Token
- 4Set operation to 'Post Message'
Slack Node > Parameters
Configure message posting
Set the target channel and message content for your daily reports. Choose your team's standup channel and map the formatted message from the previous step. Test with a direct message first.
- 1Select your #standup channel
- 2Set Text to the formatted message output
- 3Enable 'As User' to false for bot posting
- 4Add a thread_ts if replying to a daily thread
channel: {{channel}}
ts: {{ts}}
Workflow Canvas > Execute Workflow
Test the workflow
Execute the workflow manually to verify all connections and data formatting. Check that cards are properly categorized and the Slack message appears correctly formatted. Fix any authentication or data issues before scheduling.
- 1Click 'Execute Workflow' button
- 2Watch each node execute and show data
- 3Check the final Slack message in your channel
- 4Verify card counts and formatting
Workflow Canvas > Toggle Active
Activate scheduled execution
Turn on the workflow to run automatically every weekday morning. The schedule trigger will now fire daily and generate reports. Monitor the execution history to catch any API failures or data issues.
- 1Click the 'Inactive' toggle in the top right
- 2Confirm activation in the dialog
- 3Check that status shows 'Active'
- 4Set up error notifications if desired
Paste this code into the first Function node to properly categorize cards by date ranges and handle timezone conversion for accurate reporting.
JavaScript — Code Nodeconst today = new Date();▸ Show code
const today = new Date(); const yesterday = new Date(today); yesterday.setDate(today.getDate() - 1);
... expand to see full code
const today = new Date();
const yesterday = new Date(today);
yesterday.setDate(today.getDate() - 1);
const threeDaysOut = new Date(today);
threeDaysOut.setDate(today.getDate() + 3);
const completed = [];
const overdue = [];
const upcoming = [];
for (const card of $input.all()) {
const dueDate = card.json.due ? new Date(card.json.due) : null;
const isComplete = card.json.list?.name?.toLowerCase().includes('done');
// Cards completed yesterday
if (isComplete && card.json.dateLastActivity) {
const lastActivity = new Date(card.json.dateLastActivity);
if (lastActivity.toDateString() === yesterday.toDateString()) {
completed.push({
name: card.json.name,
members: card.json.members?.map(m => m.fullName).join(', ') || 'Unassigned',
url: card.json.shortUrl
});
}
}
// Overdue cards
if (dueDate && dueDate < today && !isComplete) {
overdue.push({
name: card.json.name,
due: dueDate.toLocaleDateString(),
members: card.json.members?.map(m => m.fullName).join(', ') || 'Unassigned',
url: card.json.shortUrl
});
}
// Due in next 3 days
if (dueDate && dueDate >= today && dueDate <= threeDaysOut && !isComplete) {
upcoming.push({
name: card.json.name,
due: dueDate.toLocaleDateString(),
members: card.json.members?.map(m => m.fullName).join(', ') || 'Unassigned',
url: card.json.shortUrl
});
}
}
return [{json: {completed, overdue, upcoming}}];Scaling Beyond 200+ cards per board+ Records
If your volume exceeds 200+ cards per board records, apply these adjustments.
Filter by specific lists
Query only active lists like 'In Progress' and 'Done' instead of pulling all cards to reduce API calls and processing time.
Cache board data
Store previous day's results in n8n's built-in storage and only process changed cards to avoid reprocessing the entire board daily.
Batch API requests
Use Trello's batch API endpoints to get multiple boards or lists in a single request instead of separate calls for each resource.
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 n8n for this if you need custom date logic and formatting that goes beyond simple triggers. The Function nodes let you build complex card categorization and handle timezone conversions properly. You also get reliable scheduled execution without paying per run. Skip n8n if your team just needs basic 'card moved' notifications - Zapier's Trello triggers are more straightforward for simple alerts.
Real cost breakdown: This workflow executes once daily with about 8 operations per run (schedule, Trello API call, 2 functions, Slack post, plus data processing). At 22 business days per month, you're looking at 176 operations monthly. On n8n cloud starter plan, that's easily within the free 5,000 execution limit. Zapier would cost $20/month since you'd need a premium plan for scheduled triggers and custom code.
Make handles Trello's complex card data better with built-in date parsing functions, and their visual router makes it easier to categorize cards without writing JavaScript. Zapier wins on setup speed - their Trello trigger templates get you running in 5 minutes versus 30 minutes in n8n. Power Automate's Trello connector is buggy and misses webhook events frequently. But n8n gives you the most control over message formatting and handles edge cases like empty boards or API timeouts better than any competitor.
You'll hit timezone confusion first - Trello returns UTC timestamps but your team expects local time in reports. The API sometimes returns cards with null due dates that break date comparisons. Large boards (300+ cards) can timeout on the Function node processing, so add pagination logic early. Slack's markdown formatting is pickier than it appears - extra spaces break bullet points and line breaks need double newlines.
Ideas for what to build next
- →Add weekend summary reports — Create a separate workflow that runs Monday mornings with a full week recap including velocity metrics.
- →Include burndown data — Pull story points from Trello card descriptions and calculate sprint progress percentages.
- →Send missed standup reminders — Check for team members who haven't updated cards in 2+ days and send direct message reminders.
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