Native channel: Webhooks

Send every alert as a JSON payload to any URL you own

The native webhook channel POSTs a structured JSON body the instant a monitor fails, and again when it recovers. Route it into your own services, a queue, a logger, or any tool that speaks HTTP. No middleware, no polling.

Works on every paid plan. 14-day trial, no card required.

POST /pulsestack-hook
200 OK
Content-Type: application/json
{
  "monitorName": "Checkout API",
  "monitorType": "api",
  "monitorUrl": "https://api.acme.io/v2/checkout",
  "status": "down",
  "httpCode": 503,
  "responseTime": 8412,
  "location": "London, UK",
  "timestamp": "2026-07-25T09:41:07Z"
}
Delivered in under a second from the observing location.
8
native alert channels
8
monitor types supported
1
generic webhook, any URL
2
events: failure and recovery

Connect a webhook in four steps

The generic webhook channel needs nothing more than a URL that accepts a POST. If your endpoint can read JSON, you are ready.

1

Add the channel

In your account, open Alert Channels and choose Webhook as a new destination.

2

Paste your URL

Enter the HTTPS endpoint that will receive the POST. Add a secret token if you want to verify it.

3

Attach to monitors

Select which monitors should notify this webhook. Mix and match across any of the 8 types.

4

Set the threshold

Choose how many consecutive failures must occur before the webhook fires. Save and you are live.

What every payload carries

The body is deliberately flat and predictable so your handler can act on it without guesswork. Here is every field you can rely on.

FieldTypeMeaning
monitorNamestringHuman label you gave the monitor.
monitorTypestringhttp, keyword, tcp, port, api, heartbeat, dns or domain.
monitorUrlstringThe endpoint or host being watched.
statusstringdown on failure, up on recovery.
httpCodenumberThe status code returned, where applicable.
responseTimenumberMilliseconds for the failing or recovering check.
locationstringWhich monitoring location observed the event.
timestampstringISO 8601 UTC time of the state change.

Failure out, recovery in

Two events share one shape. The only difference is the status field, so a single handler covers both the incident and the all-clear.

Failure event
{
  "monitorName": "Marketing Site",
  "monitorType": "http",
  "status": "down",
  "httpCode": 502,
  "responseTime": 15000,
  "location": "Frankfurt, EU",
  "timestamp": "2026-07-25T09:41:07Z"
}
Recovery event
{
  "monitorName": "Marketing Site",
  "monitorType": "http",
  "status": "up",
  "httpCode": 200,
  "responseTime": 240,
  "location": "Frankfurt, EU",
  "timestamp": "2026-07-25T09:52:33Z"
}

Everything the webhook channel includes

Native generic webhook to any HTTPS URL
Structured JSON body, flat and predictable
Fires on failure and on recovery
Configurable consecutive-failure threshold
Monitor name, type and URL in every payload
HTTP code and response time included
Observing location stamped on each event
ISO 8601 UTC timestamps
Works across all 8 monitor types
Multiple webhooks per account
Route into Zapier or Google Chat via their catch-hooks
Combine with the other 7 native channels

Eight native alert channels

Webhooks are one of eight channels built directly into PulseStack. Use them alone or alongside any of the others on the same monitor.

EmailSMSSlackMicrosoft TeamsDiscordPagerDutyTelegramWebhooksyou are here

SMS and voice are available as an add-on on the Team and Enterprise plans. Zapier and Google Chat connect through this webhook channel rather than as native integrations.

Every monitor type can fire a webhook

Whatever you watch, the same JSON contract applies. Attach the webhook channel to any of these.

HTTP / HTTPS

Status codes, response time and content checks for any URL.

Keyword

Confirm a phrase is present, or fire when it disappears.

TCP Ping

Reachability checks for any host by ICMP-style probing.

Port

Watch a specific TCP port on SMTP, database or custom services.

API

Multi-step requests with header, body and JSON assertions.

Heartbeat

Cron and background jobs check in, silence raises an alert.

DNS

Track A, AAAA, MX, CNAME and TXT records for drift.

Domain Expiry

Advance warning before a domain lapses and traffic dies.

What teams build with webhooks

Feed your own on-call tool

Pipe events into an internal router that already knows who is on rota, and let it decide who to page.

Log every state change

Append each payload to a data store or observability pipeline to build your own uptime history and audit trail.

Trigger automated remediation

Kick off a script that restarts a service, flushes a cache or fails over, the moment a down event lands.

Bridge to Zapier

Point the webhook at a Zapier catch-hook and branch into thousands of downstream apps without native support.

Post into Google Chat

Use a Google Chat incoming webhook URL so alerts appear in the room your team already lives in.

Update a custom status board

Have your receiver flip a tile on an internal dashboard so the whole team sees state without logging in.

Webhooks on every paid plan

Starter
£15 / mo

10 monitors, 60s checks, all monitor and alert types.

Pro
£39 / mo

50 monitors plus SSL, DNS and domain insights.

Team
£79 / mo

100 monitors, server diagnostics and 3 seats.

Enterprise
£149 / mo

200 monitors, 30s checks and 5 seats.

The Free plan covers 5 HTTP monitors with email alerts. Every paid plan starts with a 14-day trial and needs no card up front.

Webhook questions, answered

What does PulseStack send to my webhook URL?

On each alert PulseStack POSTs a JSON payload containing the monitor, its up or down status, the observed HTTP code and the response timing. You can parse that body and route it into any system you run.

When does the webhook fire?

Alerts fire on both failure and recovery, after the number of consecutive failed checks you configure. That consecutive-failure threshold keeps noise down so a single blip never triggers a page, while a genuine outage still alerts quickly.

Can I connect services that PulseStack does not natively support?

Yes. Services such as Zapier or Google Chat are not native PulseStack integrations, but they accept incoming webhooks. Point the PulseStack Webhook alert at their incoming webhook URL and the same JSON payload is delivered there.

Which monitor types can use a webhook alert?

All of them. The six core monitor types - HTTP, Keyword, TCP Ping, Port, API and Heartbeat - plus DNS and Domain Expiry monitors can all route their alerts through the Webhook channel.

Is the Webhook alert available on the free plan?

Webhooks are one of the eight native alert channels. The free plan includes five monitors with HTTP checks, and paid plans add all monitor types and a 14-day trial so you can wire webhooks into your full setup.

Do I need any middleware to receive webhooks?

No. You only need a URL that accepts an HTTP POST, such as a serverless function or an internal API route. PulseStack delivers the payload directly with no polling or extra infrastructure in between.

Wire your alerts into anything that speaks HTTP

Add the webhook channel, attach it to your monitors and start receiving structured JSON on failure and recovery. It takes minutes.