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

How to Create Asana Tasks from Slack with Zapier

When a message is posted in a client Slack channel, Zapier instantly creates a tagged Asana task with the message text, sender, channel name, and a direct link back to the Slack thread.

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 that use shared Slack channels and need issues captured in Asana without relying on anyone to remember to file a task manually.

Not ideal for

Teams with high message volume in client channels — every message will create a task unless you add a filter, which burns Zapier task quota fast.

Sync type

real-time

Use case type

routing

Real-World Example

💡

A 12-person agency manages 20+ client accounts in dedicated Slack channels like #client-acme and #client-globex. Before this automation, account managers copy-pasted issues into Asana manually — or forgot entirely. Now any client message containing a keyword like 'broken', 'urgent', or 'question' auto-creates a tagged Asana task in the right project within 30 seconds, with the Slack permalink attached so the team can jump straight to context.

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.

Slack account with admin rights or permission to install third-party apps in the target workspace
Access to the specific Slack client channel you want to monitor (you must be a member)
Asana account with edit access to the project where tasks will be created
Asana project already created with any custom fields (like Priority) configured before setting up the Zap
Zapier account — free tier works for testing, but you'll need a paid plan (Starter at $19.99/month) for multi-step Zaps that include the Filter step

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Task Name
Task Notes
Project
Slack Sender (User Name)
Slack Permalink
5 optional fields▸ show
Slack Channel Name
Due Date
Priority (Custom Field)
Assignee
Tags

Step-by-Step Setup

1

zapier.com > Create > Zaps > Trigger > Search Apps

Create a new Zap and connect Slack

Go to zapier.com and click the orange 'Create' button, then select 'Zaps'. In the trigger search box, type 'Slack' and select it from the list. You'll be prompted to choose a trigger event — this is where you define what Slack activity kicks off the Zap. Zapier uses Slack's Events API (webhook-based), so your trigger fires within seconds of a message being posted.

  1. 1Click the orange 'Create' button at the top left of your Zapier dashboard
  2. 2Select 'Zaps' from the dropdown
  3. 3In the trigger panel, click the app search field and type 'Slack'
  4. 4Select 'Slack' from the results list
What you should see: You should see the Slack trigger panel open on the right side of the Zap editor, showing a dropdown labeled 'Trigger Event'.
Common mistake — Zapier's Slack integration requires the Slack app to be installed in your workspace by a Slack admin. If you're not the admin, get the app approved before starting — you'll hit an OAuth block mid-setup otherwise.
2

Zap Editor > Trigger > Trigger Event > New Message Posted to Channel

Choose the trigger event and channel

