Beginner~12 min setupCommunication & Project ManagementVerified April 2026
Slack logo
Asana logo

How to Automate Daily Standups from Asana to Slack with Make

Every morning at a scheduled time, Make pulls completed Asana tasks and upcoming deadlines from the past 24 hours, formats them into a standup report, and posts it 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–25 people running async standups who want a daily Slack digest without manually compiling Asana task updates each morning.

Not ideal for

Teams needing real-time per-task Slack alerts as work happens — use a webhook-based trigger instead of a scheduled scenario for that.

Sync type

scheduled

Use case type

reporting

Real-World Example

💡

A 12-person product team at a B2B SaaS company runs this every weekday at 8:45 AM. Their #standup Slack channel gets a formatted message listing every task completed yesterday and every task due today, pulled directly from their Asana project. Before this, the team lead spent 10–15 minutes each morning manually copy-pasting task names from Asana into Slack — and still missed items assigned to other members.

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

Asana account with access to the target project and tasks:read + tasks:search API scopes granted to the Make connection
Slack workspace admin or permission to install apps, with chat:write and channels:read OAuth scopes
Make account on at least the Free plan (Free plan allows 1,000 operations/month — verify your monthly task volume fits)
Slack bot invited to the target channel — required for both public and private channels before the scenario can post

Optional

Asana tasks in the target project must have assignee and due date fields populated for the standup report to show meaningful data

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Task Namename
Assignee Nameassignee.name
Completed Atcompleted_at
Due Datedue_on
Completion Statuscompleted
3 optional fields▸ show
Task Permalink URLpermalink_url
Project Nameprojects[].name
Task Notes / Descriptionnotes

Step-by-Step Setup

1

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 scenario canvas with an empty circle in the middle. This is your trigger slot. Click the circle to open the module picker. You're building a scheduled scenario, so the first module will be a scheduling trigger, not an app trigger.

  1. 1Log into make.com and go to the Scenarios tab in the left sidebar
  2. 2Click the blue 'Create a new scenario' button in the top-right
  3. 3Click the empty circle in the center of the canvas to open the module picker
  4. 4Type 'Schedule' in the search bar and select the 'Schedule' module
What you should see: You should see the Schedule module added as the first node on the canvas with a clock icon.
Common mistake — Do not select 'Watch Events' from Asana as your trigger — that fires on every task update in real time and will spam your Slack channel. Use the Schedule module instead.
2

Scenario canvas > Schedule module > Settings panel

Configure the schedule trigger

Click the Schedule module to open its settings panel on the right. Set the interval to 'Days' and enter 1. Set the time to 08:45 or whatever time your team wants the standup posted. Make runs scenarios in UTC by default, so adjust the time accordingly — if your team is in ET (UTC-5), enter 13:45 UTC to hit 8:45 AM ET. Set it to run Monday through Friday only by enabling the 'Days of week' filter.

  1. 1Click the Schedule module on the canvas to open its configuration panel
  2. 2Set 'Run scenario' to 'Every day'
  3. 3Enter your target time converted to UTC in the time field
  4. 4Toggle 'Days of week' and uncheck Saturday and Sunday
What you should see: The Schedule module card should show your configured time and frequency, e.g. 'Every day at 13:45 UTC, Mon–Fri'.
Common mistake — Make does not automatically adjust for daylight saving time. When clocks change, your 8:45 AM post will shift by one hour. You'll need to manually update the UTC time twice a year.
Make
+
click +
search apps
Slack
SL
Slack
Configure the schedule trigger
Slack
SL
module added
3

Scenario canvas > + > Asana > Search Tasks

Connect Asana and search for completed tasks

Click the '+' icon to the right of the Schedule module to add the next module. Search for 'Asana' and select 'Search Tasks'. This module lets you query Asana for tasks matching specific criteria — you'll filter by project and by completion date. Click 'Add' next to the Connection field and authenticate with your Asana account using OAuth. Make will open an Asana authorization popup.

  1. 1Click the '+' icon to the right of the Schedule module
  2. 2Type 'Asana' in the module search bar and select it
  3. 3Choose 'Search Tasks' from the action list
  4. 4Click 'Add' next to Connection and authorize via the Asana OAuth popup
  5. 5Select your Workspace from the dropdown after authentication
What you should see: You should see a green checkmark next to your Asana connection name and a populated Workspace dropdown showing your Asana organization.
4

Search Tasks module > Filters panel

Filter for tasks completed in the last 24 hours

