Prometheus + PingParrot

Prometheus alerts that wake
the right person, every time.

Connect Prometheus Alertmanager to PingParrot using a webhook receiver. When an alert fires, PingParrot pages your on-call team with repeating push notifications, email, and optional SMS — until someone acknowledges.

Get Your API Key Free View API Docs

Connect Alertmanager in 3 steps

1

Create a PingParrot account and get your API key

Sign up free, go to API Keys in the sidebar, and create a key for Prometheus. You'll use it in the Alertmanager config below.

Create free account →
2

Add a webhook receiver to alertmanager.yml

Add PingParrot as a receiver in your Alertmanager configuration. The API key goes in the X-Api-Key header:

receivers:
  - name: 'pingparrot'
    webhook_configs:
      - url: 'https://pingparrot.app/api/external/pages'
        http_config:
          headers:
            X-Api-Key: 'YOUR_API_KEY'
            Content-Type: 'application/json'
        send_resolved: false

route:
  receiver: 'pingparrot'
  group_wait: 30s
  group_interval: 5m

PingParrot reads the alertname and summary labels automatically from the Alertmanager payload.

3

Or call the API directly from a recording rule or script

Prefer to trigger PingParrot directly from a script or CI job? Use the REST API to send a page with full control over subject, message, priority, and target:

curl -X POST https://pingparrot.app/api/external/pages \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "Prometheus: InstanceDown on prod-db-01",
    "message": "Target prod-db-01:9090 has been unreachable for 5m.",
    "priority": "critical",
    "target": "oncall",
    "schedule_id": 1
  }'

Use "target": "oncall" with "schedule_id" to page whoever is currently on-call, or "target": "group" with "group_id" for a fixed group.

Use Prometheus labels to route alerts

Add PingParrot labels in your alert rules to control which group or schedule gets paged — no routing logic needed in PingParrot itself.

groups:
  - name: production
    rules:
      - alert: HighErrorRate
        expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.05
        for: 2m
        labels:
          severity: critical
          pingparrot_group_id: "1"       # page group 1
          pingparrot_priority: "critical"
        annotations:
          summary: "Error rate above 5% for 2 minutes on {{ $labels.instance }}"

PingParrot reads pingparrot_group_id, pingparrot_schedule_id, and pingparrot_priority labels automatically from Alertmanager payloads.

What PingParrot adds to your Prometheus stack

Prometheus and Alertmanager handle detection. PingParrot handles the human delivery layer.

Repeating push until acked

Push notifications fire every 30 seconds until someone taps Acknowledge. Not just a one-shot ping — it keeps going until a human responds.

On-call scheduling

Set up rotation schedules and let PingParrot route each Alertmanager page to whoever is on-call right now — no manual list updates needed.

Full audit trail

Every page is logged — who was paged, what time, when acknowledged, and by whom. Useful for post-incident review and compliance.

Add PingParrot to your Prometheus stack

Free for up to 3 pagers. No credit card required.

Grafana Integration → vs PagerDuty → vs BetterStack → Generic Webhook → Full API Docs →