All integrations

Grafana

Infra alerts - CPU, error rate, latency thresholds.

LiveWebhooksigned URL
alert (warning) Live Activity preview
metric threshold

Grafana's unified alerting (the modern "Grafana Alerting" replacing the old per-panel alerts) sends notifications through Contact Points. Webhook is one of the built-in contact point types. Chirp's inbound normalizer recognizes Grafana's payload format and pulls the alert name, summary, and severity out for a push notification.

Most useful for infra alerts: CPU thresholds, error rate spikes, latency SLO violations, missing-data alarms. Pair with Grafana's notification policies to route only paging-worthy alerts to Chirp (and let the lower-severity stuff go to Slack).

Prerequisites

  • A Grafana instance (Cloud or self-hosted) with Alerting enabled.
  • A Chirp inspector / webhook URL.

Setup

  1. 1

    Open Contact Points

    Grafana → Alerting → Contact Points → "New contact point". (Self-hosted: same path; older versions had this under Alerting → Notifications.)

  2. 2

    Configure the webhook

    Pick "Webhook" as the Integration type. URL is your Chirp inspector. Leave HTTP Method as POST. No auth required at the contact-point level - Chirp's inspector key is the auth.

    shell
    Name: Chirp
    Integration: Webhook
    URL: https://api.chirpapp.dev/v1/webhooks/inbound?key=YOUR_KEY
    HTTP Method: POST
    Max alerts: 10  # cap per webhook to avoid spamming
    Disable resolved messages: off  # so card flips back when alert clears
  3. 3

    Test the contact point

    Grafana has a "Test" button on the contact point page. Click it - sends a synthetic alert to Chirp's inspector. You should get a push within seconds. If you don't, check the inspector's recent-events log.

  4. 4

    Route alerts to the contact point

    Alerting → Notification Policies. Either set the contact point as the default route, or create a sub-policy with label-matchers (e.g. severity = critical) that routes to Chirp. Default-routing every alert is loud - start with a label-match.

What you’ll see

Notification: "Grafana · <alert name>" - title is the alert rule name, body is the summary annotation + the firing instance count. Severity-tinted. Resolves fire a follow-up notification ("Resolved") when Grafana sees the underlying metric recover.

Troubleshooting

Test webhook works but real alerts don't fire.
Notification policy isn't routing to the contact point. Alerting → Notification Policies → check the routing tree - your alert's labels must match a route that ends at the Chirp contact point.
Card body is empty.
Grafana's payload only includes annotations you've defined on the alert rule. If your rule has no summary or description annotation, the body is empty. Add at least a summary to every alert rule.
Resolves don't fire.
Confirm "Disable resolved messages" is unticked on the contact point. Grafana sends resolves by default but the toggle silently suppresses them.