In the Search Tasks module settings, set the Project field to the Asana project your team uses. Under 'Completed Since', use Make's date formula to dynamically calculate yesterday's date: enter {{formatDate(addDays(now; -1); 'YYYY-MM-DD')}}. This tells Asana to return only tasks marked complete after that timestamp. Set the Maximum number of returned results to 50 — enough for any team's daily output without hitting API limits.

  1. 1Select your target Asana project from the Project dropdown
  2. 2Click the 'Completed Since' field and switch to formula mode by clicking the formula icon
  3. 3Paste: {{formatDate(addDays(now; -1); 'YYYY-MM-DD')}}
  4. 4Set 'Completed' to 'Yes' to exclude open tasks
  5. 5Set 'Maximum number of returned results' to 50
What you should see: When you click 'Run once' to test, the module should return a list of tasks completed in the last 24 hours with fields including name, assignee, completed_at, and permalink_url.
Common mistake — Asana's Search Tasks endpoint requires the workspace to have fewer than 100,000 tasks for filtering to work reliably. On very large Asana workspaces, use a specific project ID rather than workspace-wide search.
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Asana
AS
notified
5

Scenario canvas > + > Asana > Search Tasks (second instance)

Add a second Asana module for upcoming due tasks

Click '+' again after the first Asana module to add another 'Search Tasks' module using the same Asana connection. This time, you're pulling tasks due today — not completed ones. Set 'Completed' to 'No' and use the Due Date filter. Set 'Due On' to {{formatDate(now; 'YYYY-MM-DD')}} to match today's date exactly. This gives you the 'what's coming up today' section of the standup report.

  1. 1Click the '+' icon after the first Asana Search Tasks module
  2. 2Select Asana > Search Tasks again
  3. 3Reuse the same Asana connection from the dropdown
  4. 4Set 'Completed' to 'No'
  5. 5Set 'Due On' field to {{formatDate(now; 'YYYY-MM-DD')}}
What you should see: A second Asana module appears on the canvas. Running it returns tasks that are open and due today, showing fields like name, assignee, and due_on.
Common mistake — If your team uses Asana due dates inconsistently — some tasks have no due date, others have subtask-level dates — this module may return fewer results than expected. Coach your team to always set top-level task due dates.
6

Scenario canvas > + > Tools > Text Aggregator

Add a Text Aggregator to format completed tasks

Click '+' after the first Search Tasks module and search for 'Text Aggregator'. This module concatenates every task returned from a bundle into a single block of text — exactly what you need to build the standup message body. Set the Source Module to the first Asana Search Tasks module. In the Text field, build your row format: ✅ {{name}} — assigned to {{assignee.name}} — <{{permalink_url}}|View in Asana>. Each task will become one line in the final Slack message.

  1. 1Click '+' after the first Asana Search Tasks module
  2. 2Search for 'Text Aggregator' under Tools
  3. 3Set 'Source Module' to the first Asana Search Tasks module
  4. 4In the Text field, enter: ✅ {{name}} — {{assignee.name}} — <{{permalink_url}}|View in Asana>
  5. 5Set the Row Separator to 'New Line'
What you should see: After running once, the Text Aggregator outputs a single text bundle that contains one line per completed task, with emoji, task name, assignee, and a clickable Asana link.
Common mistake — If no tasks were completed in the last 24 hours, the Text Aggregator outputs an empty string. Add a fallback text in the next step using Make's if() formula to handle this gracefully — otherwise your Slack message will have a blank section.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
7

Scenario canvas > + > Tools > Text Aggregator (second instance)

Add a second Text Aggregator for due-today tasks

Repeat the process from Step 6 for the second Asana module. Click '+' after the second Search Tasks module, add another Text Aggregator, and set its Source Module to the second Asana Search Tasks module. Format each row as: 📅 {{name}} — {{assignee.name}} — due today. This creates the second block of the standup message covering what's on deck for the day.

  1. 1Click '+' after the second Asana Search Tasks module
  2. 2Add another Text Aggregator from Tools
  3. 3Set 'Source Module' to the second Asana Search Tasks module
  4. 4In the Text field enter: 📅 {{name}} — {{assignee.name}} — due today
  5. 5Set Row Separator to 'New Line'
What you should see: You now have two Text Aggregator modules on the canvas, each producing a formatted text block — one for completed tasks, one for due-today tasks.
8

Scenario canvas > + > Slack > Create a Message

Connect Slack and configure the message module

