Get an iPhone Alert When Home Assistant Goes Offline
Short version. Home Assistant cannot notify you that it has stopped, because the thing that would send the notification is the thing that stopped. You need a watcher outside it, and which one depends on how you reach your instance. If it has a public hostname, a Nabu Casa address or your own domain, PingKit's Uptime Watch checks it hourly from Cloudflare and pushes to your iPhone when it stops answering and again when it recovers. One URL is free, permanently. Guardian watches ten. If the instance is LAN-only, no internet-side checker can see it, and the answer is a Mac on the same network running the free PingKit Agent.
A Monitor Inside the Thing Being Monitored Is Not a Monitor
Home Assistant has excellent notification support, and people quite reasonably try to use it to tell them when Home Assistant is unhealthy. It works right up to the failure that matters: the container stops, the SD card dies, the Pi loses power, the host reboots into a broken state. Then nothing sends anything, and the first you know is when a light does not come on.
The fix is structural, not clever. Something outside the instance has to check it and alert you. There are two shapes of that, and the right one depends entirely on whether your instance is reachable from the internet.
Option 1: Your Instance Has a Public Hostname
This covers Nabu Casa Home Assistant Cloud, a DuckDNS or other dynamic DNS name with a port forwarded, a reverse proxy on your own domain, or a Cloudflare Tunnel.
In PingKit, open the Monitor tab and add the address to Uptime Watch. What happens then is worth knowing precisely rather than vaguely:
- The check runs hourly, from Cloudflare's network, not from your phone. Your phone can be off.
- It is an HTTP HEAD request with a 10-second timeout, following redirects.
- Any final status from 200 to 399 counts as up. Anything else, or a timeout, counts as down.
- When the state changes, from up to down or from down to up, you get a push notification on your iPhone. Both directions, so you are told when it comes back.
- Results are kept for 30 days, so you can see the pattern rather than just the last event.
One URL is free, permanently. Guardian watches ten. One target is enough for a single Home Assistant instance; ten is what you want once you are also watching a NAS web interface, a reverse proxy, a status page and a personal site.
Two things to understand before you trust it. Hourly means the worst case between the failure and the alert is about an hour; this is a "tell me it broke" service, not a one-minute pager. And because it follows redirects and accepts anything under 400, a login page that answers correctly counts as up. That is usually what you want, since it proves the web server and the tunnel are alive, but it does mean Uptime Watch is telling you "the address answers", not "Home Assistant is healthy".
Uptime Watch is free for one URL, permanently, push notifications included. Get PingKit for iPhone
Option 2: Your Instance Is LAN-Only
If Home Assistant lives at a private address with no port forwarding and no tunnel, no internet-side checker can reach it, and that includes Uptime Watch. There is no way around this: a private address is not routable from Cloudflare, and it should not be.
What can see it is something on the same network. The free PingKit Agent for Mac scans the network every five minutes and keeps a device list. When the machine running Home Assistant has been unseen for fifteen minutes, the Agent marks it offline, raises a Device Offline alert and records a timeline entry. Device Offline alerts are off by default: turn the Device Offline toggle on in the Agent's Settings under Device Alerts and, until the next Agent update, set Offline scans before alert, one section below under Alert Debouncing, to 1. With PingKit Guardian that alert reaches your iPhone through your own private iCloud.
The distinction to keep straight is what each one proves. The Agent proves the host is present on the network. Uptime Watch proves the service answers an HTTP request. A host that is up with Home Assistant crashed will pass the first and fail the second, which is a good argument for using Uptime Watch even on a LAN-only setup if you can give it any public hostname at all.
Option 3: Both, Which Is What Most People Should Do
If your instance is reachable publicly, run both. They fail differently, and between them they cover the three outages that actually happen:
| What broke | Uptime Watch | Agent Device Offline |
|---|---|---|
| The host lost power or crashed | Reports down | Reports offline |
| Home Assistant stopped, host still running | Reports down | Nothing, the host is still there |
| Your home internet dropped | Reports down, correctly, since the service is unreachable | Nothing about the host, but the Agent raises Internet Down separately |
That third row is the reason to have the Agent's Internet Down alert as well: it is what distinguishes "my server died" from "my broadband died", and without it every outage looks the same from outside.
Setting It Up
- Install PingKit on the iPhone. Open the Monitor tab.
- Under Uptime Watch, add your instance's public address. Give it a label you will recognise in a notification at 3am.
- Allow notifications when iOS asks. Without that permission there is nothing to deliver.
- If you have a Mac that stays on, install the free PingKit Agent, let it scan once, then turn the Device Offline toggle on under Device Alerts in its settings and set Offline scans before alert, under Alert Debouncing, to 1.
- Test it honestly: stop the container or unplug the host, and wait. Uptime Watch will report on its next hourly check; the Agent needs fifteen minutes of absence and then a scan at the threshold you set, so allow twenty minutes before deciding it did not work.
Honest Limits
- Uptime Watch checks hourly. It is not a sub-minute monitor and does not claim to be.
- A HEAD request is not a health check. Some servers refuse HEAD outright, which reads as down; and a page that answers while the application behind it is broken reads as up.
- Uptime Watch cannot see a private address. If the instance is LAN-only, this option does not exist for it.
- The Agent's Device Offline alert tells you the host left the network. It says nothing about whether Home Assistant itself is running.
- PingKit does not integrate with Home Assistant, read its entities, or run automations.
Frequently Asked Questions
How do I get notified when Home Assistant goes down?
Use something outside the instance. If it has a public hostname, PingKit's Uptime Watch checks it hourly from Cloudflare and pushes to your iPhone when it stops answering and when it recovers, with one URL free permanently. If it is LAN-only, a Mac running the free PingKit Agent notices the host leaving the network and, with Guardian, sends that to your phone.
Can Home Assistant notify me that it is offline?
Not reliably, because the notification would have to be sent by the instance that has stopped. Internal watchdogs catch degraded states; they cannot catch a crash, a power cut or a dead SD card.
Does Uptime Watch work with a Nabu Casa URL?
Yes. Any public HTTPS address works, including Home Assistant Cloud, a DuckDNS name or your own domain through a reverse proxy. The check follows redirects and treats any final status from 200 to 399 as up, so a login page answering correctly counts as up.
How quickly will I know that Home Assistant is down?
Uptime Watch checks hourly, so worst case is about an hour. The Agent marks a host offline after fifteen minutes unseen, and then needs one scan at a threshold of 1 or three at the default, so roughly twenty to thirty minutes. Neither is a sub-minute pager, and neither claims to be.
Can I monitor a Home Assistant instance that is not exposed to the internet?
Not from the internet, by definition. A private address is not reachable from Cloudflare. Use a Mac on the same network running the free PingKit Agent, which watches the LAN and, with Guardian, delivers the alert to your iPhone once Device Offline alerts are turned on, which they are not by default.
Be told when your instance stops answering.
One URL is free, permanently. Guardian watches ten. Guardian is $2.99 a month or $24.99 a year, with a 1-week free trial.
Download PingKit for iPhone