

How to Automate Daily Standups from Basecamp to Slack with Make
Pull completed tasks, upcoming deadlines, and overdue items from Basecamp projects and post formatted status reports to team Slack channels daily.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Remote teams using Basecamp for project management who need daily status visibility without manual reporting
Not ideal for
Teams wanting real-time task notifications — use webhook triggers for instant updates instead
Sync type
scheduledUse case type
reportingReal-World Example
A 12-person marketing agency uses this to post daily project summaries to #standup every morning at 8 AM. The report shows tasks completed yesterday, deadlines in the next 3 days, and overdue items across 8 active campaigns. Before automation, the project manager spent 20 minutes each morning manually checking Basecamp and typing 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 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 Title | content | |
| Project Name | bucket.name | |
6 optional fields▸ show
| Assignee | assignee.name |
| Due Date | due_on |
| Completed Date | completed_on |
| Task Notes | notes |
| Task Position | position |
| Task URL | app_url |
Step-by-Step Setup
Scenarios > Create a new scenario > Schedule
Create New Scenario
Navigate to your Make dashboard and create a new scenario. Choose the Schedule trigger to run daily reports at a consistent time. Set the interval to Daily and pick your preferred time — most teams run this at 8 AM local time. The Schedule module will be your starting point for the entire workflow.
- 1Click 'Create a new scenario' from the dashboard
- 2Search for 'Schedule' in the app list
- 3Select 'Schedule' and choose 'Every day' interval
- 4Set time to 8:00 AM or your team's standup time
Modules > Add > Basecamp > List To-dos
Connect Basecamp Account
Add a Basecamp module after your Schedule trigger. Choose 'List To-dos' to pull task data from your projects. You'll need to authenticate with your Basecamp account — Make will redirect you to Basecamp's authorization page. Select the Basecamp account that contains your project data.
- 1Click the + button after the Schedule module
- 2Search for 'Basecamp' and select it
- 3Choose 'List To-dos' from the actions list
- 4Click 'Add' next to Connection and authorize your Basecamp account
Basecamp > List To-dos > Project Selection
Configure Project Selection
Select which Basecamp projects to include in your daily reports. You can choose specific projects or pull from all accessible projects. For most teams, selecting 2-5 active projects works better than including archived or inactive ones. The module will fetch to-dos from all selected projects in a single operation.
- 1In the Project field, choose 'Select from list'
- 2Check the boxes for active projects you want in daily reports
- 3Leave 'Completed' field empty to get both complete and incomplete tasks
- 4Set 'Limit' to 50 to avoid overwhelming reports
Modules > Add > Tools > Filter
Add Date Filtering
Add a Filter module to only process tasks relevant to your standup timeframe. Set up three conditions: completed tasks from yesterday, upcoming tasks due within 3 days, and overdue tasks. This prevents your Slack report from including old or irrelevant task data. The filter uses Basecamp's due_on and completed_on fields.
- 1Click + after the Basecamp module and select 'Filter'
- 2Add condition: completed_on equals {{yesterday}}
- 3Add OR condition: due_on is between {{today}} and {{addDays(today; 3)}}
- 4Add OR condition: due_on is less than {{today}} AND completed_on is empty
Modules > Add > Tools > Array aggregator
Group Tasks by Status
Add an Array aggregator to organize filtered tasks into categories. This groups your tasks into Completed Yesterday, Due Soon, and Overdue sections for the Slack message. Configure three separate aggregations based on the date conditions from your filter. Each group will become a section in your final report.
- 1Add Array aggregator after the Filter
- 2Set Source Module to the Basecamp List To-dos
- 3Choose 'Group by' and select a formula for task status
- 4Use if(completed_on; 'Completed'; if(due_on < today; 'Overdue'; 'Due Soon'))
Modules > Add > Tools > Set Variable
Format Slack Message
Add a Set Variable module to build your formatted Slack message. Use Slack's markdown formatting to create clean sections with bullet points and task details. Include project names, task titles, assignees, and due dates. The message should be scannable and highlight the most important information for standup discussions.
- 1Add Set Variable after the Array aggregator
- 2Name the variable 'standupMessage'
- 3Build message with markdown: *Completed Yesterday:* followed by task list
- 4Add sections for *Due This Week:* and *Overdue:* with relevant tasks
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Modules > Add > Slack > Send a Message
Connect Slack Account
Add a Slack module and choose 'Send a Message' action. Authenticate with your Slack workspace — you'll need permissions to post in your target channel. Make will request access to send messages on your behalf. Choose the connection that matches the workspace where your team's standup channel exists.
- 1Click + and search for Slack
- 2Select 'Send a Message' from the actions
- 3Click 'Add' next to Connection
- 4Authorize Make to access your Slack workspace
Slack > Send a Message > Message Configuration
Configure Slack Message Settings
Select your standup channel and configure the message format. Set the channel to your team's daily standup channel — usually something like #standup or #daily-updates. Use the formatted message variable from your Set Variable module. Enable 'Parse' to render the markdown formatting properly in Slack.
- 1Select your standup channel from the Channel dropdown
- 2In Text field, insert the standupMessage variable
- 3Set 'Parse' to 'mrkdwn' for markdown formatting
- 4Leave Username empty to post as the authenticated user
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Scenario > Run once
Test the Scenario
Run your scenario manually to verify the complete workflow. Check that tasks are filtered correctly, grouped properly, and the Slack message appears in your target channel with good formatting. Look for any missing tasks, broken formatting, or permission errors. The test run processes real data from your Basecamp projects.
- 1Click 'Run once' at the bottom of the scenario
- 2Watch each module execute and check for errors
- 3Verify the Slack message appears in your target channel
- 4Check that task counts and details look accurate
Scenario > Scheduling > On
Activate Daily Schedule
Turn on the scenario scheduling to run automatically every day. Verify the schedule timing matches your team's needs — most teams prefer reports before their actual standup meeting starts. The scenario will now run daily without manual intervention, pulling fresh Basecamp data and posting updated reports to Slack.
- 1Click the 'Scheduling' toggle to ON
- 2Verify the daily time setting is correct
- 3Check that the scenario shows 'Active' status
- 4Save the scenario with a clear name like 'Daily Basecamp Standup'
Scaling Beyond 50+ tasks per day across all projects+ Records
If your volume exceeds 50+ tasks per day across all projects records, apply these adjustments.
Batch by Project
Split processing into separate scenarios per major project to avoid timeout issues. Run them with 5-minute staggered start times.
Limit Task History
Only pull tasks modified in the last 7 days rather than all project tasks. Use Basecamp's 'since' parameter to reduce API calls.
Cache Project Data
Store project names and IDs in a data store to avoid repeated project lookup calls. Update the cache weekly rather than daily.
Paginate Large Results
Set reasonable limits (25-50 tasks) and add pagination logic if your projects have hundreds of active tasks.
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 you need flexible task filtering and custom message formatting. Make handles date comparisons and conditional logic better than Zapier's basic filters. The Array aggregator lets you group tasks by status without writing code. Skip Make if you just want simple task notifications — Zapier's Basecamp trigger fires faster for single-task updates.
This runs 8-12 operations daily depending on your task volume. At 250 tasks/month across projects, you'll use roughly 300 operations monthly. That's free on Make's plan. Zapier charges $20/month at this volume since each task check counts as a separate zap run. Make saves you $240 annually here.
Zapier's Basecamp integration updates faster with webhooks for real-time notifications. Power Automate has better date formatting functions and handles timezones more reliably. n8n gives you full JavaScript control for complex task logic and custom filtering. Pipedream offers superior error handling and retry logic for API failures. But Make's visual Array aggregator and message builder beat all of them for this daily digest format.
You'll hit Basecamp's nested data structure issues — assignee and project info sits in sub-objects that Make sometimes can't map automatically. Task notes get truncated weirdly if they contain special characters. The biggest gotcha: Basecamp's completed_on field stays null for incomplete tasks forever, but due_on can change randomly when people reschedule, breaking your overdue logic unexpectedly.
Ideas for what to build next
- →Add Weekend Skip Logic — Modify schedule to skip weekends and holidays when your team doesn't work.
- →Create Team Member Summaries — Send individual task summaries to team members via DM before the group standup.
- →Include Time Tracking Data — Pull Basecamp time entries to show hours worked alongside completed tasks.
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