In the 'Trigger Event' dropdown, select 'New Message Posted to Channel'. This event fires every time a message lands in a specific channel. After selecting it, you'll connect your Slack account via OAuth — click 'Sign in to Slack', approve the permissions, and return to the editor. Then use the 'Channel' dropdown to select the client Slack channel you want to monitor.

  1. 1In the 'Trigger Event' dropdown, select 'New Message Posted to Channel'
  2. 2Click 'Sign in to Slack' and complete the OAuth flow in the popup window
  3. 3Return to the Zap editor and click the 'Channel' dropdown
  4. 4Select the specific client channel (e.g., #client-acme) from the list
What you should see: The 'Channel' field should show the name of your selected Slack channel, and the account line above should show your Slack workspace name with a green checkmark.
Common mistake — This trigger fires on ALL messages in the channel — including bot messages and your own team's replies. If you don't add a filter in step 4, you'll create Asana tasks for every single message posted.
Zapier
+
click +
search apps
Slack
SL
Slack
Choose the trigger event and…
Slack
SL
module added
3

Zap Editor > Trigger > Test Trigger

Test the Slack trigger

Click 'Test trigger' at the bottom of the trigger panel. Zapier pulls the three most recent messages from the channel you selected. Review the sample data carefully — you'll see fields like 'Text', 'User', 'Timestamp', 'Channel', and 'Permalink'. These are the values you'll map into Asana. If the channel is new and has no messages, post a test message in Slack first, then click 'Test trigger' again.

  1. 1Click the 'Test trigger' button at the bottom of the trigger configuration panel
  2. 2Wait for Zapier to fetch sample messages from your channel
  3. 3Click through each sample record to review the available fields
  4. 4Confirm you can see 'Text', 'User Name', 'Permalink', and 'Channel Name' in the data
What you should see: You should see a list of 1-3 sample messages with all available Slack fields expanded. The 'Permalink' field should contain a full slack.com URL pointing to the specific message.
Common mistake — Zapier's 'User' field from Slack returns a Slack User ID (e.g., U04XK2B7P), not a display name. The 'User Name' field returns the readable name — use that one when mapping to the Asana task description, not the raw User ID.
Zapier
▶ Turn on & test
executed
Slack
Asana
Asana
🔔 notification
received
4

Zap Editor > + Icon between steps > Filter

Add a filter to catch only client messages

Click the '+' button between the trigger and your next step, then select 'Filter'. This prevents every message in the channel from becoming an Asana task. Set the filter condition on the 'Text' field — for example, 'Text Contains' one of your trigger words: 'issue', 'broken', 'urgent', 'help', 'question', or 'request'. You can add multiple OR conditions. Alternatively, filter on 'User Name Does Not Contain' your team members' names to only capture client messages.

  1. 1Click the '+' icon that appears between the Slack trigger and the action area
  2. 2Select 'Filter' from the options that appear
  3. 3In the filter panel, set the field to 'Text' and condition to '(Text) Contains'
  4. 4Type your first trigger keyword (e.g., 'urgent') in the value field
  5. 5Click 'Add OR condition' to add additional keywords like 'broken', 'issue', 'help'
What you should see: The filter step should show a green 'Your Zap would have continued' message when you test it against the sample message that matches your conditions.
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.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Asana
AS
notified
5

Zap Editor > Action > Search Apps > Asana > Create Task

Add Asana as the action app

Click the '+' button after your filter step to add an action. Search for 'Asana' and select it. In the 'Action Event' dropdown, choose 'Create Task'. This creates a new task in a specific Asana project every time the filter passes. You'll connect your Asana account next via OAuth — Zapier requests access to your workspaces and projects.

  1. 1Click the '+' icon after the filter step
  2. 2Type 'Asana' in the app search box and select it
  3. 3In the 'Action Event' dropdown, select 'Create Task'
  4. 4Click 'Sign in to Asana' and approve the OAuth permissions
  5. 5Confirm your Asana account appears in the account selector with a checkmark
What you should see: The Asana action panel should open with a series of field inputs including 'Workspace', 'Project', 'Name', 'Notes', and 'Due Date'. Your connected Asana account should appear in the account line.
Common mistake — Asana's OAuth scope in Zapier grants access to all your workspaces. If your Asana account has multiple workspaces (e.g., a personal one and a client one), make sure you select the correct workspace in the next step before mapping any fields.
6

Zap Editor > Asana Action > Workspace > Project

Configure the Asana workspace and project

In the Asana action panel, start with the 'Workspace' dropdown — select the workspace where your client projects live. Once selected, the 'Project' dropdown will populate with available projects. Choose the specific Asana project for this client (e.g., 'Acme Corp — Support'). If you're routing messages from multiple channels to different projects, you'll need separate Zaps per client channel, or use Make/n8n with conditional routing instead.

  1. 1Click the 'Workspace' dropdown and select your client-facing Asana workspace
  2. 2Wait for the 'Project' dropdown to load available projects
  3. 3Select the target Asana project for this client channel
  4. 4Optionally set a 'Section' within the project (e.g., 'Incoming Requests')
What you should see: Both the 'Workspace' and 'Project' fields should show the names of your selected Asana workspace and project, not IDs.
Common mistake — If your Asana project uses custom sections (like 'Triage' or 'Backlog'), the 'Section' field won't appear unless you first select the Project. The section list loads dynamically — if it shows blank, click away and click back into the field to force a reload.
7

Zap Editor > Asana Action > Name / Notes fields

Map Slack message fields to the Asana task

Now map the Slack data into Asana fields. Click the 'Name' field and insert dynamic data: type something like 'Client issue: ' then use the insert button to add the Slack 'Text' field (first 60 characters make a good task title). In the 'Notes' field, build a block that includes the full message text, the sender's name, the channel name, and the Slack permalink. This gives whoever picks up the task full context without leaving Asana.

  1. 1Click into the 'Name' field and type 'Client issue: '
  2. 2Click the insert icon (lightning bolt or '+') and select 'Text' from the Slack trigger data
  3. 3Click into the 'Notes' field and build a multi-line block using the insert button
  4. 4Insert: 'From: [User Name]', new line, 'Channel: [Channel Name]', new line, 'Message: [Text]', new line, 'Slack link: [Permalink]'
  5. 5Set the 'Assignee' field if you want tasks auto-assigned to a specific team member
What you should see: The 'Name' preview should show something like 'Client issue: Our login button is broken again'. The 'Notes' preview should show a multi-line block with sender, channel, message, and a full slack.com URL.
Common mistake — Slack message text has no character limit from Zapier's side, but Asana task names display best under 100 characters. If clients write long messages, the task name will be truncated in Asana's list view. Use Zapier's 'Formatter' step between the trigger and action to truncate the Text field to 80 characters before mapping it to the task name.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
Slack fields
text
user
channel
ts
thread_ts
available as variables:
1.props.text
1.props.user
1.props.channel
1.props.ts
1.props.thread_ts
8

Zap Editor > Asana Action > Custom Fields

Set task priority using a custom field

If your Asana project has a custom 'Priority' field (Low / Medium / High / Urgent), you can set it here. Click the 'Custom Fields' section in the Asana action panel — Zapier pulls in all custom fields from your selected project. Map priority based on keywords: if the Slack message text contains 'urgent' or 'broken', you want 'High'. This requires a Formatter step or a simple text match — see the pro tip below for a Code by Zapier approach that reads the message and assigns priority automatically.

  1. 1Scroll down in the Asana action panel to the 'Custom Fields' section
  2. 2Find your 'Priority' custom field in the list
  3. 3Click the field and either type a static value like 'High' or insert a dynamic value from an upstream Formatter step
  4. 4If no Priority field exists, set the 'Tags' field to 'client-request' for filtering in Asana
What you should see: The custom field should show either a static value or a reference to an upstream step's output. Asana custom field options must match exactly — 'High' won't work if the field option is 'high' (lowercase).
Common mistake — Asana custom field option names are case-sensitive in Zapier. If your project has a Priority field with options 'Low', 'Medium', 'High', passing 'high' (lowercase) will fail silently — the task creates but the field stays blank. Check your Asana project's custom field settings for the exact option names before mapping.
9

Zap Editor > Asana Action > Due Date

Set the due date

In the 'Due Date' field, click the insert button and select 'Timestamp' from the Slack trigger data. Slack sends a Unix timestamp (e.g., '1712345678.123456') — Zapier automatically converts this to a readable date format for Asana. If you want tasks due 24 hours after the message, add a Formatter step before this action to add 86400 seconds to the timestamp and convert it to YYYY-MM-DD format.

  1. 1Click into the 'Due Date' field in the Asana action panel
  2. 2Click the insert button and select 'Timestamp' from the Slack trigger step
  3. 3If you want a relative due date (e.g., tomorrow), add a Formatter step before this action using 'Date/Time > Format Date' to offset the timestamp
What you should see: The 'Due Date' preview should show a readable date like '2024-04-05', not a raw Unix timestamp number.
10

Zap Editor > Asana Action > Test Step

Test the full Zap

Click 'Test step' in the Asana action panel. Zapier uses your sample Slack message data and attempts to create a real task in Asana. This creates an actual task — go into your Asana project immediately after and verify it. Check that the task name looks right, the Notes block has all four pieces of context (sender, channel, message, permalink), the custom Priority field is set, and the Slack link is clickable.

  1. 1Click the 'Test step' button at the bottom of the Asana action panel
  2. 2Wait for the green success message confirming the task was created
  3. 3Open your Asana project in a separate tab and find the newly created task
  4. 4Click the Slack permalink in the task notes and confirm it opens the correct message thread
What you should see: A new task should appear in your Asana project with the correct name, notes block, priority field, and a working Slack permalink. Zapier should show a green 'Test was successful' banner with the Asana task ID.
11

Zap Editor > Publish button (top right)

Turn on the Zap

Click 'Publish' in the top right of the Zap editor. The Zap status changes from Draft to On. Post a test message in your client Slack channel that matches your filter keywords and watch for the Asana task to appear within 30 seconds. Check the Zap history in your Zapier dashboard (left sidebar > Zap History) after the first real trigger fires to confirm the task data looks correct in production.

  1. 1Click the 'Publish' button in the top right of the Zap editor
  2. 2Confirm the Zap status badge shows 'On' in green
  3. 3Post a message in your client Slack channel using one of your filter keywords
  4. 4Check your Asana project within 30 seconds for the new task
  5. 5Go to zapier.com > Zap History to confirm the run logged successfully
What you should see: The Zap status badge shows 'On'. Within 30 seconds of a matching Slack message, a new task appears in your Asana project with all mapped fields populated correctly.
Common mistake — Once the Zap is live, every qualifying message in that channel creates an Asana task — including messages from your own teammates if you didn't filter them out in step 4. Check your filter logic one more time before publishing.

This Code by Zapier step reads the Slack message text and returns a priority level string ('High', 'Medium', or 'Low') based on keyword matching. Add it as a step between your Slack trigger and the Asana action, then map its output 'priority' to the Asana Priority custom field. Paste this code into a 'Run Python' Code by Zapier step and set the input variable 'message_text' to the Slack Text field from step 1.

JavaScript — Code Step# Input: message_text (mapped from Slack 'Text' field)
▸ Show code
# Input: message_text (mapped from Slack 'Text' field)
message = input_data.get('message_text', '').lower()
# Define keyword groups by priority level

... expand to see full code

# Input: message_text (mapped from Slack 'Text' field)
message = input_data.get('message_text', '').lower()

# Define keyword groups by priority level
high_keywords = ['urgent', 'broken', 'down', 'critical', 'asap', 'emergency', 'not working', 'outage']
medium_keywords = ['issue', 'problem', 'error', 'bug', 'incorrect', 'wrong', 'failing']
low_keywords = ['question', 'request', 'feature', 'suggestion', 'when', 'can we', 'could you']

# Check from highest to lowest priority
if any(keyword in message for keyword in high_keywords):
    priority = 'High'
elif any(keyword in message for keyword in medium_keywords):
    priority = 'Medium'
elif any(keyword in message for keyword in low_keywords):
    priority = 'Low'
else:
    priority = 'Medium'  # Default fallback

# Output available to next Zapier steps
output = {'priority': priority, 'matched_message_length': len(message)}

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 technical resources and you're monitoring a small number of client channels (under 5). Setup takes under 20 minutes, the trigger is webhook-based so it fires within 30 seconds, and no code is required for the core flow. The Zap editor guides you through each step with dropdowns — there's nothing to misconfigure at the infrastructure level. The one scenario where you'd skip Zapier: if you're managing 10+ client channels and need to route each one to a different Asana project. That requires 10+ separate Zaps, and at 200 messages/month per channel you're looking at 2,000 tasks/month — deep into Zapier's paid tiers.

Cost

The math on cost: each Zap run with a Filter step counts as 2 tasks in Zapier's usage model (one for the trigger, one for the action — the filter doesn't add a task). At 300 qualifying messages per month across 5 channels, that's 600 tasks/month. Zapier's free tier covers 100 tasks; the Starter plan ($19.99/month) covers 750. If you hit 1,000 tasks/month you'll need the Professional plan at $49/month. Make handles the same volume — 5 channels, 300 messages/month — for free on its 1,000 operations/month free tier, since a message-to-task workflow uses roughly 2-3 operations per run.

