← Knowledge hub
Tutorialby Uptime Room· September 24, 2026· 6 min read

Zapier Webhook Alerts: Fan Out One Monitor Alert

A Zapier webhook catches one alert from your monitor and fans it out to SMS, tickets or sheets. Here is the setup, the payload and what the extra hop costs.

A Zapier webhook turns one alert from a monitor into as many downstream actions as you need. Your check fails, a JSON body lands on a Catch Hook URL, and Zapier fans it out to SMS, WhatsApp, a Jira ticket or a spreadsheet row. It is the escape hatch for every tool with no direct integration.

What a Zapier webhook is, in monitoring terms

Two different things share the name, and picking the wrong one wastes an afternoon.

Catch Hook is an inbound trigger. Zapier hands you a unique URL, your monitor POSTs to it, and the Zap runs. Per Zapier's own webhook documentation, it accepts GET, PUT or POST, parses the request body into fields, and fires immediately rather than waiting for a poll. The maximum trigger payload is 10MB as of September 2026, which no alert will ever approach.

Webhooks by Zapier as an action is the opposite direction: a Zap that has already triggered sends an HTTP request somewhere else. You want the first one. The monitor is the thing that knows something broke, so the monitor is the trigger.

One constraint to price in before you build. That documentation lists the Catch Hook trigger as unavailable on the Free plan and available on Professional, Team and Enterprise, as of September 2026.

When should an alert go through Zapier at all?

Not by default. A direct integration beats a routed one whenever it exists, because it removes a moving part from the path between a failed check and a human. If your destination is Slack, Teams, Discord, PagerDuty or email, wire it directly and stop.

The Zapier webhook earns its place in three situations. The first is fan-out, where one alert has to reach four systems with different formats. The second is transformation, where the receiving tool needs fields your monitor does not send, such as a customer ID looked up from a sheet. The third is the long tail, meaning the CRM or ticketing system nobody builds a native integration for.

In our testing, the added hop costs one to three seconds end to end, which is noise against a check interval measured in tens of seconds. The reliability question matters more than the latency one. You have introduced a dependency that can have its own bad day, and it now sits between a broken service and the person who fixes it.

Wiring the channel

Three steps, and the middle one is the only one that can go wrong.

  1. Create a Zap, choose Webhooks by Zapier as the trigger, pick Catch Hook, and copy the URL from the Test tab.
  2. Register that URL as a webhook channel on the monitoring side.
  3. Fire a real alert at it before you trust it.

Register the channel against the channels endpoint. The request takes a type, an optional name and a config block whose keys depend on the type.

curl -X POST https://uptimeroom.com/api/v1/channels \
  -H "Authorization: Bearer urm_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "type": "webhook",
    "name": "zapier fan-out",
    "config": {
      "url": "https://hooks.zapier.com/hooks/catch/123456/abcdef/"
    }
  }'

The current config keys for every channel type are listed in the REST API reference, which is worth opening rather than guessing at. Then attach the channel to a monitor and let a real state change exercise it.

curl -X POST https://uptimeroom.com/api/v1/monitors \
  -H "Authorization: Bearer urm_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "checkout api",
    "type": "http",
    "target": "https://example.com/health",
    "intervalSec": 60,
    "regions": ["london", "singapore"],
    "alertAfterCycles": 2
  }'

Note target rather than url on a monitor, which is the field name that trips people coming from other tools.

Shaping the payload so the Zap can branch

Zapier parses whatever arrives and offers each key as a field. That makes the first real alert the most useful test you will run, because the Zap editor shows you exactly what it received.

Two rules keep the automation sane. Branch on the state transition, never on the check. A monitor checking every 60 seconds produces 43,200 events a month, and a Zap that runs on all of them will exhaust a task quota in days. You want the handful of events where a monitor moved between up and down.

Then filter before you act. Put a Zapier Filter step immediately after the trigger so only the transitions you care about continue, and use Paths when severity should choose the destination. A certificate expiring in 20 days belongs in a ticket queue. A checkout endpoint returning 503 from two regions belongs on a phone.

Keep the payload flat and stable. Nested objects are addressable in Zapier but awkward, and renaming a key later breaks every step that referenced it.

What the extra hop costs

Zapier meters by task, where a task is roughly one action step that runs. The Zapier pricing page lists 100 tasks a month on Free and two-step Zaps only, with paid tiers scaling from there, as of September 2026. A four-action fan-out consumes four tasks per alert, so a noisy month is a billing event as well as a morale event.

One figure on that page is routinely misread. The polling times it advertises, from 15 minutes down to 1 minute depending on plan, apply to polling triggers that check an app for new data. A Catch Hook is not polled. Your alert arrives when you send it, on any plan that includes the trigger.

We prefer to keep one direct channel alongside the Zapier webhook for anything that pages a person. Route the ticket creation, the status spreadsheet and the customer email through the automation. Route the thing that wakes somebody up straight to its destination, so a third-party outage cannot swallow it.

Common mistakes

Sending every check result. The Zap should run on transitions, not on heartbeat traffic. This is the fastest way to burn a task quota and to train everyone to mute the channel, which alert fatigue covers in detail.

No dead-end handling. Zaps fail silently by default. Turn on Zapier's error notifications, and confirm the Zap is switched on after every edit, because leaving it off is the single most common way Zapier alerts stop arriving.

Using Zapier where a direct webhook would do. If the destination accepts an inbound JSON payload itself, point the monitor at it. Compare against the direct route described in Slack webhook alerts before adding a layer.

Testing with a synthetic payload only. A hand-built sample from the Zap editor rarely matches the real body. Pause a monitor, let it recover, and build the Zap against what genuinely arrived.

Start with one Zap, one filter and one destination, then widen it once you have watched a real incident travel the whole path. A Zapier webhook is worth adding when it removes manual work from an incident rather than adding a step to it. Monitors, channels and the content API are all available on paid plans, and the pricing page lists what each tier includes as of September 2026.

FAQ

What is a webhook alert?

An HTTP request your monitoring tool sends the moment a check changes state, carrying the details as a JSON body. Unlike an email it is machine readable, so whatever receives it can branch on the content. That is what makes it the right input for an automation platform rather than for a person.

Does Zapier have webhooks?

Yes, through the Webhooks by Zapier app, which works in both directions. Catch Hook is an inbound trigger that gives you a unique URL to POST to, and it fires immediately rather than polling. There is also an outbound action for sending requests from a Zap. Zapier's documentation lists Catch Hook as unavailable on the Free plan as of September 2026.

What are the downsides of using webhooks?

There is no built-in retry contract, so a receiver that is down when you fire loses the message unless the sender retries. Delivery is unauthenticated unless you add a shared secret or signature. And each new hop is a dependency that can fail during the same incident you are trying to report.

Is a webhook just an API?

It is an API call in reverse. With a normal API your code asks a server for data whenever it wants it. With a webhook the server calls your endpoint when something happens, so you learn about the event without polling. The transport is identical, the direction and the trigger are not.

How do I stop a Zap running on every check?

Send only state transitions rather than every check result, then add a Filter step directly after the Catch Hook trigger so only the transitions you care about continue. A monitor on a 60-second interval produces over 43,000 events a month, and Zapier bills by task, so filtering early is a cost control as well as a noise control.

Related reading