

How to Create Asana Tasks from Slack Messages with Make
When a client message in a shared Slack channel matches a keyword or emoji trigger, Make instantly creates an Asana task in the right project with the message text, sender, channel, and a priority level.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Client-facing teams who share Slack channels with clients and need every reported issue captured as a tracked Asana task without manual copy-paste.
Not ideal for
Teams where clients submit requests through a form or email ticketing system — use a Typeform or Gmail trigger instead.
Sync type
real-timeUse case type
routingReal-World Example
A 12-person agency managing 6 client Slack channels uses this to turn client complaint or request messages into Asana tasks automatically. Before this automation, account managers checked Slack manually every few hours and urgent requests sat unactioned for up to 4 hours. Now every message containing 'issue', 'bug', 'broken', or ':red_circle:' creates a tagged Asana task in under 90 seconds.
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 Name | name | |
| Project | projects | |
| Notes / Description | notes | |
| Slack Channel Name | notes | |
| Slack Message Permalink | notes | |
5 optional fields▸ show
| Due Date | due_on |
| Assignee | assignee |
| Priority (Custom Field) | custom_fields |
| Reported By (Slack User) | notes |
| Timestamp | notes |
Step-by-Step Setup
Make Dashboard > Scenarios > Create a new scenario
Create a new scenario in Make
Log in to Make at make.com and click the blue 'Create a new scenario' button in the top right of the Scenarios dashboard. You'll land on a blank canvas with a single empty module circle in the center. This is where you set the trigger. Click the circle to open the app search modal — every scenario starts here. Name your scenario something like 'Slack → Asana: Client Issue Tasks' using the pencil icon at the top left so you can find it later.
- 1Click 'Create a new scenario' in the top right
- 2Click the empty circle module in the canvas center
- 3Type 'Slack' in the search bar
- 4Select 'Slack' from the results
- 5Click the pencil icon top-left and rename the scenario
Scenario Canvas > Slack Module > Watch Messages
Configure the Slack 'Watch Messages' trigger
From the Slack module list, select 'Watch Messages' — this uses a webhook-based connection and fires in real time when a new message lands in a channel. Click 'Add' next to Connection and authenticate with the Slack workspace where your shared client channels live. After connecting, set the Channel field to the specific shared client channel you want to monitor. You can only monitor one channel per scenario module, so if you have multiple client channels, you'll add a Router later — do not try to comma-separate channels here.
- 1Select 'Watch Messages' from the Slack trigger list
- 2Click 'Add' next to the Connection field
- 3Authorize Make in the Slack OAuth window that opens
- 4In the Channel dropdown, select the target client Slack channel
- 5Set 'Limit' to 1 to process one message at a time
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Scenario Canvas > Arrow between modules > Filter (wrench icon)
Add a Text Filter to catch client issue messages
Click the small wrench icon on the arrow between the Slack module and where your next module will be — this opens Make's filter panel. Add a filter condition so the scenario only continues when the message actually contains a client issue keyword. Use the 'Text' operator 'Contains' and set the value to 'issue'. Add a second OR condition for 'bug', 'broken', 'urgent', and ':red_circle:'. This prevents every casual Slack message from creating an Asana task. Without this filter, a client saying 'Thanks!' generates a task.
- 1Click the wrench icon on the connector arrow after the Slack module
- 2Click 'Add AND condition' and set Field to 'Text' (the message body)
- 3Set operator to 'Contains (case insensitive)'
- 4Enter 'issue' as the first value
- 5Click 'Add OR condition' and repeat for 'bug', 'broken', 'urgent', ':red_circle:'
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Scenario Canvas > + Add module > Flow Control > Router
Add a Router to assign priority by keyword
Click the '+' button after the filter to add the next module, then choose 'Flow Control > Router' instead of going straight to Asana. The Router lets you branch: one path for 'urgent' messages (High priority in Asana) and another path for everything else (Normal priority). Right-click each Router output arrow to name the routes 'High Priority' and 'Standard'. This is the step most people skip — they set a static priority in Asana and then clients complain urgent issues aren't flagged.
- 1Click '+' after the filter on the canvas
- 2Search for 'Router' and select 'Flow Control > Router'
- 3Right-click the top output arrow and label it 'High Priority'
- 4Right-click the bottom output arrow and label it 'Standard'
- 5Set a filter on the 'High Priority' route: message Text Contains 'urgent' OR Contains ':red_circle:'
Scenario Canvas > High Priority Route > + Add module > Asana > Create a Task
Add an Asana 'Create a Task' module on the High Priority route
Click '+' on the 'High Priority' Router output arrow and search for Asana. Select 'Create a Task'. Connect your Asana account via OAuth — Make will ask for a workspace and project. Set the Workspace to your Asana workspace and set the Project to the Asana project designated for client issues. In the Name field, type the Slack message text using the dynamic variable picker: click the field, then select the Slack module's 'Text' variable. Prefix it with '[HIGH] ' so tasks are visually flagged in Asana's list view.
- 1Click '+' on the High Priority Router output
- 2Search 'Asana' and select 'Create a Task'
- 3Click 'Add' next to Connection and authorize via Asana OAuth
- 4Set Workspace to your Asana workspace name
- 5Set Project to the client issues project
- 6In the Name field, type '[HIGH] ' then click the variable picker and select Slack Text
Scenario Canvas > Asana Create Task Module > Notes / Due Date fields
Map client context fields in the Asana task
Still inside the Asana 'Create a Task' module, scroll down to fill in the remaining fields. Set the Notes field to a formatted block that includes the Slack channel name, the message author's display name, a link to the original Slack message, and a timestamp. Make provides all of these as variables from the Slack trigger: 'channel.name', 'user', 'permalink', and 'ts'. Set the Due Date to 'today + 1 day' using Make's formula: formatDate(addDays(now; 1); 'YYYY-MM-DD'). This gives the team a default deadline without requiring manual entry.
- 1Click the Notes field and build a multi-line text block using Slack variables
- 2Insert: 'Client: {{1.channel.name}}\nReported by: {{1.user}}\nOriginal message: {{1.permalink}}\nReported at: {{1.ts}}'
- 3Click the Due Date field
- 4Type the formula: formatDate(addDays(now; 1); 'YYYY-MM-DD')
- 5Set Assignee to the account manager's Asana user ID (copy from Asana profile URL)
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Asana Create Task Module > Custom Fields > Add item
Set task priority using Asana custom fields
Scroll further down in the Asana module to find 'Custom Fields'. If your Asana project has a Priority custom field (most teams add this manually), you can set it here. Click 'Add item', select your Priority field by name, and set the value to 'High' for this route. If your Asana project does not yet have a Priority custom field, go to Asana first: open the project, click the grid icon at top right, and add a single-select field named 'Priority' with values High, Medium, Low. Then return to Make and refresh the custom fields list.
- 1Scroll to 'Custom Fields' in the Asana module
- 2Click 'Add item'
- 3Select 'Priority' from the custom field dropdown
- 4Set the value to 'High'
- 5Save the module settings
Scenario Canvas > Standard Route > + Paste Asana Module
Duplicate the Asana module for the Standard priority route
Right-click the Asana 'Create a Task' module you just configured and select 'Copy'. Then click '+' on the Standard Router output arrow and paste the copied module. Change the Name field prefix from '[HIGH] ' to nothing (or '[REQ] ' if you want a visual tag). Change the Priority custom field value from 'High' to 'Normal'. Change the Due Date formula to give 3 days instead of 1: formatDate(addDays(now; 3); 'YYYY-MM-DD'). All other fields — Notes, Assignee, Project — stay the same.
- 1Right-click the High Priority Asana module and select 'Copy'
- 2Click '+' on the Standard Router output arrow
- 3Select 'Paste module' from the app search modal
- 4Update the Name field to remove '[HIGH] ' prefix
- 5Update Priority custom field to 'Normal'
- 6Update Due Date formula: formatDate(addDays(now; 3); 'YYYY-MM-DD')
Scenario Canvas > After each Asana Module > + Add module > Slack > Post a Message
Add a Slack 'Post a Message' confirmation module
After each Asana module, add a final Slack 'Post a Message' module to send a confirmation back to the client channel. This closes the loop — clients see their request was captured without needing to ask. Set the Channel to the same channel variable from the trigger: '{{1.channel.id}}'. Set the message text to something like: 'Got it. I've logged this as an Asana task: {{asana_task.permalink_url}}'. The Asana module exposes 'permalink_url' as an output variable — use that so clients can click through.
- 1Click '+' after the High Priority Asana module
- 2Search 'Slack' and select 'Post a Message'
- 3Set Channel to '{{1.channel.id}}' from the Slack trigger variables
- 4Set Text to: 'Got it. Logged as a task: {{AsanaModuleNumber.permalink_url}}'
- 5Repeat for the Standard route Asana module
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}channel: {{channel}}
ts: {{ts}}
Scenario Canvas > Run once (bottom left toolbar)
Run a test with a real Slack message
Click 'Run once' in the bottom left of the Make canvas. Switch to Slack and post a test message in your target channel containing the word 'urgent issue'. Return to Make — the scenario canvas will animate as each module fires. Green checkmarks appear on each module that succeeded. Click any module to inspect the exact data that passed through it. Verify in Asana that a new task appeared in the correct project with the correct priority, notes, and due date. Check the Slack channel for the confirmation message.
- 1Click 'Run once' in the bottom left toolbar
- 2Go to Slack and post: 'urgent issue — the login page is broken for our team'
- 3Return to Make and watch the modules animate
- 4Click each module bubble to verify data output
- 5Open Asana and confirm the task exists with correct fields
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Scenario Canvas > Toggle ON (bottom left) > Scheduling > Immediately
Activate the scenario and set scheduling to instant
Click the toggle switch in the bottom left of the canvas to turn the scenario ON. Make will prompt you to set a scheduling interval — select 'Immediately' so the webhook fires as soon as a Slack message lands rather than on a polling cycle. Confirm the scenario is active by checking the green status dot next to the scenario name on the Scenarios dashboard. The scenario now runs continuously without manual intervention. Monitor the first 20-30 live runs by checking the scenario History tab for any errors.
- 1Click the toggle switch in the bottom left to ON
- 2In the scheduling dialog, select 'Immediately'
- 3Click 'Save' to confirm
- 4Navigate to Scenarios dashboard and verify green status dot
- 5Click 'History' tab on the scenario to monitor early runs
Paste this formula into Make's Notes field using the formula editor (click the 'f(x)' button inside the field). It builds a clean, formatted notes block and falls back gracefully when the real_name field is empty — which happens when the Slack user is a bot or a deactivated account. The formatDate call normalizes the Slack epoch timestamp into a readable format.
JavaScript — Custom Function// Make Formula — paste into Asana 'Notes' field using the f(x) formula editor▸ Show code
// Make Formula — paste into Asana 'Notes' field using the f(x) formula editor // Requires: Slack 'Watch Messages' module (module 1) + Slack 'Get User Info' module (module 2) if(
... expand to see full code
// Make Formula — paste into Asana 'Notes' field using the f(x) formula editor
// Requires: Slack 'Watch Messages' module (module 1) + Slack 'Get User Info' module (module 2)
if(
isEmpty(2.real_name);
concat(
"Client Channel: "; 1.channel.name; "\n";
"Reported by: Unknown User (ID: "; 1.user; ")\n";
"Message: "; 1.text; "\n";
"Link: "; 1.permalink; "\n";
"Reported at: "; formatDate(1.ts * 1000; "MMMM D, YYYY [at] h:mm A"; "UTC")
);
concat(
"Client Channel: "; 1.channel.name; "\n";
"Reported by: "; 2.real_name; "\n";
"Message: "; 1.text; "\n";
"Link: "; 1.permalink; "\n";
"Reported at: "; formatDate(1.ts * 1000; "MMMM D, YYYY [at] h:mm A"; "UTC")
)
)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 conditional logic — specifically, routing high-priority messages to a different Asana task configuration than standard ones. Make's visual Router module handles this in about 3 minutes of setup; in Zapier you'd need a separate Zap per priority tier or a Formatter step with path logic that's harder to read and maintain. Also use Make if you want the 'Get User Info' Slack lookup in the same visual flow — Make chains modules cleanly without needing a separate workflow. The one scenario where you'd pick something else: if you want AI-based priority classification instead of keyword matching. n8n's OpenAI node inside a workflow is faster to configure for that than Make's HTTP module calling the OpenAI API manually.
The math is straightforward. Each run costs 5 operations: Slack trigger (1) + Get User Info (1) + Router (1) + Asana Create Task (1) + Slack Post confirmation (1). At 200 client messages per month that match your keywords, that's 1,000 operations — exactly the free plan limit. Anything above 200 matched messages per month requires Make Core at $9/month (10,000 operations). At 1,000 matched messages/month you're at 5,000 operations, still within Core. Zapier's equivalent at 1,000 tasks/month costs $19.99/month on the Starter plan. Make is cheaper by $10.99/month at that volume for identical functionality.
Zapier has one real advantage here: the Slack trigger fires faster. In testing, Zapier's Slack webhook resolves in under 30 seconds consistently; Make averages 60-90 seconds on the Core plan. For urgent client issues, that 60-second gap matters. n8n, self-hosted, has no operation limits and lets you write JavaScript directly in the workflow to do regex-based priority classification — that beats Make's formula editor for complex parsing. Power Automate connects natively to Teams but its Slack connector is limited and Asana's connector is community-maintained with known reliability gaps — avoid Power Automate for this specific pair. Pipedream is faster to code and free for low volume, but the visual builder is less intuitive than Make's canvas for a non-developer team that needs to modify the keyword list every few weeks. Make is still the right call because the visual Router is readable by account managers who don't code, and the Asana module's custom field support is solid.
Three things you'll hit after setup. First: Slack's 'user' field is always a raw user ID — if you skip the Get User Info lookup module, every Asana task says 'Reported by: U08ABCD1234' and your team will immediately complain. Add the lookup step before launch. Second: Make occasionally throws 'incomplete execution' errors when Slack sends a message event but the Asana API responds slowly — this creates a Slack trigger record with no matching Asana task. Enable 'Allow storing incomplete executions' in scenario settings so you can replay these manually from the Incomplete Executions tab. Third: Asana rate-limits API writes to 150 requests per minute per user token. This only matters if multiple Slack channels fire simultaneously in a burst — if you have a major incident and 10 clients all post in 2 minutes, some Asana tasks will fail with a 429 error. Add a Make error handler module on the Asana step that waits 5 seconds and retries once.
Ideas for what to build next
- →Add Asana-to-Slack status updates — Build a second scenario that watches for Asana task completions in the client issue projects and posts a resolution message back to the originating Slack channel — closes the loop for clients without manual follow-up.
- →Route to multiple client projects automatically — Use a Make Data Store to map Slack channel IDs to their corresponding Asana project GIDs — this replaces duplicated scenarios with a single lookup-driven flow that handles any number of client channels.
- →Add a daily digest to Slack — Create a scheduled Make scenario that runs every morning at 9 AM, queries open Asana tasks tagged as client issues, and posts a summary to an internal #client-issues Slack channel — gives the team a daily triage view without opening Asana.
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