Intermediate~15 min setupCommunication & Project ManagementVerified April 2026
Slack logo
Monday.com logo

How to Send Monday.com Status Alerts to Slack with Pipedream

Automatically post a Slack message to the right channel whenever a Monday.com item changes status, is created, or hits a deadline.

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

Best for

Engineering or ops teams who need instant Slack alerts when Monday.com item statuses change, without writing a full backend service.

Not ideal for

Teams that want a no-code setup with a visual builder — use Make or Zapier instead; Pipedream requires comfort with Node.js.

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 12-person product team uses this to post to #product-updates in Slack the moment any Monday.com item moves to 'In Review' or 'Blocked'. Before this, the PM sent manual Slack messages after status changes — updates were delayed by 30–90 minutes on average. Now the Slack message fires within 5 seconds of the Monday.com status change.

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 Pipedream

Copy the pre-built Pipedream blueprint and paste it straight into Pipedream. 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.

Monday.com account with at least Member access on the board you want to monitor — Viewer access will not allow webhook subscription
Monday.com OAuth scopes required: me:read, boards:read, webhooks:write
Slack account with permission to add apps to the target workspace — workspace admins sometimes restrict this
Slack bot must have the channels:read and chat:write OAuth scopes to post messages
A Pipedream account (free tier works for up to 10,000 credits/month)

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Item Nameevent.pulseName
Board Nameevent.boardId
New Status Labelevent.value.label.text
Previous Status Labelevent.previousValue.label.text
Item IDevent.pulseId
Item URL
3 optional fields▸ show
Changed At Timestampevent.changedAt
User Who Changed Itevent.userId
Column IDevent.columnId

Step-by-Step Setup

1

pipedream.com > Workflows > + New Workflow

Create a new Pipedream Workflow

Go to pipedream.com and click 'Workflows' in the left sidebar. Click the green '+ New Workflow' button at the top right. You'll land on the workflow canvas with an empty trigger slot at the top. Give the workflow a name — something like 'Monday Status → Slack Alert' — by clicking the pencil icon next to 'My Workflow' at the top.

  1. 1Click 'Workflows' in the left sidebar
  2. 2Click '+ New Workflow' in the top right
  3. 3Click the pencil icon next to 'My Workflow' and rename it
  4. 4Click the 'Add Trigger' block at the top of the canvas
What you should see: You should see the trigger selection panel open on the right side of the canvas.
2

Trigger Panel > Search 'Monday.com' > New Event (Instant)

Add the Monday.com Webhook Trigger

In the trigger search box, type 'Monday.com' and select the Monday.com app. Choose the trigger called 'New Event (Instant)' — this uses Monday.com's native webhook system so the workflow fires within seconds of a board change. You'll be prompted to connect your Monday.com account via OAuth; click 'Connect Account' and follow the auth flow. Once connected, select the specific board you want to monitor from the dropdown.

  1. 1Type 'Monday.com' in the trigger search box
  2. 2Select 'Monday.com' from the app results
  3. 3Choose 'New Event (Instant)' as the trigger
  4. 4Click 'Connect Account' and complete the OAuth flow
  5. 5Select your target board from the 'Board ID' dropdown
What you should see: You should see a green 'Connected' badge next to your Monday.com account and the board name displayed under the trigger config.
Common mistake — The 'New Event (Instant)' trigger only fires for boards where you have at least Member-level access. If your board doesn't appear in the dropdown, check your Monday.com permissions — Viewer access is not enough.
Pipedream
+
click +
search apps
Slack
SL
Slack
Add the Monday.com Webhook T…
Slack
SL
module added
3

Trigger Config > Event Type > change_column_value

Configure Which Monday.com Events to Watch

Under the trigger config, expand the 'Event Type' dropdown. You'll see options including 'change_column_value', 'create_pulse' (item created), and 'item_due_date_arrived'. Select 'change_column_value' to catch status changes. If you also want to catch item creation, you'll need a second workflow using 'create_pulse' — Pipedream doesn't let you subscribe to multiple event types in a single trigger step. For status changes specifically, also set the 'Column ID' field to your board's status column ID.

  1. 1Open the 'Event Type' dropdown in the trigger config
  2. 2Select 'change_column_value'
  3. 3Set 'Column ID' to the ID of your status column (e.g., 'status')
  4. 4Click 'Save & Test' to pull a sample event
