Beginner~8 min setupCommunication & Project ManagementVerified April 2026
Slack logo
Monday.com logo

How to Create Monday.com Tasks from Slack with Zapier

Automatically creates a Monday.com task whenever someone reacts to a Slack message with a specific emoji, pulling the message text, sender, and channel into the task fields.

Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.

Best for

Teams that live in Slack and want to capture action items directly from conversations without switching to Monday.com to log tasks manually.

Not ideal for

Teams who need two-way sync — if a Monday.com task update should post back to Slack, add a second Zap or use Make's multi-step scenario instead.

Sync type

real-time

Use case type

routing

Real-World Example

💡

A 12-person product team uses a :ticket: emoji reaction in their #feedback channel to flag customer requests from Slack as Monday.com tasks. Before this Zap, the team lead manually re-typed messages into Monday.com every evening — requests sat untracked for up to 24 hours. Now a task appears in their 'Incoming Requests' board within 90 seconds of the reaction.

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 permission to add third-party integrations (admin or app manager role required in restricted workspaces)
Monday.com account with permission to create items on the target board (board member or admin role)
Zapier account — Free tier works for testing, but you need a Starter plan ($19.99/month) for multi-step Zaps since this workflow uses 3-4 steps
A Monday.com board already set up with a Long Text column, a Date column, and a Text column for channel reference — create these before starting
Agreement on which emoji will trigger task creation — communicate this to your team before publishing the Zap

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Item Name (Task Title)
Message Text (Full Body)
Message Timestamp
Monday.com Group
4 optional fields▸ show
Slack Channel
Reacting User ID
Message Permalink
Status Column

Step-by-Step Setup

1

zapier.com > My Zaps > Create Zap

Create a new Zap in Zapier

Log into zapier.com and click the orange 'Create Zap' button in the top-left sidebar. This opens the Zap editor. You'll see a two-panel view: the left side shows your step list, the right side shows the configuration for the selected step. Zapier starts you on the trigger step automatically.

  1. 1Log into zapier.com
  2. 2Click 'Create Zap' in the left sidebar
  3. 3The Zap editor opens with 'Trigger' selected in the step panel
What you should see: You see the Zap editor with a blank trigger step waiting to be configured.
2

Zap Editor > Trigger > App & Event

Set Slack as the trigger app

In the trigger step panel, click 'App & Event'. Type 'Slack' in the search box and select it from the list. You then choose the trigger event. Pick 'New Reaction Added' — this fires every time anyone adds an emoji reaction to any message in a channel you specify. This is the most reliable way to flag messages without requiring slash commands or bots.

  1. 1Click the 'App & Event' section in the trigger panel
  2. 2Type 'Slack' in the search bar
  3. 3Select 'Slack' from the results
  4. 4Under 'Trigger Event', select 'New Reaction Added'
  5. 5Click 'Continue'
What you should see: The trigger panel shows 'Slack — New Reaction Added' and prompts you to connect your Slack account.
Common mistake — Do not pick 'New Message Posted to Channel' — that fires on every single message and will flood Monday.com with tasks. Use 'New Reaction Added' so only intentionally flagged messages trigger the Zap.
Zapier
+
click +
search apps
Slack
SL
Slack
Set Slack as the trigger app
Slack
SL
module added
3

Zap Editor > Trigger > Account

Connect your Slack account

Click 'Sign in to Slack'. A popup opens asking you to authorize Zapier. Make sure you're authorizing the correct Slack workspace — check the workspace name in the top-right corner of the popup. Zapier needs the 'reactions:read', 'channels:history', and 'users:read' scopes. These are granted automatically during the OAuth flow.

  1. 1Click 'Sign in to Slack'
  2. 2Verify the workspace name in the top-right of the OAuth popup
  3. 3Click 'Allow' to grant Zapier access
  4. 4Select your connected account from the dropdown once authorization completes
  5. 5Click 'Continue'
What you should see: You see your Slack workspace name listed under 'Account' with a green checkmark.
Common mistake — If you're an admin of multiple Slack workspaces, the OAuth popup defaults to whichever workspace you last used in your browser. Double-check the workspace name before clicking Allow.
Zapier settings
Connection
Choose a connection…Add
click Add
Slack
Log in to authorize
Authorize Zapier
popup window
Connected
green checkmark
4

Zap Editor > Trigger > Set Up Trigger

Configure the Slack trigger settings

