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

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

scheduled

Use case type

reporting

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

/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

Before You Start

Make sure you have everything ready.

Asana account with at least one project containing tasks — you need admin or member access to the project you want to report on
Slack workspace with permission to add apps — you or a Slack admin must be able to authorize third-party bot integrations
Zapier account on the Starter plan or higher — the free plan supports only 2-step Zaps and this workflow uses 6+ steps
Asana API access via your user account — Zapier uses OAuth, so your account must have read access to the tasks and projects you're querying
A dedicated Slack channel for standup output — create #daily-standup or similar before setup so you can select it during configuration

Field Mapping

Map these fields between your apps.

FieldAPI 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

1

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.

  1. 1Click the orange 'Create Zap' button in the top left of the Zapier dashboard
  2. 2Click inside the 'Trigger' box on the Zap editor canvas
  3. 3Type 'Schedule' in the app search field
  4. 4Select 'Schedule by Zapier' from the results
  5. 5Choose 'Every Day' as the trigger event
What you should see: You should see a 'Configure' panel on the right showing time and day-of-week fields for the schedule trigger.
Common mistake — Schedule by Zapier runs in UTC. If your team is in EST (UTC-5), set the trigger to 14:00 UTC to fire at 9 AM EST. Missing this means your standup posts at the wrong time.
Zapier
+
click +
search apps
Slack
SL
Slack
Create a new Zap and set the…
Slack
SL
module added
2

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.

  1. 1Set the 'Time of Day' field to your target UTC hour (e.g., 14:00:00 for 9 AM EST)
  2. 2Under 'Day of the Week', check Monday, Tuesday, Wednesday, Thursday, Friday
  3. 3Leave Saturday and Sunday unchecked
  4. 4Click 'Continue'
What you should see: The trigger summary should read something like 'Every weekday at 2:00 PM UTC'. You'll then be prompted to test the trigger.
Common mistake — Confirm your workflow timezone matches your business timezone — n8n uses the instance timezone by default. Also verify the workflow is saved and set to Active, since Schedule Triggers won't fire on inactive workflows.
3

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.

  1. 1Click the '+' button below the trigger step to add an action
  2. 2Search for 'Asana' in the app search box
  3. 3Select 'Find Tasks' as the action event
  4. 4Click 'Sign in to Asana' and complete the OAuth login in the popup window
  5. 5Select your Asana workspace from the dropdown
What you should see: You should see a green 'Connected' badge next to your Asana account name, and the configuration panel should show project and filter fields.
Common mistake — Zapier's 'Find Tasks' action returns only the first matching task by default, not a list. To get multiple tasks, you must enable 'Find All' — look for the toggle labeled 'Should this step find all matching records?' and switch it on. Without this, you'll only ever see one completed task in your standup.
4

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.

  1. 1Select your target Asana project from the 'Project' dropdown
  2. 2Leave 'Completed Since' blank for now — you'll map a formatted date from Step 5
  3. 3Set 'Completed' to 'True' to filter for completed tasks only
  4. 4Enable the 'Find All' toggle so the step returns multiple tasks
  5. 5Click 'Continue' to proceed
What you should see: The step should show your selected project name and 'Find All' toggled on. The test may return zero results if no tasks were completed recently — that's expected at setup time.
Common mistake — Filters are the most common place setups break. Double-check the field name and value exactly match what your app sends — a single capital letter difference will block everything.
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Asana
AS
notified
5

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.

  1. 1Click '+' to add a new step and place it between the Schedule trigger and the Asana action
  2. 2Search for 'Formatter by Zapier' and select it
  3. 3Choose 'Date / Time' as the transform type
  4. 4Set 'Transform' to 'Format'
  5. 5In the 'Input' field, select the Schedule trigger's date/time output
  6. 6Set 'To Format' to 'YYYY-MM-DDTHH:mm:ssZ'
  7. 7Set 'Modify' to '-1 days' to subtract one day