What you should see: After clicking 'Save & Test', Pipedream waits for a real event. Change any item status on your Monday.com board and you'll see the raw webhook payload appear in the trigger output panel within a few seconds.
Common mistake — Monday.com column IDs are not always what you'd expect. 'Status' is usually the column ID literal 'status', but custom status columns have IDs like 'status_1' or 'color'. Go to Monday.com > Board > Column Settings > Column ID to confirm yours.
4

Canvas > + > Run Node.js code

Add a Node.js Code Step to Parse the Payload

Click the '+' button below the trigger to add a new step. Choose 'Run Node.js code' from the step options. Pipedream passes the Monday.com webhook payload as an object you can access via steps.trigger.event. The raw payload contains the item name, board name, previous column value, and new column value — but they're nested and need to be extracted before sending to Slack. This step pulls out the fields you actually care about and formats the Slack message text.

  1. 1Click the '+' icon below the Monday.com trigger
  2. 2Select 'Run Node.js code' from the step type list
  3. 3Paste the extraction code into the code editor (see Pro Tip below)
  4. 4Click 'Test' to run the step against your sample event
What you should see: The step output panel shows a structured object with fields like itemName, boardName, previousStatus, newStatus, and itemUrl — ready to drop into the Slack message.
Common mistake — Monday.com sends the 'previousValue' and 'value' fields as JSON strings inside the webhook body — not plain strings. If you try to use them directly without JSON.parse(), your Slack message will show '[object Object]' instead of the actual status label.

Paste this into the Node.js code step (Step 4). It extracts and formats all the fields you need from the raw Monday.com webhook payload, builds the item URL, handles the nested JSON parsing for status labels, and returns a clean object that every downstream step can reference with steps.parse_payload.$return_value.fieldName.

