Intermediate~20 min setupCommunication & Project ManagementVerified April 2026
Slack logo
Trello logo

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

scheduled

Use case type

reporting

Real-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.

/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 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.

Trello API key and token from trello.com/app-key
Slack Bot User OAuth Token with chat:write scope
Bot invited to target Slack channels
Read access to Trello boards you want to report on

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Card Name
List Name
5 optional fields▸ show
Due Date
Completion Date
Assignees
Labels
Card URL

Step-by-Step Setup

1

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.

  1. 1Click the + New Workflow button
  2. 2Name it 'Daily Standup Reports'
  3. 3Save the workflow
What you should see: You should see an empty workflow canvas with a single trigger node placeholder.
2

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.

  1. 1Delete the Manual Trigger node
  2. 2Click + and select Schedule Trigger
  3. 3Set Mode to 'Cron'
  4. 4Enter cron expression: 30 8 * * 1-5
What you should see: The node should show 'Runs: Every day at 8:30 AM, Monday through Friday'.
Common mistake — Cron expressions use UTC time by default - adjust for your team's timezone in the node settings.
n8n
+
click +
search apps
Slack
SL
Slack
Add Cron Schedule trigger
Slack
SL
module added
3

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.

  1. 1Click + after the Schedule node
  2. 2Search for and select Trello
  3. 3Click 'Create New' credential
  4. 4Enter your API Key and Token from trello.com/app-key
What you should see: You should see a green 'Connected' badge on the Trello credential.
4

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.

  1. 1Set Operation to 'Get Cards'
  2. 2Select your sprint board from the Board dropdown
  3. 3Set 'Return All' to true
  4. 4Add additional fields: due date, labels, members
What you should see: The node shows your board name and 'Cards: All' in the configuration summary.
Common mistake — Large boards with 500+ cards may hit Trello's API rate limits - filter by specific lists if needed.
5

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.

  1. 1Add a Function node after Trello
  2. 2Paste the date filtering JavaScript code
  3. 3Set the function name to 'categorizeCards'
  4. 4Connect it to the Trello output
What you should see: The Function node should show 3 output arrays: completed, overdue, and upcoming cards.
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.
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Trello
TR
notified
6

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.

  1. 1Add a second Function node
  2. 2Write code to format the daily report
  3. 3Include card names, assignees, and due dates
  4. 4Use Slack markdown for formatting
What you should see: The node outputs a formatted message string ready for Slack posting.
Common mistake — Slack messages over 4,000 characters get truncated - add length checks for large sprints.
7

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.

  1. 1Add Slack node after the message formatter
  2. 2Create new Slack credential
  3. 3Add your Bot User OAuth Token
  4. 4Set operation to 'Post Message'
What you should see: Slack credential shows 'Connected' with your workspace name displayed.
8

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.

  1. 1Select your #standup channel
  2. 2Set Text to the formatted message output
  3. 3Enable 'As User' to false for bot posting
  4. 4Add a thread_ts if replying to a daily thread
What you should see: The configuration shows your channel name and message preview.
Common mistake — Bot needs to be invited to private channels before it can post messages there.
message template
🔔 New Record: {{text}} {{user}}
channel: {{channel}}
ts: {{ts}}
#sales
🔔 New Record: Jane Smith
Company: Acme Corp
9

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.

  1. 1Click 'Execute Workflow' button
  2. 2Watch each node execute and show data
  3. 3Check the final Slack message in your channel
  4. 4Verify card counts and formatting
What you should see: All nodes show green checkmarks and a properly formatted message appears in Slack.
n8n
▶ Run once
executed
Slack
Trello
Trello
🔔 notification
received
10

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.

  1. 1Click the 'Inactive' toggle in the top right
  2. 2Confirm activation in the dialog
  3. 3Check that status shows 'Active'
  4. 4Set up error notifications if desired
What you should see: Workflow status shows 'Active' and next scheduled execution time appears.
Common mistake — Failed executions don't retry automatically - set up error notifications to catch issues early.

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.

1

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.

2

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.

3

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

VerdictWhy n8n for this workflow

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.

Cost

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.

Tradeoffs

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 reportsCreate a separate workflow that runs Monday mornings with a full week recap including velocity metrics.
  • Include burndown dataPull story points from Trello card descriptions and calculate sprint progress percentages.
  • Send missed standup remindersCheck for team members who haven't updated cards in 2+ days and send direct message reminders.

Related guides

Was this guide helpful?
Slack + Trello overviewn8n profile →