Click '+' after your second Text Aggregator and add the Slack module 'Create a Message'. Authenticate with your Slack workspace using OAuth — Make will ask for bot token scopes including chat:write. Select the target channel from the Channel dropdown (e.g. #standup or #engineering-standup). In the Text field, build the full standup message using output from both Text Aggregators and static formatting.

  1. 1Click '+' after the second Text Aggregator
  2. 2Search for 'Slack' and select 'Create a Message'
  3. 3Click 'Add' next to Connection and authorize your Slack workspace via OAuth
  4. 4Select your target channel from the Channel dropdown
  5. 5Build the message body in the Text field using both Text Aggregator outputs
What you should see: The Slack module shows your channel name and a preview of the message template. The Connection field displays a green checkmark with your Slack workspace name.
Common mistake — Make's Slack integration requires the bot to be manually invited to private channels. If your #standup channel is private, type /invite @Make in that channel before testing or the message will fail with a 'channel_not_found' error.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
9

Slack > Create a Message > Text field

Build the full standup message body

In the Slack 'Create a Message' Text field, construct the full report using a combination of static text and dynamic variables from both Text Aggregators. Use Make's if() formula to handle the case where either section is empty. The message should have a header, a completed tasks section, and a due-today section. Use Slack's mrkdwn formatting — *bold* for headers, line breaks between sections.

  1. 1Click into the Text field of the Slack module
  2. 2Type the header: *📋 Daily Standup — {{formatDate(now; 'MMMM D, YYYY')}}*
  3. 3Add a line break, then type: *✅ Completed Yesterday:*
  4. 4Map the first Text Aggregator output using {{bundle1.text}} or the variable picker
  5. 5Add another section: *📅 Due Today:* followed by the second Text Aggregator output
  6. 6Wrap each section in: {{if(isEmpty(aggregator.text); '_Nothing to report_'; aggregator.text)}}
What you should see: The Text field shows a multi-section message template. When you click 'Run once', Slack receives and displays a formatted standup message with both sections populated from real Asana data.
Common mistake — Slack's mrkdwn does not render inside the Make preview panel — what looks like broken formatting in Make's UI will render correctly in Slack. Don't adjust your formatting based on the Make preview.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
10

Slack module > Right-click > Add error handler

Add an error handler for failed runs

Right-click on the Slack module and select 'Add error handler'. Choose 'Ignore' if you want silent failures, or 'Rollback' if you want Make to retry. For a standup bot, add a separate Slack 'Create a Message' module inside the error handler that posts to a #make-alerts channel with the error message. This way, if Asana's API is down or the Slack token expires, someone gets notified immediately instead of the standup silently not posting.

  1. 1Right-click the Slack 'Create a Message' module on the canvas
  2. 2Select 'Add error handler' from the context menu
  3. 3Choose 'Break' as the error handler type
  4. 4Click '+' inside the error handler path and add another Slack 'Create a Message' module
  5. 5Set the channel to #make-alerts and the message to: ⚠️ Standup bot failed: {{error.message}}
What you should see: A red error handler branch appears below the Slack module on the canvas. When triggered, it posts an alert to your admin channel with the specific error message.
Make
▶ Run once
executed
Slack
Asana
Asana
🔔 notification
received
11

Scenario canvas > bottom-left toggle > ON

Activate the scenario and verify the first run

Toggle the scenario from OFF to ON using the switch in the bottom-left of the canvas. Make will confirm the next scheduled run time. Click 'Run once' immediately to trigger a manual test run and verify the full pipeline end-to-end. Check your Slack channel for the standup message. Then open the Scenario History tab to confirm all modules completed without errors — each should show a green bubble with a count of processed bundles.

  1. 1Click the toggle in the bottom-left corner to switch from OFF to ON
  2. 2Click 'Run once' in the toolbar to trigger an immediate test
  3. 3Open your target Slack channel and confirm the standup message arrived
  4. 4Click 'History' in the left sidebar to review the run log
  5. 5Verify each module shows a green bundle count and no red error icons
What you should see: Your Slack channel shows a correctly formatted standup message with real Asana task data. The History tab shows all modules with green indicators and the next scheduled run timestamp is visible.
Common mistake — If 'Run once' shows bundles processed but no Slack message appears, check that your Slack bot has been invited to the target channel. This is the most common final-step failure and doesn't throw an obvious error in Make's logs.

Paste this into a Make 'Set Variable' module placed between the Text Aggregators and the Slack module. It truncates long task names at 60 characters, strips newlines from task notes, and adds a fallback string when either section is empty — preventing blank standup sections from posting to Slack.

JavaScript — Custom Function{{if(
▸ Show code
{{if(
  isEmpty(1.text);
  '_No tasks completed in the last 24 hours._';

... expand to see full code

{{if(
  isEmpty(1.text);
  '_No tasks completed in the last 24 hours._';
  1.text
)}}

{{if(
  isEmpty(2.text);
  '_No tasks due today._';
  2.text
)}}

// Truncate task name to 60 chars in the Text Aggregator row:
{{if(
  length(name) > 60;
  substring(name; 0; 60) + '...';
  name
)}}

// Strip line breaks from task notes before including in message:
{{replace(notes; '\n'; ' ')}}

// Format completed_at to human-readable local time:
{{formatDate(completed_at; 'h:mm A'; 'America/New_York')}}

Scaling Beyond Teams with 30+ tasks completed per day or 5+ projects feeding into one standup+ Records

If your volume exceeds Teams with 30+ tasks completed per day or 5+ projects feeding into one standup records, apply these adjustments.

1

Watch your operation budget

Each Asana task returned from Search Tasks costs at least 2 operations — one for the search result and one if you add a Get Task module to expand the assignee. At 50 tasks/day across two sections, a single run costs 100–150 operations. Make's Free plan gives you 1,000 operations/month total, which is exhausted in under 7 business days at this volume. The Core plan at $9/month covers 10,000 operations.

2

Use project-specific queries, not workspace-wide

Asana's Search Tasks API slows significantly on large workspaces. Always filter by a specific project GID rather than searching the full workspace. In Make, this means selecting a project from the dropdown rather than leaving it blank. This also prevents surfacing tasks from unrelated projects.

3

Cap results and add pagination awareness

Make's Asana Search Tasks module returns up to 100 results per call but doesn't automatically paginate. If your team closes more than 100 tasks in a day, you'll silently miss some. For teams that large, add a second Search Tasks module with an offset, or switch to querying by section or tag to narrow scope.

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 Make for this workflow

Use Make for this if your team wants a visual scenario they can hand off to a non-developer to maintain. The canvas makes it obvious which module feeds which, and the Text Aggregator approach for building multi-section Slack messages is genuinely clean — no code required. Make also handles the scheduled trigger natively without needing a separate cron service, which matters when you're building something that runs every weekday at the same time. The one scenario where you'd skip Make: if your team is already on Zapier and only needs a single-section standup message with no conditional formatting — Zapier's 'Schedule by Zapier' trigger plus a Formatter step gets it done in 5 modules and no formula syntax.

Cost

The math here is straightforward. Each scenario run uses roughly 5 modules plus 2 operations per Asana task returned. A team completing 15 tasks/day across two sections generates about 40 operations per run, 200 per week, 800–900 per month. That fits inside Make's Free plan (1,000 ops/month) with almost no margin. A team completing 30+ tasks/day needs the Core plan at $9/month for 10,000 operations. Zapier charges per task, not per operation — at 30 tasks/day, you'd consume 600 Zap tasks/month, which hits their $19.99/month Starter plan. Make is cheaper at that volume by about $11/month.

Tradeoffs

Zapier's Schedule trigger is slightly simpler to configure for non-technical users — no UTC conversion UI, just a local time picker. n8n lets you write a single JavaScript Function node that handles both Asana queries, all formatting, and the Slack post in one block — faster to build if you code, easier to version-control. Power Automate has a native Asana connector but it's community-built and breaks on API updates more often than Make's maintained connector. Pipedream's Asana source can trigger on task completion in real time without polling, which is actually better architecture for standups that care about timing. Make is still the right call here because the visual router makes it easy for the team lead — not just the person who built it — to modify the message format or add a new project without breaking anything.

Three things you'll hit after setup. First: Asana's assignee field doesn't expand by default in Search Tasks — you get a GID, not a name. You need a separate Get Task module to resolve it, which doubles your operation count. Second: Slack's mrkdwn formatting looks broken inside Make's text field preview — asterisks appear as literal characters, not bold. It renders correctly in Slack; ignore the Make preview. Third: Make's Schedule trigger doesn't account for daylight saving time automatically. When clocks change in March and November, your standup will post an hour off. Set a calendar reminder to update the UTC time manually on those two days each year.

Ideas for what to build next

  • Add a per-person breakdownUse Make's Array Aggregator to group completed tasks by assignee before posting. Instead of one flat list, each team member gets their own section in the Slack message — closer to how a real standup runs.
  • Post a weekly summary on FridaysClone this scenario, change the Schedule trigger to run only on Fridays, and adjust the Asana date filter to pull the last 7 days instead of 24 hours. Post it to a separate #weekly-recap channel for leadership visibility.
  • Let teammates reply with blockers in SlackAdd a second scenario that watches for replies in the #standup thread using Slack's 'Watch Replies' trigger, then creates a new Asana task tagged as a blocker. This closes the loop between the standup report and actual task tracking.

Related guides

Was this guide helpful?
Slack + Asana overviewMake profile →