JavaScript — Code Stepexport default defineComponent({
▸ Show code
export default defineComponent({
  async run({ steps, $ }) {
    const event = steps.trigger.event.event;

... expand to see full code

export default defineComponent({
  async run({ steps, $ }) {
    const event = steps.trigger.event.event;

    if (!event) {
      $.flow.exit('No event payload found — skipping');
    }

    // Monday.com sends status values as nested JSON strings
    // Parse them safely before reading the label
    let newStatus = 'Unknown';
    let previousStatus = 'Unknown';

    try {
      const newVal = typeof event.value === 'string'
        ? JSON.parse(event.value)
        : event.value;
      newStatus = newVal?.label?.text || newVal?.index?.toString() || 'Unknown';
    } catch (e) {
      console.log('Could not parse new value:', event.value);
    }

    try {
      const prevVal = typeof event.previousValue === 'string'
        ? JSON.parse(event.previousValue)
        : event.previousValue;
      previousStatus = prevVal?.label?.text || prevVal?.index?.toString() || 'Not set';
    } catch (e) {
      console.log('Could not parse previous value:', event.previousValue);
    }

    // Build the direct Monday.com item URL
    const boardId = event.boardId;
    const itemId = event.pulseId;
    const itemUrl = boardId && itemId
      ? `https://monday.com/boards/${boardId}/pulses/${itemId}`
      : null;

    // Format the timestamp for display in Slack
    const changedAt = event.changedAt
      ? new Date(event.changedAt * 1000).toUTCString()
      : 'Unknown time';

    const result = {
      itemName: event.pulseName || 'Unnamed item',
      boardId: boardId,
      itemId: itemId,
      itemUrl: itemUrl,
      newStatus: newStatus,
      previousStatus: previousStatus,
      columnId: event.columnId,
      userId: event.userId,
      changedAt: changedAt,
      slackMessage: `*${event.pulseName}* moved from \`${previousStatus}\` → \`${newStatus}\``,
    };

    console.log('Parsed Monday event:', JSON.stringify(result, null, 2));
    return result;
  }
});
5

Canvas > + > Filter

Add a Filter Step for Relevant Status Changes

Click '+' below the code step and select 'Filter' from the built-in Pipedream helpers. This lets you stop the workflow early if the status change isn't worth notifying about — for example, if someone moves an item from 'Done' back to 'Done' after a typo correction. Set the condition to check that steps.parse_payload.$return_value.newStatus does not equal steps.parse_payload.$return_value.previousStatus. This prevents duplicate or meaningless Slack messages.

  1. 1Click '+' below the Node.js code step
  2. 2Select 'Filter' from the helper step list
  3. 3Set the left operand to '{{steps.parse_payload.$return_value.newStatus}}'
  4. 4Set condition to 'does not equal'
  5. 5Set the right operand to '{{steps.parse_payload.$return_value.previousStatus}}'
What you should see: The filter step shows 'Condition met — continuing' when the status genuinely changed, and 'Condition not met — workflow stopped' when previous and new status are identical.
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
Status
matches criteria?
yes — passes through
no — skipped
Monday.com
MO
notified
6

Canvas > + > Slack > Send Message to a Channel

Add the Slack Step

Click '+' below the filter step and search for 'Slack'. Select the Slack app and choose the action 'Send Message to a Channel'. Click 'Connect Account' and authenticate with your Slack workspace — you'll need to authorize the Pipedream Slack app. Once connected, select the target channel from the dropdown (e.g., #project-updates). Set the 'Message Text' field using values from the previous steps.

  1. 1Click '+' below the filter step
  2. 2Search for 'Slack' and select the Slack app
  3. 3Choose 'Send Message to a Channel' as the action
  4. 4Click 'Connect Account' and authorize the Pipedream Slack app
  5. 5Select the target channel from the 'Channel' dropdown
What you should see: You should see a green 'Connected' badge next to your Slack account and the channel list populated in the dropdown.
Common mistake — Pipedream's Slack integration posts as the 'Pipedream' bot by default. If your Slack workspace restricts bots from posting to private channels, you'll need to manually invite the Pipedream bot to that channel first using /invite @Pipedream inside Slack.
7

Slack Step > Message Text field

Build the Slack Message

In the 'Message Text' field, build your notification using the parsed values from the code step. Use Slack's mrkdwn formatting for emphasis. A solid format: '*{{steps.parse_payload.$return_value.itemName}}* moved from {{steps.parse_payload.$return_value.previousStatus}}{{steps.parse_payload.$return_value.newStatus}} on board *{{steps.parse_payload.$return_value.boardName}}*'. Add the item URL on a new line so team members can click straight into Monday.com. Optionally, set the 'Username' field to 'Monday.com Bot' and add an emoji icon.

  1. 1Click into the 'Message Text' field
  2. 2Type your message template using {{steps.parse_payload.$return_value.fieldName}} references
  3. 3Add the item URL on a separate line
  4. 4Set 'Username' to 'Monday.com Bot' in the optional fields
  5. 5Set 'Icon Emoji' to ':white_check_mark:' or similar
What you should see: The message preview at the bottom of the Slack step shows your formatted text with actual values substituted in from the sample event.
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.
8

Workflow Canvas > Test Workflow button

Test the Full Workflow End-to-End

Click 'Test Workflow' at the top of the canvas. This runs all steps in sequence using the sample event captured in Step 3. Watch each step turn green as it passes. Check your Slack channel — the message should appear within a few seconds. If any step shows a red error badge, click it to see the exact error output and which line failed.

  1. 1Click 'Test Workflow' at the top of the canvas
  2. 2Watch each step execute in sequence
  3. 3Open your Slack channel to confirm the message arrived
  4. 4Click any red step badge to read the error detail
What you should see: All steps show green checkmarks. Your Slack channel shows a formatted message with the correct item name, old status, new status, board name, and a clickable Monday.com link.
Common mistake — If the test passes but the message never appears in Slack, check that the channel you selected in Step 6 matches where you're looking. It's common to select a channel by ID and then look in the wrong channel by name.
Pipedream
▶ Deploy & test
executed
Slack
Monday.com
Monday.com
🔔 notification
received
9

Workflow Canvas > Deploy button (top right)

Deploy the Workflow

Click the 'Deploy' button in the top right of the canvas. Pipedream will register the Monday.com webhook automatically — you don't need to manually paste a URL into Monday.com. The workflow status changes from 'Development' to 'Active'. Go back to Monday.com and change an item status on your target board. The Slack message should appear within 5 seconds.

  1. 1Click 'Deploy' in the top right corner
  2. 2Confirm the workflow status shows 'Active'
  3. 3Go to Monday.com and change a real item status
  4. 4Verify the Slack message arrives in under 10 seconds
What you should see: The workflow status badge shows 'Active' in green. Your live Monday.com board now triggers real Slack notifications on every status change.
Common mistake — Pipedream registers the Monday.com webhook at deploy time. If you later change the board ID in the trigger config without redeploying, the webhook stays pointed at the old board. Always redeploy after changing trigger settings.
10

Workflows > [Your Workflow] > Events tab

Monitor Workflow Runs in the Event Inspector

In the left sidebar, click 'Workflows' and then select your deployed workflow. Click the 'Events' tab to see every run — successes, errors, and filtered-out events. Each row shows the timestamp, trigger payload, and per-step output. This is where you debug any missed notifications. Pipedream retains event history for 30 days on the free tier.

  1. 1Click 'Workflows' in the left sidebar
  2. 2Select your deployed Monday → Slack workflow
  3. 3Click the 'Events' tab
  4. 4Click any individual event row to see the full step-by-step execution log
What you should see: You see a timestamped list of every time the workflow fired, with a green or red badge per run. Clicking a row expands the full payload and each step's input/output.

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

Use Pipedream for this if your team has at least one person comfortable reading Node.js. The webhook trigger is genuinely instant — no polling delay, no 15-minute lag. And the code step gives you full control over the Slack message format, which matters once you have 5 different status columns with different meanings. The one scenario where you'd skip Pipedream: if your whole team is non-technical and needs to modify the notification logic themselves. In that case, Zapier's visual interface wins on maintainability even if it's technically inferior.

Cost

Pipedream's free tier gives you 10,000 credits per month. Each workflow run costs roughly 3–5 credits depending on how many steps execute (trigger + code + filter + Slack = 4 steps = ~4 credits per run). At 100 status changes per day, that's 400 credits/day or about 12,000 credits/month — just over the free tier. You'd need the Basic plan at $29/month. Make's free tier allows 1,000 operations/month with the same workflow costing 3–4 operations per run, so Make actually goes paid faster. Zapier's free tier caps at 100 tasks/month, which is almost nothing. Pipedream is the cheapest option at any meaningful volume above the free tier.

Tradeoffs

Zapier has a pre-built 'Monday.com + Slack' template that takes 4 minutes to set up with zero code — it wins on speed for basic use cases. Make's scenario builder gives you better visual debugging when a specific status transition isn't routing correctly. n8n, if self-hosted, costs nothing at any volume and has a Monday.com node with full API access. Power Automate has a Monday.com connector but it's polling-based (15-minute minimum delay), which defeats the purpose of status notifications. Pipedream is still the right call here because the webhook is instant, the Node.js step handles Monday's quirky nested JSON payload cleanly, and the $29/month cost is lower than Zapier's equivalent tier ($49/month for 2,000 tasks) once you're past the free threshold.

Three things you'll hit after setup. First, Monday.com's webhook payload format changed in 2023 — the status value is now a JSON-stringified object inside the payload, not a plain string. Any tutorial written before mid-2023 will have broken parsing code. Use JSON.parse() as shown in the Pro Tip. Second, Monday.com doesn't include the board name in the webhook payload — it only sends the boardId. If you want the board name in your Slack message, you need a separate Monday.com API call (boards query via GraphQL) to resolve the ID to a name, which adds one more step and one more API call per notification. Third, if the Monday.com user who authenticated the Pipedream connection leaves your organization and their account is deactivated, the webhook silently stops working with no error. Set a calendar reminder to rotate the connected account to a service account or a permanent team member.

Ideas for what to build next

  • Add Deadline Alerts with a Scheduled TriggerCreate a second Pipedream workflow on a daily schedule that queries the Monday.com API for items with due dates in the next 24 hours and posts a digest to Slack. This catches deadline-based notifications that webhooks don't cover.
  • Route Alerts to Different Channels by StatusAdd conditional logic in the Node.js step to map specific statuses to specific Slack channels — for example, 'Blocked' goes to #engineering-escalations while 'Done' goes to #wins. This takes about 10 extra lines of code in Step 4.
  • Add a Monday.com Item Update When Slack Gets a ReplyBuild a reverse workflow: when someone replies to the Slack notification thread, add a comment on the Monday.com item automatically using the Monday.com API's create_update mutation. This keeps Monday.com and Slack in sync without anyone having to context-switch.

Related guides

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