

How to Post Todoist Standups to Slack with Make
Every morning at a scheduled time, Make pulls today's tasks from Todoist and posts a formatted summary to a designated Slack channel for team standups.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Small-to-mid teams (5–30 people) already using Todoist for task tracking who want standup updates without anyone copy-pasting tasks into Slack each morning.
Not ideal for
Teams using project management tools like Linear, Jira, or Asana — those have dedicated Slack integrations that handle this natively without a middleware tool.
Sync type
scheduledUse case type
reportingReal-World Example
A 12-person product team at a remote-first startup uses this to post each person's Todoist tasks due today into their #standup Slack channel at 9:00 AM. Before this, the team lead spent 10–15 minutes every morning pinging teammates and manually compiling updates. Now the channel populates automatically and async standups take under 3 minutes.
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 Make
Copy the pre-built Make blueprint and paste it straight into Make. 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 | ||
| Task Content | ||
| Due Date | ||
| Priority | ||
5 optional fields▸ show
| Project Name | |
| Assignee Name | |
| Task URL | |
| Labels | |
| Section Name |
Step-by-Step Setup
make.com > Scenarios > Create a new scenario
Create a new scenario in Make
Log into Make at make.com and click the blue 'Create a new scenario' button in the top-right corner of the Scenarios dashboard. You'll land on a blank canvas with a single empty module in the center. This is where you'll chain your Todoist and Slack modules together. Give the scenario a name right away — click the pencil icon near the top-left and type something like 'Daily Standup — Todoist to Slack'.
- 1Log in at make.com
- 2Click the blue 'Create a new scenario' button (top-right)
- 3Click the pencil icon top-left and rename the scenario to 'Daily Standup — Todoist to Slack'
- 4Click the large '+' circle on the canvas to open the module picker
Scenario Canvas > Module Picker > Core > Schedule
Add the Schedule trigger
In the module search dialog, type 'Schedule' and select the 'Schedule' module — it's listed under the Core apps section, not under Todoist. This module fires the scenario at a time you define. You are not setting up a Todoist trigger here — the schedule will be the entry point, and Todoist will be polled in the next step. Click 'Choose when to run' and set your preferred daily time.
- 1Type 'Schedule' in the module search box
- 2Select 'Schedule' from the Core section
- 3Click 'Choose when to run' in the module settings panel
- 4Set interval to 'Every day' and enter your standup time (e.g., 09:00 AM)
- 5Set the timezone to match your team's primary timezone
Scenario Canvas > Module Picker > Todoist > Search Tasks
Connect your Todoist account
Click the '+' button to the right of the Schedule module to add the next module. Search for 'Todoist' and select 'Search Tasks'. Make will immediately prompt you to connect a Todoist account — click 'Add' and authenticate via OAuth. Make redirects you to Todoist's permission screen. Grant access and you'll be returned to the Make canvas with the connection active.
- 1Click the '+' icon to the right of the Schedule module
- 2Type 'Todoist' in the search box
- 3Select 'Search Tasks' from the Todoist module list
- 4Click 'Add' next to the Connection dropdown
- 5Complete OAuth login in the Todoist popup window
- 6Confirm the connection name appears in the Connection field
Todoist Module Settings > Filter
Configure the Todoist task filter
Inside the 'Search Tasks' module, you need to tell Todoist which tasks to return. Set the Filter field to 'today' — this is Todoist's native filter syntax that returns all tasks due on the current day. Optionally, add a Project ID if you only want tasks from a specific project. Leave 'Maximum number of returned results' at the default 100 unless your team has unusually high daily task volume.
- 1Click the 'Search Tasks' module to open its settings
- 2In the 'Filter' field, type: today
- 3Optional: click the 'Project ID' dropdown and select a specific project to scope the pull
- 4Leave 'Maximum number of returned results' at 100
- 5Click OK to save the module settings
Scenario Canvas > Module Picker > Flow Control > Text Aggregator
Add a Text Aggregator to build the message
The Search Tasks module returns one bundle per task — you need to combine them into a single Slack message. Click '+' after the Todoist module, search for 'Text aggregator', and select it from the Flow Control section. Set the Source Module to 'Todoist — Search Tasks'. In the Text field, build your row template: each task line should show the task content, due date, and priority. Use Make's mapping panel to insert variables.
- 1Click '+' after the Todoist module
- 2Search 'Text aggregator' and select it from Flow Control
- 3Set 'Source Module' to '3. Todoist — Search Tasks'
- 4In the 'Text' field, type: •
{{content}}— Due: {{due.date}} | Priority: {{priority}} - 5Set 'Row separator' to '\n' (new line)
- 6Click OK to save
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}channel: {{channel}}
ts: {{ts}}
Text Aggregator Module > Text Field > Formula Mode
Map priority numbers to readable labels
Inside the Text Aggregator's Text field, replace the raw {{priority}} variable with a Make if() formula that converts numbers to labels. Click the variable mapping icon next to the Priority placeholder and switch to formula mode using the 'T' toggle in the input field. This step prevents your Slack message from showing cryptic numeric priorities.
- 1Open the Text Aggregator module settings
- 2Click inside the Text field and locate the {{priority}} placeholder
- 3Click the 'T' (text/formula) toggle to enter formula mode
- 4Replace {{priority}} with the formula shown in the Pro Tip section
- 5Click OK to confirm
Scenario Canvas > Module Picker > Slack > Create a Message
Connect your Slack account
Click '+' after the Text Aggregator to add the Slack module. Search for 'Slack' and select 'Create a Message'. Click 'Add' in the Connection dropdown to authenticate with Slack via OAuth. Make will redirect you to Slack's permission screen — you must approve the bot scopes including chat:write and channels:read. After approving, select the workspace where your standup channel lives.
- 1Click '+' after the Text Aggregator module
- 2Search 'Slack' and select 'Create a Message'
- 3Click 'Add' next to the Connection dropdown
- 4Authorize Make's Slack app in the OAuth popup
- 5Confirm your workspace name appears in the Connection field
Slack Module Settings > Channel + Text
Configure the Slack message content
Inside the Slack 'Create a Message' module, set the Channel to your standup channel (e.g., #standup or #daily-updates). In the Text field, build the full message: start with a header line like '*📋 Daily Standup — {{formatDate(now; "dddd, MMMM D")}}*' then add a line break, then map the aggregated text from the Text Aggregator output. Set 'Link Names' to Yes so @mentions resolve correctly if you include assignee names.
- 1Click the 'Channel' dropdown and search for your standup channel name
- 2In the Text field, type the header: *📋 Daily Standup — * then use the mapping panel to insert formatDate(now; "dddd, MMMM D")
- 3Press Enter twice after the header to add spacing
- 4Click the mapping panel and insert the Text Aggregator's 'Text' output variable
- 5Set 'Link Names' to Yes
- 6Click OK to save
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Scenario Canvas > Right-click Todoist Module > Add Router
Add an error handler for empty task days
On days when nobody has tasks due, the Text Aggregator outputs an empty string and Slack receives a blank message. Prevent this by adding a Router after the Todoist module. Set Route 1 to continue to the Text Aggregator only if the task count is greater than 0. Set Route 2 to a Slack message that posts 'No tasks due today — enjoy the quiet.' This makes empty days graceful instead of broken.
- 1Right-click the connection line between the Todoist module and the Text Aggregator
- 2Select 'Add a router'
- 3On Route 1, click the filter icon and set condition: 'Total number of bundles' Greater than '0'
- 4On Route 2, add a Slack 'Create a Message' module posting a fallback message to the same standup channel
- 5Click OK on both routes
Scenario Canvas > Run once (bottom toolbar)
Run a test and verify the Slack output
Click 'Run once' in the bottom-left of the Make canvas to fire the scenario manually against today's real Todoist data. Make will highlight each module in blue as it executes, then show green checkmarks when complete. Click the bubble above the Slack module to inspect the exact message payload that was sent. Verify the date header, task list, and priority labels all render correctly in your Slack channel.
- 1Click the 'Run once' button in the bottom-left toolbar
- 2Watch each module highlight as the scenario executes
- 3Click the green bubble above the Slack module to open the output inspector
- 4Check your Slack standup channel to confirm the message appeared
- 5Verify task names, due dates, and priority labels are formatted correctly
Scenario Canvas > Toggle switch (bottom-left) > ON
Activate the scenario and set scheduling
Once the test passes, toggle the scenario from OFF to ON using the switch in the bottom-left corner of the canvas. Make will now execute this scenario automatically at your configured schedule time. Confirm the schedule is correct by clicking the Schedule module and reviewing the time and timezone settings one final time before going live. Your scenario's next run time appears in the top metadata bar.
- 1Click the toggle switch in the bottom-left from OFF to ON
- 2Confirm the dialog that appears asking you to activate the scenario
- 3Click the Schedule module to verify the time and timezone one last time
- 4Note the 'Next run' timestamp in the scenario header bar
Paste this formula into the Text Aggregator's Text field (in formula mode) to convert Todoist's numeric priority values to readable labels and include a clickable task link. Switch any input field to formula mode by clicking the 'T' toggle on the right side of the field in Make's module settings panel.
JavaScript — Custom Functionif(▸ Show code
if(
{{priority}} = 4;
"Urgent";... expand to see full code
if(
{{priority}} = 4;
"Urgent";
if(
{{priority}} = 3;
"High";
if(
{{priority}} = 2;
"Medium";
"Normal"
)
)
)
// Full row template for the Text Aggregator 'Text' field:
// • `{{content}}` — Due: {{formatDate(due.date; "MMM D")}} | Priority: [paste formula above] | <{{url}}|View Task>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 Make for this if your team wants a visual, maintainable scenario that non-developers can actually edit later. Make's canvas makes the Todoist → Aggregate → Slack flow obvious at a glance — a new team member can open it and understand what's happening in under a minute. Make is also the right call if you need to add conditional logic (skip weekends, route by project, handle empty days) without writing code. The one scenario where you'd skip Make: if your team already pays for a Zapier Teams plan and the person setting this up has never touched Make before. The learning curve isn't steep, but it's real.
Here's the cost math. Each scenario run burns approximately 3–4 Make operations: one for the Schedule trigger, one per task from the Todoist module, one for the Text Aggregator, and one for the Slack module. A team with 10 tasks due daily running Monday–Friday burns roughly (10 + 3) × 22 = 286 operations per month. Make's Free plan gives you 1,000 operations/month — plenty for a single team. Scale to 3 teams with 10 tasks each and you hit 858 operations/month, still inside Free. Push to 5 teams or 20+ daily tasks and you'll want the Core plan at $9/month for 10,000 operations. Zapier's equivalent on a paid plan costs $19.99/month minimum. Make wins on cost here by a clear margin for this workflow.
Zapier's advantage: setup is genuinely faster. If you've never used either tool, Zapier's linear Zap editor gets you live in 8 minutes vs. Make's 20. The Zapier Slack + Todoist integration also has a pre-built template that requires almost no configuration. n8n's advantage: you can self-host it for $0 and write a JavaScript function node that handles priority conversion, date formatting, and grouping by assignee in one step — cleaner than Make's multi-module approach. Power Automate wins if your company is Microsoft-first and already has a Power Automate license — the Teams connector is more capable than Slack's and there's no extra cost. Pipedream handles this well if someone on your team codes; the Todoist + Slack workflow fits in 20 lines of Node.js with full async handling. Make is still the right call here for most teams because it hits the middle ground: no code required, handles conditional logic through the Router, and costs less than Zapier at meaningful team size.
Three things you'll hit after the first week. First: Todoist's 'today' filter includes overdue tasks from previous days. If someone has a task from last Tuesday that's still open, it shows up in today's standup looking like a current task. Use 'due: today' (exact syntax) in the filter field to exclude overdue items, or add a label-based filter to only surface tasks tagged 'standup'. Second: Make's Slack module doesn't support Slack Block Kit formatting — you get plain text or basic markdown, not the rich card-style messages Slack's own apps post. If your team wants section headers, buttons, or dividers, you'll need to switch the Slack module to an HTTP module and call Slack's chat.postMessage API directly with a Block Kit payload. Third: the scenario silently skips if Make has a platform outage during your scheduled run time. Make does not retry missed scheduled runs automatically — if your 9:00 AM run fails due to a Make service issue, the standup simply doesn't post that day. Enable Make's email notifications for failed scenarios so you catch this immediately.
Ideas for what to build next
- →Add per-person task grouping — If your team shares a single Todoist workspace, use a Make Iterator and Array Aggregator combo to group tasks by assignee before posting — each person's tasks appear as a named section in the standup message.
- →Post an end-of-day completed tasks summary — Add a second scheduled scenario at 5:00 PM that pulls Todoist tasks with the 'completed today' filter and posts a done-list to the same Slack channel, creating a full daily loop without any manual reporting.
- →Route standups to per-team Slack channels — Add a Router in Make that branches by Todoist project name — Engineering tasks go to #eng-standup, Marketing tasks go to #marketing-standup — so each team only sees their own work without a cluttered shared channel.
Related guides
How to Send Weekly Todoist Reports to Slack with Pipedream
~15 min setup
How to Send Weekly Todoist Reports to Slack with Power Automate
~15 min setup
How to Send Weekly Todoist Reports to Slack with n8n
~20 min setup
How to Send Weekly Todoist Reports to Slack with Zapier
~8 min setup
How to Send Weekly Todoist Reports to Slack with Make
~12 min setup
How to Assign Todoist Tasks from Slack Mentions with Pipedream
~15 min setup