Set the 'Reaction' field to the specific emoji name you want to use as the trigger — for example, type 'ticket' (without colons) to trigger on :ticket: reactions. Then select the Slack channel to monitor from the 'Channel' dropdown. You can monitor a single channel or select 'Any Channel' to catch reactions workspace-wide. For most teams, a dedicated channel like #action-items or #feedback gives cleaner results.

  1. 1In the 'Reaction' field, type the emoji name without colons (e.g. 'ticket' or 'white_check_mark')
  2. 2Click the 'Channel' dropdown and select your target channel
  3. 3Leave 'User' blank unless you only want reactions from a specific person
  4. 4Click 'Continue'
What you should see: The trigger summary shows the emoji name and channel name you selected.
Common mistake — Emoji names in Slack are case-sensitive and must match exactly. The reaction :heavy_check_mark: and :white_check_mark: are different emojis with different names — test the exact emoji in Slack first by hovering over it to confirm its name.
5

Zap Editor > Trigger > Test Trigger

Test the Slack trigger

Click 'Test Trigger'. Zapier searches for a recent reaction matching your criteria. If it finds one, it loads sample data including the message text, the user who reacted, the channel ID, and the timestamp. If no matching reaction exists yet, go to Slack, react to any message in your target channel with your chosen emoji, then come back and click 'Test Trigger' again.

  1. 1Click 'Test Trigger'
  2. 2If no results appear, open Slack and add the trigger emoji to any message in the configured channel
  3. 3Return to Zapier and click 'Test Trigger' again
  4. 4Confirm the sample data shows 'Text', 'User', 'Channel', and 'Timestamp' fields
What you should see: Zapier displays a sample payload with fields like 'Text: Can we follow up on the API rate limit issue?', 'User: U04KXYZ789', and 'Channel: C01ABCD1234'.
Common mistake — The 'User' field in the trigger payload returns a Slack user ID (e.g. U04KXYZ789), not a display name. You'll need to handle this in the field mapping step — raw IDs will make the Monday.com task unreadable.
Zapier
▶ Turn on & test
executed
Slack
Monday.com
Monday.com
🔔 notification
received
6

Zap Editor > + > Formatter by Zapier > Text > Truncate

Add a Formatter step to clean the message text

Before sending data to Monday.com, add a Zapier Formatter step to extract a clean task name from the Slack message. Click the '+' button below the trigger to add a step, then select 'Formatter by Zapier'. Choose 'Text' as the action, then 'Truncate' as the transform. Map the Slack 'Text' field as the input, and set the max length to 80 characters — Monday.com task names longer than that are hard to scan in board view.

  1. 1Click the '+' button below the Slack trigger step
  2. 2Search for 'Formatter by Zapier' and select it
  3. 3Under 'Action Event', choose 'Text'
  4. 4Under 'Transform', select 'Truncate'
  5. 5Map the Slack 'Text' field to the 'Input' field
  6. 6Set 'Max Length' to 80
  7. 7Click 'Continue' and then 'Test Action'
What you should see: The Formatter outputs a truncated version of the Slack message text, capped at 80 characters, ready to use as the Monday.com task name.
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}}

This Code by Zapier step resolves a real problem: Slack user IDs in the trigger payload are raw strings like U04KXYZ789, not names. Paste this into a 'Code by Zapier' step (JavaScript) inserted between the Slack trigger and the Monday.com action. It calls Slack's users.info API to resolve the user ID to a display name, which you can then map to a Monday.com Text column labeled 'Flagged By'.

JavaScript — Code Step// Code by Zapier — Resolve Slack User ID to Display Name
▸ Show code
// Code by Zapier — Resolve Slack User ID to Display Name
// Insert this step between the Slack trigger and Monday.com action.
// Input: slackUserId (from Slack trigger 'User' field)

... expand to see full code

// Code by Zapier — Resolve Slack User ID to Display Name
// Insert this step between the Slack trigger and Monday.com action.
// Input: slackUserId (from Slack trigger 'User' field)
// Output: displayName (use this in Monday.com 'Flagged By' column)

const SLACK_BOT_TOKEN = 'xoxb-your-bot-token-here'; // Store in Zapier's secret store or hardcode for testing
const userId = inputData.slackUserId;

