A practical field guide from Automation Ace.
How to Trigger a Zap from a Monday.com Automation Using a Webhook
Monday.com's native Zapier integration triggers on new items and status changes, but it polls on a schedule rather than firing instantly. Monday.com also has its own automation engine with a "Send a webhook" action that fires the moment a condition is met. Connecting that to a Zapier Catch Hook gives you real-time, event-driven Zap triggers from any Monday automation recipe — status changes, date arrivals, item creation, column value changes, or any other condition Monday supports natively.
When to Use This Pattern
Use the Monday webhook-to-Zapier approach when:
- You need an instant trigger (not polling-based) from a Monday event
- The Monday event you want isn't supported by the standard Zapier Monday trigger
- You already have a Monday automation recipe doing other things and want to extend it to Zapier
- You want to send specific column values as structured data to Zapier, rather than relying on Zapier to map them from the trigger
Step 1: Create the Zapier Catch Hook Trigger
- In Zapier, create a new Zap and select Webhooks by Zapier as the trigger app
- Choose Catch Hook as the trigger event
- Complete the trigger setup — Zapier provides a unique webhook URL (e.g.,
https://hooks.zapier.com/hooks/catch/XXXXXX/YYYYYYY/) - Copy this URL — you'll paste it into the Monday automation next
Step 2: Add a Webhook Action to a Monday.com Automation
- In Monday.com, open the board where you want the trigger to originate
- Click Automate in the top right, then Add automation
- Build or edit an automation recipe. The "When" (trigger) can be anything Monday supports: status changes, item created, date arrives, column value changes, etc.
- In the "Then" (action) section, search for and add Send a webhook
- Paste your Zapier Catch Hook URL into the webhook URL field
- Set the Method to POST
Step 3: Configure the Webhook Body
The Monday "Send a webhook" action lets you define a custom JSON body. Use Monday's variable picker to insert dynamic column values from the board item. A useful body structure:
{
"item_id": "{Item ID}",
"item_name": "{Item Name}",
"board_id": "{Board ID}",
"status": "{Status column}",
"assigned_to": "{Person column}",
"due_date": "{Date column}",
"notes": "{Text column}"
}
Replace the {Column name} placeholders using Monday's variable picker — click inside the body field and select the columns you want to include. Only include the fields your downstream Zap actually needs.
Step 4: Test the Webhook Connection
- Back in Zapier, click Test trigger on the Catch Hook step — Zapier is now listening
- In Monday.com, trigger the automation condition manually (change a status, create a test item, etc.)
- Zapier should receive the webhook payload and display the field values from the JSON body you configured
- Map those fields in subsequent Zap steps
Passing Column Values: What Monday Supports
Monday's webhook action variable picker includes most standard column types. Some notes on what to expect:
- Status columns — sends the label text (e.g., "Done", "In Progress"), not an internal ID
- Person/People columns — sends the name(s) of the assigned user(s)
- Date columns — sends the date value in ISO format
- Text and Long Text columns — sends the raw string value
- Numbers columns — sends the numeric value as a string in the JSON body
- Mirror columns and Formula columns — may not be available in the variable picker; use a regular column or extract via Monday's API if needed
Handling the Zapier Side: Parsing the Payload
The Catch Hook trigger receives the JSON body as individual mapped fields. In downstream Zap steps, you access them as item_id, item_name, status, etc. — whatever keys you defined in the Monday body.
If you need to transform the data before using it — convert a date format, split an assigned name into first/last, or do conditional routing based on status — add a JavaScript Code step after the trigger. For status-based routing:
const statusMap = {
'Done': { action: 'close', notify: 'false' },
'In Progress': { action: 'update', notify: 'true' },
'Stuck': { action: 'escalate', notify: 'true' }
};
const status = inputData.status;
const mapped = statusMap[status] || { action: 'log', notify: 'false' };
output = {
action: mapped.action,
should_notify: mapped.notify,
item_id: inputData.item_id,
item_name: inputData.item_name
};
Multiple Monday Automations, One Zap
Multiple Monday automations on different boards — or different conditions on the same board — can all point to the same Zapier Catch Hook URL. The Zap receives all of them. Include a source or board_id field in the JSON body to identify which Monday automation sent the request, then route logic in the Zap based on that value.
Deduplication Note
If the same Monday automation fires twice with identical payload values (e.g., a status is set to "Done" twice in quick succession), Zapier's webhook deduplication may skip the second run. Include a timestamp or unique item field in the body to prevent this. See webhook trigger deduplication for the pattern.
Monday.com's "Send a webhook" automation action is the most reliable way to trigger a Zap in real time from a Monday board event. It fires the moment the automation condition is met — no polling, no delay — and lets you control exactly which column values reach Zapier via the JSON body. Pair it with a Zapier Catch Hook trigger and a Code step for any transformation needed before the downstream actions run.
For general webhook trigger patterns in Zapier, see passing data through Webhooks in Zapier. For sending webhooks from Airtable automations to Zapier, see triggering Zaps from Airtable automations. For conditional routing logic in the receiving Zap, see if/else and switch statements in Zapier Code steps. For help building a Monday.com to Zapier integration, talk to Automation Ace.
Disclaimer: This article may include links to apps, products, or services. Some links may be affiliate links, which means Automation Ace may earn a commission at no extra cost to you.