Tradeoffs

Make does conditional routing better: one scenario, a Router module, and you can send messages from #client-acme to the Acme Asana project and #client-globex to the Globex project without duplicating anything. n8n does text parsing better — you can write JavaScript directly in the node to extract structured data from messy Slack messages and build a clean task description. Power Automate has a native Asana connector in Teams environments, which matters if your company already runs on Microsoft 365 and wants everything in one admin console. Pipedream lets you call the Asana API directly and handle complex conditional logic in Node.js with full error handling. Zapier is still right here when the team who owns this workflow is non-technical and will need to update the filter keywords, change the Asana project, or troubleshoot runs without engineering help — Zapier's UI makes all of that self-serve.

Three things you'll hit after go-live: First, Slack's 'New Message' trigger in Zapier also catches threaded replies in the channel (not just top-level messages). If your team uses threads to discuss client issues, every reply creates a new Asana task. Add a filter condition on 'Thread TS Is Empty' to exclude replies. Second, Asana has a rate limit of 1,500 API requests per minute per user — not a problem at normal message volumes, but if you ever bulk-import old messages or test with rapid-fire messages, you'll hit 429 errors and tasks will queue in Zapier's retry system. Third, Slack message text from mobile clients sometimes includes formatting characters like `*bold*` or `_italic_` as literal asterisks and underscores. These show up verbatim in your Asana task notes — not a blocker, but worth knowing so your team doesn't think the notes are corrupted.

Ideas for what to build next

  • Post a Slack confirmation when the Asana task is createdAdd a second Asana action step that posts a message back to the original Slack channel with the Asana task URL, confirming the request was logged. Clients see immediate acknowledgment and your team has a record in both places.
  • Route messages to different Asana projects based on channelIf you have 10+ client channels all feeding into different Asana projects, consider moving this workflow to Make (formerly Integromat), which handles conditional routing in a single scenario using a Router module — cleaner than maintaining 10 separate Zaps.
  • Send a daily digest of open client tasks to a Slack channelBuild a second Zap (or a scheduled Make scenario) that runs every morning, pulls all incomplete Asana tasks tagged 'client-request' created in the last 24 hours, and posts a formatted summary to your team's internal #client-ops Slack channel.

Related guides

Was this guide helpful?
Slack + Asana overviewZapier profile →