

How to Send Weekly Todoist Reports to Slack with Make
Every Friday at 5pm, Make pulls completed Todoist tasks for the week, counts them by project, and posts a formatted summary message to a Slack channel for leadership review.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Teams using Todoist for task tracking who need a consistent weekly summary posted to a Slack channel without manual copy-pasting.
Not ideal for
Teams needing real-time task notifications as tasks complete — use a webhook-based trigger for that instead.
Sync type
scheduledUse case type
reportingReal-World Example
A 12-person product team at a SaaS company uses this to post a Friday 5pm summary to #weekly-wins in Slack, showing how many tasks each project completed that week. Before this automation, the project manager spent 20-30 minutes every Friday pulling numbers from Todoist manually and pasting them into Slack. Now leadership gets a consistent, formatted report without anyone touching it.
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 | ||
| Project Name | ||
| Completed Date | ||
| Total Completed Count | ||
| Report Date | ||
| Slack Channel ID | ||
2 optional fields▸ show
| Assignee Name | |
| Task Due Date |
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 the visual canvas with a large plus-circle in the center — this is where your first module goes. Give the scenario a name immediately by clicking the default name at the top ('New Scenario') and typing something like 'Weekly Todoist → Slack Report'. Naming it now saves confusion when you have multiple scenarios running.
- 1Click 'Create a new scenario' (top right, blue button)
- 2Click the pencil icon next to 'New Scenario' at the top
- 3Type a name like 'Weekly Todoist → Slack Report'
- 4Press Enter to save the name
Canvas > + Module > Schedule
Add the Schedule trigger
Click the plus-circle on the canvas to open the module picker. Search for 'Schedule' and select it — this is Make's built-in clock trigger, not a Todoist module. Set it to run every week. You'll configure the exact day and time in the next step, but selecting 'Schedule' here locks in the weekly cadence as your trigger type.
- 1Click the large plus-circle in the canvas center
- 2Type 'Schedule' in the search bar
- 3Click 'Schedule' under the Tools category
- 4Select 'Every week' from the interval dropdown
Schedule Module > Settings > Advanced scheduling
Set the day and time for the weekly run
Inside the Schedule module settings, set 'Day of week' to Friday and 'Time' to your desired UTC time. The 'Advanced scheduling' toggle lets you pick specific days rather than just intervals. Double-check the UTC offset — this is the most common reason teams get reports on Saturday morning instead of Friday evening. Click 'OK' to save the module.
- 1Toggle on 'Advanced scheduling' inside the Schedule module panel
- 2Set 'Day of week' to Friday
- 3Set 'Time' to your target UTC time (e.g., 22:00 for 5pm EST)
- 4Click 'OK' to save
Canvas > + > Todoist > Search Tasks
Add Todoist — Search Tasks module
Click the plus icon to the right of the Schedule module to add the next module. Search for 'Todoist' and connect your Todoist account when prompted — you'll need to authorize Make via OAuth. Once connected, select the 'Search Tasks' action. This module will fetch tasks filtered by completion status and date range, giving you only the tasks completed in the past 7 days.
- 1Click the right-side plus icon on the Schedule module
- 2Search for 'Todoist' in the module picker
- 3Click 'Todoist' and select 'Search Tasks'
- 4Click 'Add' to connect a new Todoist account via OAuth
- 5Authorize Make in the Todoist OAuth popup that appears
Todoist Module > Search Tasks > Filter / Since / Until fields
Configure the Todoist filter for completed tasks
In the Search Tasks module, set the 'Filter' field to target completed tasks from the past week. Todoist's filter syntax uses 'overdue', 'today', or date-specific strings. For completed task history, you'll use the Todoist 'Get Completed Tasks' endpoint instead — if your Make Todoist module version offers it, select that action. Set the 'Since' field using Make's date formula: formatDate(addDays(now; -7); 'YYYY-MM-DD') to dynamically calculate 7 days back. Set 'Until' to formatDate(now; 'YYYY-MM-DD').
- 1In the 'Since' field, click the formula icon (fx) and type: formatDate(addDays(now; -7); 'YYYY-MM-DD')
- 2In the 'Until' field, type: formatDate(now; 'YYYY-MM-DD')
- 3Leave 'Project ID' blank to pull from all projects, or enter a specific project ID to narrow scope
- 4Set the maximum number of returned records to 100
- 5Click 'OK' to save
Canvas > + > Tools > Text Aggregator
Add an Aggregator to count tasks by project
Click the plus icon after the Todoist module and add a 'Text Aggregator' module from Make's built-in Tools. This module loops through every completed task returned by Todoist and combines them into a single text block. Set the 'Source Module' to your Todoist module. In the 'Text' field, format each task as a line: {{project_name}}: {{content}} using the mapped fields from the Todoist output. The aggregator will join all lines so you can send one Slack message instead of one message per task.
- 1Click the plus icon after the Todoist Search Tasks module
- 2Search for 'Text Aggregator' under Tools
- 3Set 'Source Module' to your Todoist module (the iterator source)
- 4In the 'Text' field, enter: {{project_name}}: {{content}}
- 5Set 'Row separator' to a newline character (\n)
- 6Click 'OK'
Canvas > + > Tools > Set Variable
Add a Tools — Set Variable module to count total tasks
Before the Slack message step, add a 'Set Variable' module to store the total count of completed tasks. Click the plus icon, search for 'Set Variable' under Tools. Set the variable name to total_completed and the value to the bundle count output from the Text Aggregator: {{totalCount}}. This gives you a clean number to drop into the Slack message header without extra formatting logic.
- 1Click the plus icon after the Text Aggregator module
- 2Search for 'Set Variable' under Tools
- 3Set 'Variable name' to: total_completed
- 4Set 'Variable value' to: {{totalCount}} from the Text Aggregator output
- 5Click 'OK'
Canvas > + > Slack > Create a Message
Connect your Slack account and add Send Message module
Click the plus icon and search for 'Slack'. Select 'Create a Message' (not 'Send a Message' — Make's Slack module uses 'Create a Message' for posting to channels). Authorize your Slack workspace via OAuth when prompted. Make will ask for permission to post messages — approve it. Once connected, you'll see fields for Channel, Text, and optional Block Kit formatting.
- 1Click the plus icon after the Set Variable module
- 2Search for 'Slack' in the module picker
- 3Select 'Create a Message'
- 4Click 'Add' to connect a Slack account
- 5Authorize Make in the Slack OAuth popup and grant the requested permissions
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Slack Module > Create a Message > Channel / Text fields
Configure the Slack message content
Set the 'Channel' field to the Slack channel where leadership reviews reports — type the channel name or ID (e.g., #leadership-updates). In the 'Text' field, build the message using mapped variables. A clean format: *Weekly Progress Report — {{formatDate(now; 'MMM D, YYYY')}}*
✅ Tasks completed this week: {{total_completed}}
*By project:*
{{aggregatedText}}. This uses the Text Aggregator output and the variable from Step 7 to produce a readable, consistent message every Friday.
- 1Click inside the 'Channel' field and type or select your target channel (e.g., #leadership-updates)
- 2Click inside the 'Text' field
- 3Paste your message template using {{}} mapped variables from previous modules
- 4Map {{total_completed}} from the Set Variable module output
- 5Map the aggregated task list from the Text Aggregator output
- 6Click 'OK'
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Canvas > Run once (bottom toolbar)
Run a test and verify the Slack output
Click 'Run once' in the bottom toolbar to trigger a manual test run. Watch the execution flow animate across the canvas — each module turns green when it succeeds and shows a bubble with the record count processed. Open your Slack channel and confirm the message arrived with the correct task count and project list. If the task list is empty, your Todoist date range filter may be returning no results — check Step 5's formula output in the Todoist module's execution log.
- 1Click 'Run once' in the bottom toolbar
- 2Watch each module's status bubble for green checkmarks
- 3Open your Slack channel to verify the message appeared
- 4Click any module bubble on the canvas to inspect the exact data it processed
- 5Check the Todoist module bubble to confirm tasks were returned
Canvas > bottom-left toggle > ON | Scenario Settings > Max stored executions
Activate the scenario
Once the test run looks correct, toggle the scenario from OFF to ON using the switch in the bottom left corner of the canvas. Make will now run this scenario automatically every Friday at the time you configured in Step 3. The scenario log (accessible from the Scenarios dashboard under 'History') records every run so you can audit past reports. Set the number of stored execution logs to at least 30 under Scenario Settings so you have a month of history.
- 1Click the toggle switch in the bottom left from OFF to ON
- 2Confirm the activation dialog if prompted
- 3Click 'Scenario Settings' (gear icon near the toggle)
- 4Set 'Max stored executions' to 30
- 5Click 'Save' and close settings
Paste this formula block into Make's Text Aggregator 'Text' field to group tasks by project with a count per project and a visual separator between groups. The if() logic checks whether the current project name matches the previous one and only prints the project header when it changes — creating a cleaner grouped layout without needing an extra Iterator module.
JavaScript — Custom Function// Make Formula — Text Aggregator 'Text' field▸ Show code
// Make Formula — Text Aggregator 'Text' field // Groups completed tasks by project name with per-project headers // Paste this into the Text field of the Text Aggregator module
... expand to see full code
// Make Formula — Text Aggregator 'Text' field
// Groups completed tasks by project name with per-project headers
// Paste this into the Text field of the Text Aggregator module
if(
{{project_name}} != {{previousProjectName}};
"\n📁 " + {{project_name}} + "\n" + " • " + {{content}};
" • " + {{content}}
)
// In the Slack message Text field, wrap the aggregated output:
// *Weekly Progress Report — " + formatDate(now; "MMM D, YYYY") + "*
// \n✅ Total tasks completed: " + {{totalCount}} + "\n"
// + {{aggregatedText}}
// To add a per-project count, use a separate Numeric Aggregator
// before the Text Aggregator, grouped by project_id:
// Set 'Group by' to: {{project_id}}
// Set 'Value' to: 1 (counts one per task)
// Then map {{sum}} into the project header line aboveScaling Beyond 200+ completed tasks per week+ Records
If your volume exceeds 200+ completed tasks per week records, apply these adjustments.
Raise the Todoist result limit
Todoist's completed tasks endpoint returns 30 results by default. If your team completes more than 30 tasks per week, set the 'Limit' field in the Search Tasks module to 200. Make will paginate automatically up to this limit, but each page of results costs additional operations against your plan.
Switch to project-level aggregation to keep Slack messages readable
At 100+ tasks, listing every individual task in Slack becomes unreadable. Use Make's Array Aggregator grouped by project_id to produce per-project counts instead of task titles. Post only the count summary to Slack and link to a Google Sheet for the full task list.
Monitor Make operation consumption on high-task weeks
Each task bundle processed through the aggregator chain counts as one operation. A week with 150 completed tasks costs roughly 150 operations plus overhead — about 200 operations total per run. On Make's Core plan (10,000 ops/month), that's 800 ops/month for this scenario, leaving plenty of headroom. On the free plan (1,000 ops/month), four runs of 150 tasks will consume 80% of your monthly quota.
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 needs a scheduled report with real formatting logic — grouping tasks by project, calculating counts, building a multi-section Slack message. Make's visual canvas makes it straightforward to chain a Schedule trigger → Todoist fetch → Text Aggregator → Slack post without writing code. The date formula support (formatDate, addDays) inside module fields handles the dynamic 7-day window cleanly. The one scenario where you'd skip Make: if your team already lives in Zapier and only needs a basic task count with no grouping logic — Zapier's Formatter handles simple number aggregation with less setup friction.
The cost math is simple. Each weekly run processes roughly 50-200 operations depending on how many tasks your team completes. At 100 tasks per week, that's ~120 operations per run, ~480 operations per month. Make's free tier gives you 1,000 operations/month — enough to run this for free if you're under 200 tasks/week. The Core plan ($9/month) gives 10,000 operations, which handles teams completing up to 2,000 tasks/week before you'd need to think about plan limits. Zapier's equivalent would run the same scenario on the Starter plan ($19.99/month), and you'd hit Zap step limits faster because Zapier counts each task bundle as a separate Zap run.
Zapier has one advantage here: its Formatter step handles basic aggregation with zero configuration — no Text Aggregator setup required. But Zapier can't group tasks by project without Code by Zapier, which requires JavaScript knowledge. n8n does grouping natively with its Item Lists node and gives you full JavaScript in Function nodes for custom formatting — if your team has a developer, n8n produces cleaner output for complex reports. Power Automate integrates with Microsoft Teams instead of Slack, making it the wrong tool for this stack entirely. Pipedream lets you write the entire fetch-aggregate-post logic in a single async JavaScript function, which is faster to build for developers but offers no visual debugging. Make wins here because the visual canvas lets non-developers debug exactly where data transforms and the date formula support is genuinely powerful for scheduled reporting.
Three things you'll hit after setup. First, Todoist's completed task API is gated behind the Pro plan — this isn't obvious until your scenario silently returns 0 results on the free tier. Second, the Text Aggregator flattens everything into one string with no built-in grouping; if you want tasks sorted by project you need a separate aggregation step before it, which most tutorials skip. Third, Make's schedule trigger drifts by a few minutes over time — your 5pm Friday report might arrive at 5:03pm one week and 5:07pm the next. This is harmless for a status report but worth knowing so leadership doesn't think the automation is broken.
Ideas for what to build next
- →Add a per-project breakdown with task counts — Use Make's Numeric Aggregator grouped by project_id to calculate how many tasks each project completed, then display those counts as a ranked list in the Slack message — shows leadership which teams are shipping the most.
- →Route different project summaries to different Slack channels — Add a Router module after the Todoist fetch to split tasks by project and post engineering tasks to #eng-updates and marketing tasks to #marketing-updates, rather than dumping everything into one channel.
- →Add a Google Sheets logging step to track trends over time — Append each week's total task count and project breakdown to a Google Sheet row after the Slack post — after 8 weeks you'll have a trend line showing whether your team's output is growing or slipping.
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 Assign Todoist Tasks from Slack Mentions with Pipedream
~15 min setup
How to Assign Todoist Tasks from Slack Mentions with Power Automate
~15 min setup