Prometheus Alertmanager
Webhook and HTTP3 steps
Connect Prometheus Alertmanager to PagerDeck
Alertmanager sends its own JSON, and PagerDeck understands it directly. You only enter a URL and the ingest key.
On this page
Can Alertmanager send directly to PagerDeck?
Yes. Enter the address https://api.pagerdeck.com/v1/integrations/alertmanager in a webhook_config and set the ingest key as a Bearer header in http_config. You do not need a payload template. PagerDeck reads summary, description, the severity label and the generatorURL from every alert and closes the incident when Alertmanager reports it as resolved.
- Endpoint
- POST https://api.pagerdeck.com/v1/integrations/alertmanager
- Format
- Alertmanager webhook, version 4
- Access
- Bearer header with the ingest key
- Resolving
- send_resolved closes the incident
- Limits
- 100 alerts per request, request 64 KiB
Prerequisites
- A PagerDeck account with at least one paired device, so alerts have somewhere to land.
- A source in the dashboard with its credentials, see the first step below.
- Alertmanager with a webhook receiver. The template is no longer needed.
How to set it up
Create a source
Create a source with the slug alertmanager and copy the ingest key.
Add the receiver
The receiver needs only the URL and the Authorization header. send_resolved is on by default for webhook_configs, and that is what closes the incident again. The urgency comes from the severity label of your alert rules.
yaml route: receiver: pagerdeck receivers: - name: pagerdeck webhook_configs: - url: https://api.pagerdeck.com/v1/integrations/alertmanager send_resolved: true http_config: authorization: type: Bearer credentials: src_live_REPLACE_METest with amtool
A synthetic alert travels the whole way to your phone. Before it is sent, your route's group_wait has to pass.
bash amtool alert add PagerdeckTest severity=warning \ --annotation=summary="Test alert from Alertmanager" \ --alertmanager.url=http://localhost:9093
Payload
PagerDeck reads these fields on POST /v1/push. Only title is required, unknown fields are ignored.
{
"title": "Disk almost full on web-01",
"body": "/ is 94% used",
"severity": "error",
"tags": [
"prod",
"disk"
],
"dedup_key": "web-01:disk",
"url": "https://status.example.com/web-01",
"ttl": "30m"
}- title
- Required, at most 250 bytes.
- body
- Body text, at most 8 KiB.
- severity
- info, warning, error or critical. Without it the source default applies.
- tags
- At most 20, 64 bytes each.
- dedup_key
- Keeps an incident together until it is resolved.
- url
- A link for the app, http and https only.
- ttl
- Delivery deadline and automatic resolve, for example 30m.
Test it
Send a test alert straight to the API after setting PAGERDECK_KEY to your key. If it shows up in the app under your source, key and source are right and any problem sits in the sender configuration.
curl -sS -X POST https://api.pagerdeck.com/v1/push \
-H "Authorization: Bearer $PAGERDECK_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"PagerDeck test","body":"If you read this, the key works.","severity":"warning"}'What the rules do with it
The sender proposes an urgency, your rule chain decides the alert level. This rule raises errors from the source alertmanager to critical and repeats until you acknowledge. Use the slug of your own source.
{
"enabled": true,
"stop": false,
"when": {
"source": [
"alertmanager"
],
"severity_at_least": "error"
},
"then": {
"level": "critical",
"repeat": {
"every": "5m",
"until": "ack",
"max": 6
}
}
}- Set the volume
- By source, title pattern, tags and time of day you can set a level from silent to critical.
- Repeat until acknowledged
- A rule repeats an alert at a fixed interval until you acknowledge it.
- Escalate
- If nobody reacts, PagerDeck notifies another address after a deadline.
What you should know
- The severity label is mapped to info, warning, error or critical, including common values such as page, high, crit, minor or none. If it is missing or the value is unknown, the alert arrives as warning.
- Every alert is its own incident with the key am:fingerprint. If Alertmanager repeats the same group, it stays one incident.
- Grouping, silences and inhibit rules stay in Alertmanager. PagerDeck then decides how loud an alert reaches you.
- A request takes at most 100 alerts. For very large groups, group_by with more labels helps.
Troubleshooting
When the API answers with a status code, it usually names the cause already.
- 202
- Accepted and stored. This is not an error, delivery follows.
- 400
- The input is invalid, for example a title over 250 bytes or malformed JSON. The message field gives the reason.
- 401
- The key is missing, unknown or expired. Check the Authorization: Bearer header and that the key was copied completely.
- 402
- The account may not send. Nothing is wrong with the connection, check the plan and billing in the dashboard.
- 413
- The request is larger than 64 KiB. Limit the amount per request.
- 429
- Sent too fast or quota used up. The Retry-After header says when to continue.
Frequently asked questions
- Do I have to rebuild the payload with payload?
- No. The endpoint accepts Alertmanager's default format. A template that builds title and severity is no longer needed.
- Are resolved alerts closed in PagerDeck?
- Yes. When Alertmanager reports an alert as resolved, PagerDeck closes the incident with the same key am:fingerprint. A resolved alert without an open incident is discarded and is not an error.
- Can I use Alertmanager's Pushover integration?
- No. pushover_configs always calls Pushover's address and cannot be changed. Use the webhook_config above instead.
- I use Grafana Alerting instead of Alertmanager. What now?
- The same address works for Grafana's webhook as well. See the Grafana guide.
Put Alertmanager behind your rules
Create a source, add the receiver, test with amtool. 14 days, no payment method needed.
Last reviewed: October 2026. PagerDeck, a product of Gonzi Tech UG (haftungsbeschränkt)
Product and company names mentioned are trademarks of their respective owners. PagerDeck is not affiliated with, sponsored or endorsed by them. Details in the imprint.