Skip to main content
A webhook subscription sends each published change of a public status page to an HTTPS endpoint as a JSON POST request. Use it to mirror the status of a service into a chat room, a ticketing system, or an internal status board. Read Status pages first for components, incidents, maintenance, and the subscriber management view.

How a subscription works

1

Register the endpoint

Submit the endpoint URL on the public page or over the API. The subscription starts as pending.
2

Receive the confirmation request

MoleSignal sends one status_page_subscription_confirmation request to the endpoint. The endpoint must answer with a 2xx status, otherwise the registration fails.
3

Confirm with the token

Open the confirm_url from the request, or send the token to the confirmation endpoint. The subscription becomes active.
4

Receive updates

Each change published after the confirmation is delivered as one request. Changes published before the confirmation are not sent.

Endpoint requirements

MoleSignal resolves the host again for every delivery and applies the same address rules each time.

Subscribe

On the public page, select Subscribe, set Delivery channel to Webhook, enter the endpoint URL, and select Send confirmation. Over the API, send the request to the origin that serves the status page:
To hear only about some components, add component_ids with the id of each component, as the public page lists them at GET /api/v1/public/status-pages/<slug>. Leave it out, or send an empty list, for the whole page. A group is not a component that can be chosen: name the components in it. The call needs no authentication. A successful registration returns 202 Accepted:
Subscription links are built from http.external_url, or from the custom domain of the page when one is active. Registration fails with 503 while http.external_url is empty.

Request format

Every request to the endpoint has the same shape. Requests carry no signature header. To recognize genuine requests, include a hard-to-guess value in the path or the query string of the registered URL, and reject requests that lack it. The management view shows a webhook target as scheme and host only, such as https://hooks.example.com/***. Route on type. Ignore unknown fields and unknown type values, so that the endpoint keeps working when a payload gains a field.

Confirmation request

MoleSignal sends this payload once per registration:
Confirm the subscription by opening confirm_url, or by sending the token:
A confirmed subscription returns 200 OK:
A token that is unknown, replaced by a later registration, or already used to unsubscribe returns 400 with the error code invalid_argument.
Store the token. Update payloads do not repeat it, and it is the only credential that lets the endpoint owner end the subscription.

Manage request

When an endpoint that is already active is registered again, MoleSignal sends it the link that manages the subscription instead of a new confirmation, at most once every 10 minutes:
The fields are those of the confirmation request without confirm_url.

Update payloads

All timestamps are integers in microseconds since the Unix epoch, in UTC. Component names, incident titles, and messages are sent exactly as the page team wrote them and are not translated. A subscription that chose components receives only the updates that name one of them. An update published with Notify subscribers off sends nothing. Every update payload also carries the links of the subscription:

Incident and maintenance updates

MoleSignal sends incident_update for every update published on an incident or on maintenance. Planned maintenance uses the same payload with incident_kind set to maintenance. Drafts send nothing. An incident update:
A maintenance announcement:
For maintenance, started_at is the planned start time, in every update. It changes when the team reschedules the maintenance. After the work starts it still holds the planned time: the actual start is the occurred_at of the in_progress update. Maintenance has no planned end time, so ended_at is null until the work is completed or cancelled.
With automatic start on, which is the default, MoleSignal publishes the in_progress update at the planned start time and sends it as an incident_update. With automatic start off, nothing is sent at that time: the next request follows the next update that the team publishes.

Maintenance reminders

MoleSignal sends maintenance_reminder before scheduled maintenance starts. The lead time is set on each maintenance and is 60 minutes by default. A reminder is not an update: it does not appear in the timeline of the maintenance.
One reminder is sent for each planned start time, so rescheduled maintenance is reminded of again before its new start time. No reminder is sent when the maintenance was announced or rescheduled after its reminder time, when its lead time is 0, or when it has left the scheduled status.

Component status changes

MoleSignal sends component_status_changed when the status of a component that the page shows is changed. The status a component is created with sends nothing. Hidden and archived components send nothing.
An incident does not send component_status_changed for the components it affects. The incident_update payload names them in component_names.
A component that is hidden when a change is published is not named to subscribers. Its status changes send nothing, and incident_update leaves it out of component_names. An incident or maintenance that affects only hidden components is still sent, with an empty component_names. Hiding or showing a component sends nothing by itself.

Postmortems

MoleSignal sends postmortem_published when the postmortem of a resolved incident is published, or its revision is published, with Notify subscribers on.
page_name, page_slug, started_at, ended_at, and component_names are as in incident_update.

Delivery and retries

A retried delivery repeats the same body. Payloads carry no delivery identifier, so deduplicate on type, incident_id or component_id, and occurred_at. Order the updates of one incident by occurred_at. Updates are no longer queued for the endpoint once the subscription ends, the page is archived, or the page is switched to private. Page managers find each delivery under Status pages → Subscribers → Deliveries, with its attempts, state, and last error. Delivered and failed records are removed after the delivery retention of the page: 30, 60, 90, 180, or 365 days.

Unsubscribe

Open unsubscribe_url from the confirmation request, or send the token:
The call returns 200 OK with "accepted": true. Deliveries that are still waiting for the endpoint are cancelled. A user with status_pages.manage can also revoke a subscriber under Status pages → Subscribers, or select Resend confirmation for a pending one. Resending issues a new token.

Status pages

Create pages, publish incidents and maintenance, and manage subscribers.

Webhook notification connectors

Send alert notifications to Slack, Lark, or a generic webhook.
Last modified on October 26, 2026