

How to Automate Daily Standups from Asana to Slack with Zapier
Every morning, Zapier pulls completed Asana tasks and upcoming deadlines from the previous 24 hours and posts a formatted standup digest to a designated Slack channel.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Teams of 5–20 who run Asana for task tracking and want standup updates posted to Slack automatically each morning without anyone writing a summary manually.
Not ideal for
Teams needing real-time task updates throughout the day — use a webhook-based Asana trigger in Make or n8n instead.
Sync type
scheduledUse case type
reportingReal-World Example
A 12-person product team at a B2B SaaS company uses this to post a 9 AM standup digest to #product-standup every weekday. Before automation, the team lead spent 10–15 minutes each morning pulling completed tasks from Asana and writing a Slack summary by hand. Now the digest appears at 9 AM sharp with completed tasks, overdue items, and tasks due that day — and the team lead spends that time in the actual standup instead.
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
Before You Start
Make sure you have everything ready.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Completed Since Date | ||
| Task Name (Completed) | ||
| Task Name (Due Today) | ||
| Task Name (Overdue) | ||
| Slack Channel ID | ||
| Standup Message Text | ||
4 optional fields▸ show
| Task Assignee (Completed) | |
| Task Assignee (Due Today) | |
| Due Date (Overdue Tasks) | |
| Bot Name |
Step-by-Step Setup
Zapier Dashboard > Create Zap > Trigger > Schedule by Zapier
Create a new Zap and set the schedule trigger
In Zapier, click 'Create Zap' from the dashboard. You'll land on the trigger setup screen. Search for 'Schedule by Zapier' in the trigger app search box — it's a native Zapier app, no connection required. This trigger fires the Zap at a fixed time each day, which is what kicks off the Asana task fetch.
- 1Click the orange 'Create Zap' button in the top left of the Zapier dashboard
- 2Click inside the 'Trigger' box on the Zap editor canvas
- 3Type 'Schedule' in the app search field
- 4Select 'Schedule by Zapier' from the results
- 5Choose 'Every Day' as the trigger event
Zap Editor > Trigger > Configure > Schedule Settings
Configure the schedule to fire on weekdays at standup time
In the trigger configuration panel, set the time field to your target morning hour in UTC. Check the 'Days of the Week' checkboxes and select Monday through Friday only — leave Saturday and Sunday unchecked so the Zap doesn't post on weekends. Click 'Continue' when done.
- 1Set the 'Time of Day' field to your target UTC hour (e.g., 14:00:00 for 9 AM EST)
- 2Under 'Day of the Week', check Monday, Tuesday, Wednesday, Thursday, Friday
- 3Leave Saturday and Sunday unchecked
- 4Click 'Continue'
Zap Editor > Action 1 > App > Asana > Find Tasks
Connect Asana and fetch completed tasks
Add a new action step after the schedule trigger. Search for 'Asana' and choose the action event 'Find Tasks'. This action queries Asana's API for tasks matching criteria you define — in this case, tasks completed in the last 24 hours within a specific project. You'll need to connect your Asana account here if you haven't already; Zapier will open an OAuth window.
- 1Click the '+' button below the trigger step to add an action
- 2Search for 'Asana' in the app search box
- 3Select 'Find Tasks' as the action event
- 4Click 'Sign in to Asana' and complete the OAuth login in the popup window
- 5Select your Asana workspace from the dropdown
Zap Editor > Action 1 > Configure > Find Tasks > Project + Completed Since
Filter Asana tasks to completed items from the last 24 hours
In the Asana 'Find Tasks' configuration, set the Project field to the project you want to report on. Set 'Completed Since' using Zapier's date formatting — type the value as a dynamic date expression. Zapier doesn't have a native 'yesterday' variable, so you'll need to use a Formatter step before this to calculate the timestamp (covered in Step 5). For now, leave 'Completed Since' blank and continue.
- 1Select your target Asana project from the 'Project' dropdown
- 2Leave 'Completed Since' blank for now — you'll map a formatted date from Step 5
- 3Set 'Completed' to 'True' to filter for completed tasks only
- 4Enable the 'Find All' toggle so the step returns multiple tasks
- 5Click 'Continue' to proceed
Zap Editor > Add Step > Formatter by Zapier > Date/Time > Format
Add a Formatter step to calculate yesterday's date
Insert a Zapier Formatter step before the Asana 'Find Tasks' action. This is how you generate the 'completed since yesterday' timestamp that Asana needs. Use Formatter's 'Date/Time' transform with 'Format' operation. Set the input date to the Schedule trigger's timestamp, then subtract 1 day to get yesterday's date in ISO 8601 format. Move this step above the Asana action in the editor by dragging it.
- 1Click '+' to add a new step and place it between the Schedule trigger and the Asana action
- 2Search for 'Formatter by Zapier' and select it
- 3Choose 'Date / Time' as the transform type
- 4Set 'Transform' to 'Format'
- 5In the 'Input' field, select the Schedule trigger's date/time output
- 6Set 'To Format' to 'YYYY-MM-DDTHH:mm:ssZ'
- 7Set 'Modify' to '-1 days' to subtract one day
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Zap Editor > Action 3 > App > Asana > Find Tasks
Add a second Asana action to fetch tasks due today
Add another 'Find Tasks' action in Asana to pull tasks due today — these are the upcoming deadlines your standup report needs. Use the same project. Set the 'Due On' field to today's date. Use another Formatter step (or the same one with a second output) to generate today's date in YYYY-MM-DD format. Enable 'Find All' on this action too.
- 1Click '+' to add another action step
- 2Select 'Asana' and choose 'Find Tasks' again
- 3Use the same connected Asana account and project
- 4Set 'Due On' to the date output from your Formatter step (today's date in YYYY-MM-DD)
- 5Enable the 'Find All' toggle
- 6Set 'Completed' to 'False' to exclude already-done tasks
Zap Editor > Add Step > Code by Zapier > Run JavaScript
Add a Code by Zapier step to build the standup message
Add a 'Code by Zapier' action using JavaScript. This step takes the two arrays of Asana tasks — completed tasks and tasks due today — and formats them into a single readable Slack message. Without this step, you'd have to manually stitch together data from two multi-record Asana responses, which isn't possible with Zapier's standard field mapping. Paste the code from the pro tip section below.
- 1Click '+' to add a new action step
- 2Search for 'Code by Zapier' and select it
- 3Choose 'Run JavaScript' as the action event
- 4In the 'Input Data' section, create two keys: 'completed_tasks' and 'due_tasks'
- 5Map 'completed_tasks' to the name/title output from your first Asana 'Find Tasks' step
- 6Map 'due_tasks' to the name/title output from your second Asana 'Find Tasks' step
- 7Paste the JavaScript code from the pro tip into the 'Code' field
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Paste this into the Code by Zapier 'Run JavaScript' step. It expects three input data keys — completed_tasks, due_tasks, and overdue_tasks — each as a comma-separated string from Asana's 'Find All' output. The code splits each string into an array, formats them into Slack-ready markdown sections, and outputs a single 'standup_message' string.
JavaScript — Code Step// Input data keys expected:▸ Show code
// Input data keys expected: // inputData.completed_tasks — comma-separated task names (completed yesterday) // inputData.due_tasks — comma-separated task names (due today)
... expand to see full code
// Input data keys expected:
// inputData.completed_tasks — comma-separated task names (completed yesterday)
// inputData.due_tasks — comma-separated task names (due today)
// inputData.overdue_tasks — comma-separated task names (past due, incomplete)
function formatTaskList(rawInput) {
if (!rawInput || rawInput.trim() === '') {
return '• _None_';
}
const tasks = rawInput.split(',').map(t => t.trim()).filter(t => t.length > 0);
if (tasks.length === 0) return '• _None_';
return tasks.map(t => `• ${t}`).join('\n');
}
const completed = formatTaskList(inputData.completed_tasks);
const dueToday = formatTaskList(inputData.due_tasks);
const overdue = formatTaskList(inputData.overdue_tasks);
const today = new Date().toLocaleDateString('en-US', {
weekday: 'long', month: 'long', day: 'numeric'
});
const standup_message = [
`*📋 Daily Standup — ${today}*`,
'',
'*🟢 Completed Yesterday*',
completed,
'',
'*📅 Due Today*',
dueToday,
'',
'*🔴 Overdue*',
overdue
].join('\n');
output = [{ standup_message }];channel: {{channel}}
ts: {{ts}}
Zap Editor > Final Action > App > Slack > Send Channel Message
Connect Slack and configure the channel message action
Add a Slack action and choose 'Send Channel Message' as the event. Connect your Slack workspace via OAuth — Zapier will request permission to post messages. Select the target Slack channel (e.g., #daily-standup) from the dropdown. Map the message text field to the 'standup_message' output from the Code by Zapier step.
- 1Click '+' to add the final action step
- 2Search for 'Slack' and select 'Send Channel Message'
- 3Click 'Sign in to Slack' and authorize Zapier in the OAuth popup
- 4Select your target channel from the 'Channel' dropdown (e.g., #daily-standup)
- 5In the 'Message Text' field, click the '+' icon and select the 'standup_message' output from the Code step
- 6Set 'Bot Name' to something like 'Standup Bot' so team members recognize the sender
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Zap Editor > Add Step > Asana > Find Tasks (Overdue)
Add a Slack message for the overdue tasks section
To include overdue tasks, add a third Asana 'Find Tasks' step that filters for incomplete tasks with a due date before today. Use a Formatter step to generate yesterday's date in YYYY-MM-DD format as your upper bound. Update your Code by Zapier step to accept a third input — 'overdue_tasks' — and include it in the standup message output. Re-test the Code step after updating the input data section.
- 1Insert a new Asana 'Find Tasks' action after your due-today step
- 2Set the project to the same Asana project
- 3Set 'Completed' to 'False'
- 4Set 'Due Before' to the yesterday date output from your Formatter step
- 5Enable 'Find All'
- 6Go back to the Code by Zapier step and add a new Input Data key: 'overdue_tasks'
- 7Map it to the name output of this new Asana step
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Zap Editor > Test > Run Test on Each Step
Test the full Zap end-to-end
Run a full test of the Zap by clicking 'Test' on each step in sequence. Start from the Schedule trigger and work down. When you reach the Slack step, Zapier will post a real test message to your selected channel — warn your team first or use a private test channel. Check that the Slack message shows all three sections: completed tasks, tasks due today, and overdue tasks.
- 1Click 'Test' on the Schedule trigger step — it will generate a sample timestamp
- 2Click 'Test' on each Formatter step to confirm date outputs look correct
- 3Click 'Test' on each Asana step to verify task data is returning
- 4Click 'Test' on the Code step and inspect the 'standup_message' output for formatting
- 5Click 'Test' on the Slack step and check your Slack channel for the posted message
Zap Editor > Top Right Toggle > On | Dashboard > Task History
Turn the Zap on and verify the first live run
Toggle the Zap from 'Draft' to 'On' using the switch in the top right of the editor. The next run will fire at the scheduled UTC time you set in Step 2. Check Zapier's Task History the following morning to confirm all steps ran successfully. Look for any failed steps in red — the most common failure at this stage is an empty Asana response being mishandled by the Code step.
- 1Click the toggle in the top right corner of the Zap editor to switch from 'Draft' to 'On'
- 2Confirm the status shows 'On' in green
- 3The next morning, open Zapier Dashboard > Task History
- 4Click on the most recent Zap run to inspect each step's input and output
- 5Check your Slack channel to confirm the standup message posted correctly
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 Zapier for this if your team has no developer resources and needs something running in under an hour. The Zap builder's guided interface handles the schedule trigger, Asana connections, and Slack posting without any configuration files or code environments. The one place you'd skip Zapier: if you need to query more than 2–3 Asana projects or want conditional logic based on task custom fields — Make handles Asana's API more flexibly and costs less at the same task volume.
The math: this workflow runs 8 steps per Zap execution. At 20 weekday runs per month, that's 160 tasks/month. Zapier's Starter plan ($19.99/month) includes 750 tasks — you have plenty of headroom for one team. If you run this for 3 teams with 3 separate Zaps, you're at 480 tasks/month, still within Starter. The Professional plan ($49/month) gets you 2,000 tasks/month and multi-step Zaps with filters, which you need here. Make's Core plan ($9/month) handles the same workflow for less, but requires more manual setup time.
Make handles Asana's filtering more precisely using its HTTP module, which lets you query by custom fields and section membership — Zapier's Asana action only supports the fields exposed in its UI. n8n gives you a JavaScript node with full array handling, so you skip the Code by Zapier workaround for multi-record Asana responses entirely. Power Automate has a solid Asana connector if your org is already on Microsoft 365, and its Recurrence trigger is more reliable than Zapier's scheduled trigger for exact-time firing. Pipedream lets you write the entire workflow in a single Node.js function with native Asana and Slack SDK calls, which is cleaner than chaining 8 Zapier steps. Zapier is still the right call here if speed of setup matters more than architectural elegance — you'll have it running before lunch.
Three things you'll hit after the first week: First, Asana's 'Find Tasks' in Zapier returns results sorted by creation date, not completion date, so if someone completes an old task, it may not appear in yesterday's filter window even though it should. Second, the Schedule trigger fires in a 1–5 minute window around the configured time — not exactly at 9:00 AM. Budget for this when setting the standup expectation with your team. Third, if an Asana step returns more than 25 tasks (the default API page size), Zapier silently truncates the result set. Teams with high-volume projects will miss tasks. There's no pagination option in Zapier's Asana action — that's a hard ceiling you can only work around by narrowing the project scope or switching to Make.
Ideas for what to build next
- →Add per-person standup sections — Extend the Code by Zapier step to group tasks by assignee, so each team member's completed and upcoming work is listed under their name rather than in a flat list.
- →Post to multiple project channels — Duplicate the Zap for each Asana project and point each one at a different Slack channel — e.g., #engineering-standup and #design-standup — so each team gets a filtered report with only their tasks.
- →Add a weekly summary Zap on Fridays — Create a second Zap with a 'Every Week' Schedule trigger that pulls all tasks completed during the week and posts a weekly digest to a #weekly-recap channel every Friday afternoon.
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