Skip to content
ScaledPapers

Free tools / Webhook tester

Webhook tester

Preview a Slack, Discord, or PagerDuty message, edit the JSON, and copy a curl command that sends it. Formatting and signing stay in your browser.

Payload

not uploaded
Destination
Example payload

https://hooks.slack.com/services/…

Preview

rendered locally
curl

      

Slack, Discord, and PagerDuty block a browser POST. Copy curl and run it to deliver the message.

Payload comparison

DestinationEndpointBodyAuthOn resolve
Slackhttps://hooks.slack.com/services/…{"text"}URL onlyA second message
Discordhttps://discord.com/api/webhooks/{id}/{token}{"content"}URL onlyA second message
PagerDutyhttps://events.pagerduty.com/v2/enqueueEvents API v2Routing key in the bodyevent_action: resolve with the same dedup_key. Updates are not sent.
Pushoverhttps://api.pushover.net/1/messages.jsonForm fieldsApp token and user keyPriority 0, no retry
WebhookYour public https URL, or http://127.0.0.1:8787/hookEvent JSONOptional X-ScaledPapers-SignatureSame shape with event: resolved

Frequently asked questions

Why does Send test webhook fail for Slack, Discord, or PagerDuty?
Those hosts do not return Access-Control-Allow-Origin for a page on another site, so the browser blocks the response. The curl command is the same POST without that restriction. Paste it into a terminal to deliver the test.
How does PagerDuty dedup_key close an incident?
The open alert uses event_action trigger and a dedup_key of the outage id or the incident id. Recovery sends resolve with that same key, which PagerDuty matches to the open alert. A different key opens a second incident.
Is this the same as Slack /feed subscribe?
No. /feed subscribe is how a visitor follows a public status page's RSS feed inside Slack. The Slack destination here is an incoming webhook for the workspace, the same one ScaledPapers alerts use when a check or incident fires.
Which URLs can I send to?
Slack, Discord, and public webhooks must be https and must not include a username or password. Private addresses are rejected. The request does not follow redirects. ScaledPapers sends User-Agent: ScaledPapersAlerts/1.0. A browser cannot set that header, so only the copied curl command includes it.
How do I test a payload on localhost?
Run npm run webhook-catcher. On the Webhook tab, choose Use local catcher and send. The catcher listens on 127.0.0.1:8787, answers the browser preflight, and prints the body and X-ScaledPapers-Signature in that terminal. Other private addresses stay rejected.
Does the JSON formatter upload my payload?
No. Parsing, formatting, the preview, and the HMAC all run in the page. A test send is a request from your browser to the URL you typed. Leave the URL empty and nothing is sent.

Send these when a check actually fails

ScaledPapers confirms failures before it alerts, then posts this payload to Slack, Discord, PagerDuty, Pushover, or a signed webhook. Email alerts and 5 checks are free. Slack, Discord, PagerDuty, and webhooks are on Pro.