if (!userId) {
  output = [{ displayName: 'Unknown User', userId: '' }];
} else {
  const response = await fetch(
    `https://slack.com/api/users.info?user=${encodeURIComponent(userId)}`,
    {
      method: 'GET',
      headers: {
        'Authorization': `Bearer ${SLACK_BOT_TOKEN}`,
        'Content-Type': 'application/json'
      }
    }
  );

  const data = await response.json();

  if (!data.ok) {
    output = [{ displayName: 'Lookup Failed', userId: userId }];
  } else {
    const profile = data.user.profile;
    const displayName = profile.display_name || profile.real_name || data.user.name;
    output = [{ displayName: displayName, userId: userId }];
  }
}
message template
🔔 New Record: {{text}} {{user}}
channel: {{channel}}
ts: {{ts}}
#sales
🔔 New Record: Jane Smith
Company: Acme Corp
7

Zap Editor > + > Monday.com > Create Item

Add Monday.com as the action app

Click '+' below the Formatter step to add the final action. Search for 'Monday.com' and select it. Under 'Action Event', choose 'Create Item'. This creates a new task (called an 'item' in Monday.com's terminology) on a board you specify. Click 'Continue' and then connect your Monday.com account via the OAuth popup.

  1. 1Click the '+' button below the Formatter step
  2. 2Search for 'Monday.com' and select it
  3. 3Under 'Action Event', select 'Create Item'
  4. 4Click 'Continue'
  5. 5Click 'Sign in to Monday.com' and complete the OAuth flow
  6. 6Select your connected account and click 'Continue'
What you should see: The action panel shows 'Monday.com — Create Item' with your account connected and a green checkmark.
Common mistake — The Monday.com OAuth token is scoped to the account that authorizes it. If your Monday.com admin account is different from your day-to-day account, items will appear as created by the admin. Use a dedicated integration user account if task ownership matters.
8

Zap Editor > Action > Set Up Action

Configure the Monday.com action fields

Select the Board where tasks should land from the 'Board' dropdown. Then select the Group within that board (e.g. 'Incoming Requests' or 'This Week'). Map the 'Item Name' field to the Formatter output from Step 6 — this becomes the task title. In the 'Column Values' section, map additional fields: set the 'Text' or 'Long Text' column to the full original Slack message, and set the 'Date' column to the Slack message timestamp.

  1. 1Select your target board from the 'Board' dropdown
  2. 2Select the target group from the 'Group' dropdown
  3. 3Map 'Item Name' to the Formatter output (truncated message text)
  4. 4Map a 'Long Text' column to the Slack 'Text' field for full context
  5. 5Map a 'Date' column to the Slack 'Timestamp' field
  6. 6Map a 'Text' column to the Slack 'Channel' field for reference
  7. 7Click 'Continue'
What you should see: The action configuration panel shows your board name, group name, and all mapped fields filled in with Slack data variables.
Common mistake — Monday.com's 'People' column requires a Monday.com user ID, not a Slack user ID. You cannot directly map the Slack user to a Monday.com assignee without a lookup step. Leave the People column blank for now or assign to a default user — see the pro tip for the workaround.
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
9

Zap Editor > Action > Test Action

Test the Monday.com action

Click 'Test Action'. Zapier sends the sample Slack data to Monday.com and attempts to create a real item. Log into Monday.com and navigate to your target board to confirm the item appeared. Check that the item name is readable, the long text column has the full message, and the date column shows the correct date.

  1. 1Click 'Test Action'
  2. 2Wait 5-10 seconds for the API call to complete
  3. 3Open Monday.com in a new tab and navigate to your target board
  4. 4Confirm the new item appeared in the correct group with the correct fields populated
What you should see: A new item appears on your Monday.com board with the task name pulled from the Slack message and a timestamp in the date column.
10

Zap Editor > + > Slack > Send Channel Message

Add a Slack confirmation message (optional but recommended)

Add one more action step after Monday.com: select Slack and choose 'Send Channel Message'. Map the channel to the same channel the original reaction came from. In the message body, write something like: 'Task created in Monday: [Monday item URL]'. Monday.com's 'Create Item' response includes an item ID — use it to construct the board URL. This closes the loop so the person who reacted knows the task was logged.

  1. 1Click '+' below the Monday.com step
  2. 2Select 'Slack' and choose 'Send Channel Message'
  3. 3Set 'Channel' to the Slack channel from the trigger
  4. 4In 'Message Text', type a confirmation string and embed the Monday.com item ID
  5. 5Click 'Continue' and test the action
What you should see: A confirmation message appears in Slack with the Monday.com task reference within 90 seconds of the original emoji reaction.
Common mistake — Monday.com does not return a direct item URL in the Zapier response — only the item ID and board ID. Construct the URL manually as: https://[your-subdomain].monday.com/boards/[board_id]/pulses/[item_id]. You need to hardcode your subdomain and board ID in the message template.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
11

Zap Editor > Zap Name > Publish

Name and publish the Zap

Click the Zap name field at the top of the editor (it defaults to something like 'My Zap') and rename it to something descriptive, like 'Slack :ticket: → Monday.com Incoming Requests'. Click 'Publish' in the top-right corner. Zapier will confirm the Zap is live. Do a final end-to-end test: go to Slack, react to a real message with your emoji, and confirm the Monday.com task and Slack confirmation both appear within 2 minutes.

  1. 1Click the Zap name at the top of the editor
  2. 2Rename it to something descriptive
  3. 3Click 'Publish' in the top-right corner
  4. 4Confirm the 'Your Zap is on' confirmation screen appears
  5. 5Run a live end-to-end test in Slack
What you should see: The Zap shows as 'On' in your Zap list, and your live test produces a Monday.com item and a Slack confirmation message within 90 seconds.

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 the workflow live today. The guided Zap builder handles the Slack webhook registration automatically — you don't touch api.slack.com at all. The emoji-to-task pattern also maps cleanly onto Zapier's 'New Reaction Added' trigger, which has worked reliably since 2019 and rarely breaks. If your team needs to route tasks to five different boards based on channel, keyword, or user, switch to Make — Zapier's Paths feature gets expensive and complicated fast once you have more than two branches.

Cost

Here's the real cost math. This workflow uses 3 tasks per Zap run (Slack trigger + Formatter + Monday.com action) plus 1 optional task for the Slack confirmation. At 100 flagged messages per month, you're burning 300–400 Zapier tasks. Zapier's Starter plan gives you 750 tasks/month for $19.99/month — you have room. At 300 flagged messages/month, you're at 900–1,200 tasks, which pushes you to the Professional plan at $49/month. Make's Core plan handles the same workflow for $9/month with 10,000 operations — roughly 4x cheaper at high volume.

Tradeoffs

Make handles multi-branch routing better than Zapier for this use case — you can filter by channel, check emoji type, and route to different boards in a single scenario without paying per-path. n8n is the right call if you want to self-host and store a permanent Slack user ID → Monday.com user ID lookup table in a database node. Power Automate works well if your organization is Microsoft-first and you want to log tasks to Planner instead of Monday.com — but its Slack connector is weaker and requires more manual configuration. Pipedream lets you write the full Slack user lookup and Monday.com item creation in a single async function with cleaner error handling. Zapier still wins here for non-technical teams because the debugging UI — Task History with full input/output per step — makes troubleshooting accessible to anyone on the team without a developer.

Three things you'll hit after going live. First, Slack messages with only images or file attachments have an empty 'Text' field — your Monday.com item gets a blank name. Add a Filter step on day one. Second, if your Slack workspace has Emoji reactions turned off by admins (it happens in regulated industries), the entire trigger approach fails silently. Confirm emoji reactions are enabled in Slack's admin settings before building. Third, Monday.com's API rate limit is 60 requests per minute per token. If your team has a burst of 20+ reactions in under a minute — say, during a busy post-launch incident — some Zap runs will fail with a 429 error. Zapier retries automatically, but tasks can arrive 10–15 minutes late during those bursts.

Ideas for what to build next

  • Route tasks to different Monday.com boards by channelAdd a Paths step in Zapier after the Slack trigger to send reactions from #bugs to a 'Bug Tracker' board and reactions from #feedback to a 'Product Requests' board. Each path gets its own Monday.com action with a different board ID.
  • Add a Monday.com status change → Slack notification reverse loopBuild a second Zap that triggers when a Monday.com item's status changes to 'Done' and posts a completion message back to the original Slack channel. This closes the feedback loop without requiring people to check Monday.com.
  • Capture slash command task creation as an alternative triggerAdd a second Zap using the Slack 'New Slash Command' trigger so team members can type /task [description] to create a Monday.com item with a custom name instead of relying on message text. Both Zaps can feed the same Monday.com board.

Related guides

Was this guide helpful?
Slack + Monday.com overviewZapier profile →