How to Get Grafana and Datadog Alerts on Your iPhone
Published:2026-11-08
Grafana sends alerts through contact points, Alertmanager through receivers, and Datadog through its mobile app or webhooks. With Nodd, you paste an inbound URL issued in the app into each service's webhook settings. Alerts reach your iPhone, a recovery resolves the same alert, and you can see receipt status for each member.
What goes wrong with alerts on a phone
Monitoring alerts matter most at night and when you are away from your desk. Email and Slack alone tend to bury them.
Once alerts do reach your phone, new problems show up.
- Alert fatigue. The same alert fires again and again, and recovered ones stay around, so the ones that matter get lost
- Nobody knows who saw it. The whole team gets it, but you cannot tell whether someone is on it or nobody looked
- Recoveries. When a recovery arrives as a separate message, you match firing and recovery by hand
Each tool's own options
Most monitoring tools can reach a phone on their own. The features of the tool you already use are often enough.
Grafana
Grafana Alerting sends notifications to contact points. Types include Email, Slack, Telegram, Pushover, PagerDuty, Opsgenie, Grafana IRM, and Webhook. Resolved notifications are sent by default, and Disable resolved message turns them off. On Grafana Cloud, the Grafana IRM mobile app receives on-call notifications. Self-hosted Grafana OnCall OSS was archived in March 2026, and push notifications through the IRM mobile app no longer work for it.
Prometheus Alertmanager
Alertmanager lists destinations under receivers, such as email_configs, slack_configs, pagerduty_configs, pushover_configs, telegram_configs, and webhook_configs. group_wait, group_interval, and repeat_interval control grouping and how often a notification repeats. If you have alert fatigue, start by tuning these.
Datadog
Datadog has an iOS app that receives push notifications for On-Call, incidents, and workflows, and lets you check monitors. You set up monitors and notifications in the web app.
Sentry
Sentry alert rules can notify members and teams, or send to integrations such as Slack, Discord, Microsoft Teams, PagerDuty, and Opsgenie, or to a webhook. To get them on a phone, people usually go through one of those apps.
PagerDuty and other on-call tools
On-call tools such as PagerDuty have schedules, escalation policies, and phone and SMS paging. On iPhone, Critical Alerts let high-urgency notifications sound through Focus and silent mode. If your team runs a 24-hour rotation, a dedicated on-call tool is the right fit. Opsgenie stopped new sales in June 2025, and its support is scheduled to end in April 2027.
Choosing an approach
| Approach | Good fit when |
|---|---|
| The tool's own notifications (email, Slack, mobile app) | One monitoring tool covers everything and you are happy to install its app |
| A push app such as Pushover or ntfy | You work alone and want a quick sound on your phone. See the comparison |
| An on-call tool such as PagerDuty | You need schedules, phone calls, and step-by-step escalation |
| Nodd inbound URLs | You want several monitoring tools in one app, alerts that resolve themselves, and receipt status per member, along with approval requests in the same app |
Nodd has no on-call schedules and no phone paging. If you need dependable paging at night, use an on-call tool.
Inbound URLs to an iPhone
Nodd inbound URLs receive other services' webhooks as they are. You paste the URL. No authentication header is needed.
- In the app, open the channel details and choose the integration under Add integration
- Issue the URL with Face ID. The URL is shown only then
- Paste the URL into the monitoring tool's webhook settings
Managers, Owners, and Admins can issue URLs. If you lose one, revoke it and issue a new one. These integrations are available.
grafana | A Grafana webhook contact point |
|---|---|
alertmanager | Alertmanager webhook_configs |
datadog | Datadog Webhooks. Recovery resolves the alert. Issued from Nodd 1.1 or later |
sentry | Sentry Internal Integrations and alert rules. Resolving is linked too. Issued from Nodd 1.1 or later |
pagerduty | PagerDuty Generic Webhooks (v3). Resolving is linked too. Issued from Nodd 1.1 or later |
slack | The Slack Incoming Webhook format. Anything that posts to Slack can point here instead |
generic | The same format as POST /v1/messages, accepting only notice, progress, and alert |
Setup by service
Grafana
In Grafana Alerting, open Contact points, create a Webhook contact point, and paste the URL.
https://api.nodd.blipdrop.net/in/grafana/nodd_live_i_...
Alertmanager
Put the URL in webhook_configs. With send_resolved: true, a recovery resolves the same alert.
receivers:
- name: nodd
webhook_configs:
- url: https://api.nodd.blipdrop.net/in/alertmanager/nodd_live_i_...
send_resolved: true
For Grafana and Alertmanager, the alertname label becomes the title and the description annotation becomes the body. A severity of critical, page, high, or error gives high.
Datadog
- Issue a Datadog URL in the app
- In Datadog, open Webhooks under Integrations and paste the URL into a new webhook
- Set Payload to the JSON below
- Add
@webhook-NAMEto the monitor's notification message
{"alert_id":"$ALERT_ID","scope":"$ALERT_SCOPE","title":"$EVENT_TITLE","message":"$TEXT_ONLY_MSG","transition":"$ALERT_TRANSITION","priority":"$ALERT_PRIORITY","url":"$LINK"}
A recovery (Recovered) resolves the same alert.
Sentry
- Issue a Sentry URL in the app
- In Sentry, open Developer Settings under Settings and create an Internal Integration
- Paste the URL into Webhook URL and turn on Issue under Webhooks
- To send from alert rules too, turn on Alert Rule Action and pick the integration as a rule action
A created Issue notifies, and resolved resolves it.
PagerDuty
- Issue a PagerDuty URL in the app
- In PagerDuty, open Generic Webhooks (v3) under Integrations and paste the URL into a new webhook
- Select
incident.triggeredandincident.resolvedas events
This keeps PagerDuty's on-call setup as it is and also mirrors incidents opening and resolving into a Nodd channel.
From your own scripts
From services that can't set an auth header, or from your own checks, post to a generic URL. Include an alert_key so you can resolve it later.
curl https://api.nodd.blipdrop.net/in/generic/nodd_live_i_... \
-H "Content-Type: application/json" \
-d '{"kind":"alert","level":"high","title":"Disk is 5% free","alert_key":"disk.full:web-1"}'
With a send key, resolve it with the CLI's nodd resolve ALERT_KEY or POST /v1/alerts/{alert_key}/resolve. The full conversion rules are on the Inbound URLs page.
Resolving, receipts, and ownership
Recoveries resolve alerts
status: resolved from Grafana and Alertmanager, a Datadog recovery, a Sentry resolved, and PagerDuty incident.resolved all resolve the same alert. Firing and recovery are linked by the same alert_key, built from each service's ID. Resolved alerts leave the Action tab.
Integrations also set the same dedupe_key. Open alerts with the same key become one message with a count, so an alert that keeps firing does not fill your list.
Who received it
Touch and hold a notification and open Receipt status to see each member as received, received late, unconfirmed, or delivery failed. Unconfirmed does not mean undelivered. It means the device has not reported receipt yet. If anyone is unconfirmed, a Responder or above can notify them again.
Who is on it
Alerts nobody has taken appear under Unhandled in the Action tab. When someone chooses Take it from the touch-and-hold reactions, the alert moves to In progress with team for everyone else and leaves their count. Take it and Done need Responder or above.
Priority and quiet hours
high maps to iOS Time Sensitive. High priority messages still come through during quiet hours. Each channel can be set to All, high only, or Off, so you can let only high sound at night.
Caveats and limits
- Inbound URLs do not take approvals or choices. Sending
approvalorchoicetogenericgets422 - Escalation (
escalate_after, Team only) is for approvals and choices that need a response. It does not apply to inbound alerts. For unconfirmed members, notify them again from Receipt status - There are no on-call schedules and no phone or SMS paging
- Payloads can be up to 256 KB. One request delivers up to 20 firing alerts. Beyond that, it delivers 19 plus one summary with the remaining count
- One request resolves up to 100 alerts. Rate limits match the send API
- The Free plan is one member and 1,000 messages a month. A team sharing alerts fits Team better
FAQ
- What do I need to get Grafana alerts on my iPhone?
- Create a Webhook contact point in Grafana Alerting and paste the Grafana inbound URL you issued in the Nodd app. No authentication header is needed.
- Do recovered alerts stay in my list?
- No. When the recovery arrives, the same alert is resolved and leaves the Action tab. For Alertmanager, set send_resolved to true.
- Can I see who on the team received an alert?
- Yes. Touch and hold the notification and open Receipt status to see each member's state. A Responder or above can notify unconfirmed members again.
- Can an unanswered alert go to someone else?
- Escalation is a Team plan feature for approvals and choices, and it does not apply to inbound alerts. If you need step-by-step paging, use an on-call tool such as PagerDuty alongside Nodd.
- What if an inbound URL leaks?
- Someone could send you notifications, but they cannot ask for approval. Revoke the URL in the app and issue a new one.
Nodd delivers questions from scripts, CI, and AI agents to your iPhone, and returns your Face ID approval to the program that asked. There is a free plan.