What you should see: The test result should show a date string like '2024-03-11T14:00:00+00:00' — one day before today's trigger time. Go back to the Asana step and map this output into the 'Completed Since' field.
Common mistake — After inserting this Formatter step, go back to the Asana 'Find Tasks' step and re-map the 'Completed Since' field to the Formatter output. Zapier doesn't auto-update downstream field mappings when you insert a new step.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
6

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.

  1. 1Click '+' to add another action step
  2. 2Select 'Asana' and choose 'Find Tasks' again
  3. 3Use the same connected Asana account and project
  4. 4Set 'Due On' to the date output from your Formatter step (today's date in YYYY-MM-DD)
  5. 5Enable the 'Find All' toggle
  6. 6Set 'Completed' to 'False' to exclude already-done tasks
What you should see: This step should return tasks with a due date matching today and not yet completed. If your project has no tasks due today during testing, the step will return empty — that's fine.
Common mistake — Asana's 'Due On' filter only accepts the date portion (YYYY-MM-DD), not a full timestamp. If you pass an ISO 8601 datetime string here, the filter will silently fail and return no results. Use a separate Formatter step that outputs only the date portion.
7

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.

  1. 1Click '+' to add a new action step
  2. 2Search for 'Code by Zapier' and select it
  3. 3Choose 'Run JavaScript' as the action event
  4. 4In the 'Input Data' section, create two keys: 'completed_tasks' and 'due_tasks'
  5. 5Map 'completed_tasks' to the name/title output from your first Asana 'Find Tasks' step
  6. 6Map 'due_tasks' to the name/title output from your second Asana 'Find Tasks' step
  7. 7Paste the JavaScript code from the pro tip into the 'Code' field
What you should see: After testing, the step should output a single string field called 'standup_message' containing a formatted Slack message with two sections: completed tasks and tasks due today.
Common mistake — When Asana 'Find Tasks' returns multiple records with 'Find All' enabled, Zapier passes them to Code by Zapier as a comma-separated string, not a JavaScript array. The code in the pro tip handles this by splitting on commas. If you modify the code, account for this format.
Message template
📬 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 }];
message template
🔔 New Record: {{text}} {{user}}
channel: {{channel}}
ts: {{ts}}
#sales
🔔 New Record: Jane Smith
Company: Acme Corp
8

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.

  1. 1Click '+' to add the final action step
  2. 2Search for 'Slack' and select 'Send Channel Message'
  3. 3Click 'Sign in to Slack' and authorize Zapier in the OAuth popup
  4. 4Select your target channel from the 'Channel' dropdown (e.g., #daily-standup)
  5. 5In the 'Message Text' field, click the '+' icon and select the 'standup_message' output from the Code step
  6. 6Set 'Bot Name' to something like 'Standup Bot' so team members recognize the sender
What you should see: You should see a Slack channel dropdown populated with your workspace's channels and a preview of the message text showing the formatted standup content from the Code step output.
Common mistake — Zapier's Slack integration posts as a bot by default, not as your personal account. The message won't show your name or avatar. If your team's Slack workspace restricts bot installations, you'll need a Slack admin to approve the Zapier app in your workspace settings before this step will work.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
9

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.

  1. 1Insert a new Asana 'Find Tasks' action after your due-today step
  2. 2Set the project to the same Asana project
  3. 3Set 'Completed' to 'False'
  4. 4Set 'Due Before' to the yesterday date output from your Formatter step
  5. 5Enable 'Find All'
  6. 6Go back to the Code by Zapier step and add a new Input Data key: 'overdue_tasks'
  7. 7Map it to the name output of this new Asana step
What you should see: The Code step's input data section should now show three keys: completed_tasks, due_tasks, and overdue_tasks. Re-run the test on the Code step to confirm all three appear in the output message.
Common mistake — Map fields using the variable picker — don't type field names manually. Hand-typed variable names often have invisible spacing errors that produce blank output.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
10

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.

  1. 1Click 'Test' on the Schedule trigger step — it will generate a sample timestamp
  2. 2Click 'Test' on each Formatter step to confirm date outputs look correct
  3. 3Click 'Test' on each Asana step to verify task data is returning
  4. 4Click 'Test' on the Code step and inspect the 'standup_message' output for formatting
  5. 5Click 'Test' on the Slack step and check your Slack channel for the posted message
What you should see: A message should appear in your Slack channel formatted with three sections. It may look sparse during testing if your Asana project has no recent activity — add a test task, complete it, and re-run the Asana steps.
Common mistake — If any Asana step returns zero results during testing, the Code step will still run and Slack will still post — but the section will show 'None' or be empty. That's correct behavior, not a bug. Confirm the Zap handles empty responses gracefully before turning it on.
Zapier
▶ Turn on & test
executed
Slack
Asana
Asana
🔔 notification
received
11

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.

  1. 1Click the toggle in the top right corner of the Zap editor to switch from 'Draft' to 'On'
  2. 2Confirm the status shows 'On' in green
  3. 3The next morning, open Zapier Dashboard > Task History
  4. 4Click on the most recent Zap run to inspect each step's input and output
  5. 5Check your Slack channel to confirm the standup message posted correctly
What you should see: Task History should show all steps with green checkmarks. Your Slack channel should have a standup message posted at the scheduled time with completed tasks, tasks due today, and overdue items.

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

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.

Cost

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.

Tradeoffs

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 sectionsExtend 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 channelsDuplicate 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 FridaysCreate 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

Was this guide helpful?
Slack + Asana overviewZapier profile →