HealthSave Get on App Store

To get live Apple Health metrics into Home Assistant, HealthSave Pro background-syncs your HealthKit data to a server you run, and those metrics show up as Home Assistant entities you can automate. There's no cloud bridge in the middle, the data goes from your iPhone to your own infrastructure. This guide is the real setup, including the latency you need to design around.

The architecture (and why there's no shortcut)

The flow is: iPhone (Apple Health) → HealthSave Pro background sync → your server → Home Assistant entities. The key honesty up front: there is no hosted backend. "Self-hosted" means you stand up and run the receiving server and your own Home Assistant instance. HealthSave doesn't host anything for you, which is the point if you care about your data staying on your hardware.

The second honesty: background sync is best-effort, roughly 1–5 minutes end to end. It is not a real-time stream. Build automations that tolerate a few minutes of latency; do not build anything time-critical or safety-critical on this path.

Which integration path?

Three ways to get Apple Health data into your home automation, depending on what you're optimizing for:

PathBest forWhat you run
Direct HA push (this guide)Live sensor.healthsave_* entities with the least moving partsJust Home Assistant — HealthSave pushes straight to it
Observatory hubFull history, Grafana dashboards, and a REST API over the same dataThe self-hosted Observatory server (Docker Compose)
MQTT bridgeAlerting and automations in any MQTT-connected systemA broker + the Observatory bridge, or a community backend that publishes MQTT natively

They're not exclusive — plenty of setups start with the direct push and add the hub later for history. All three ride the same sync engine and the same latency truth above.

What you need

Setup

  1. Stand up the receiving server on your network and note its LAN IP and port.
  2. In HealthSave: Settings → Server Sync → set the Server URL to your server (e.g. http://your-server-ip:8000; iOS won't sync to localhost), optionally set an API key, and enable background sync.
  3. Connect Home Assistant to that server so your chosen metrics, heart rate, resting HR, steps, sleep, SpO2, surface as HA entities/sensors.
  4. Confirm entities are updating in HA before you wire automations to them. Remember the ~1–5 minute refresh.

Example automation (latency-tolerant by design)

A realistic, useful one: a recovery-aware morning routine. When you get up, HA reads last night's resting heart rate and HRV (synced from Apple Health) and adjusts the morning scene, softer lights and a slightly warmer thermostat on a high-resting-HR "rough night," a brighter, brisker scene on a well-recovered morning. This works precisely because it doesn't care whether the data arrived 30 seconds or 4 minutes ago.

What I'd avoid on this path: anything that needs to fire the instant your heart rate crosses a threshold. The best-effort latency makes it wrong for alerts or safety triggers, treat these as ambient automations.

Free vs Pro

Capability Tier
On-device dashboard, CSV/JSON export Free
Background sync to your server Pro
Home Assistant integration Pro
REST API access Pro

Troubleshooting: entities that flap to "unavailable"

The most common complaint, and it's usually not a bug: HealthKit data arrives in bursts, not a steady trickle. Your watch syncs a clump of samples, then nothing for a while. If Home Assistant's staleness window for an entity is shorter than the gap between bursts, HA flips it to unavailable in between, so a perfectly healthy metric looks broken. Two fixes:

If an entity never populates at all, the data isn't reaching the server yet, confirm the app's last sync succeeded (Settings → Server Sync), and remember iOS won't sync to localhost; it needs your server's LAN IP or hostname.

Beyond the native integration: MQTT and Node-RED

If you'd rather not wire HA to the server directly, the Observatory bridge can republish your metrics over MQTT with Home Assistant MQTT discovery, so the same heart-rate and sleep data shows up as entities automatically, and Node-RED or any other MQTT client can subscribe to the same topics. It's the same best-effort latency, just a different transport. The Apple Health to MQTT guide walks through the broker setup.

"There are already a couple of unstable and unreliable apps out there"

That's a real pre-purchase question we received, quoted verbatim — and if you've been burned by a flaky health-to-HA bridge before, it deserves a straight answer rather than a marketing one.

The honest mechanics: the unreliable part of every app in this category is the same — iOS decides when background work runs, not the app. Anything promising you a real-time stream from an iPhone is overpromising. HealthSave's design accepts that constraint instead of fighting it: best-effort sync (roughly 1–5 minutes end to end), automations designed to be latency-tolerant, and an immediate foreground sync whenever you open the app.

What we can say from the track record: the sync pipeline's data integrity has held even when other things broke. During a display bug earlier this year (a blank system sheet on launch — documented in the troubleshooting guide, fixed in 1.5.4), affected users' Grafana dashboards and Home Assistant entities kept receiving data the entire time. The failure was cosmetic; the pipeline didn't drop samples. And when a self-hosted backend rejects a batch, HealthSave stops that metric rather than silently skipping past it — conservative by design, with a two-tap recovery.

If you want to try before relying on it: the export features are free — install it, watch it read your data, and upgrade to Pro only when you want the sync.

Honest limits

FAQ

Does HealthSave send my Apple Health data through a cloud to reach Home Assistant?

No. Background sync goes from your iPhone to a server you run, and Home Assistant reads from that server. There is no hosted bridge and no HealthSave cloud in the path, the data stays on your hardware.

How fresh are the Home Assistant entities?

Best-effort, roughly 1–5 minutes from watch to HA. It is not a real-time stream. Build ambient, latency-tolerant automations on these entities, not alerts or anything safety-critical.

Why do my HealthSave entities show "unavailable" between syncs?

HealthKit data arrives in bursts. If an entity's staleness window is shorter than the gap between syncs, Home Assistant marks it unavailable until the next push. Widen the staleness window for those sensors, and read the last known value rather than triggering on a fresh update.

Is the Home Assistant integration free?

No. Home Assistant integration, background sync, and the REST API are Pro features, a one-time $24.99 purchase with Family Sharing, no subscription. The on-device dashboard and CSV/JSON export are free.

Can I use MQTT or Node-RED instead of the native integration?

Yes. The Observatory bridge can republish your metrics over MQTT with Home Assistant discovery, so they appear as entities automatically and Node-RED can subscribe to the same topics. See the Apple Health to MQTT guide.

Can I get my medications into Home Assistant for reminders?

Yes, on iOS 26+ — Apple opened the Medications API to third-party apps in iOS 26, and HealthSave exports your medication list and dose events, which means dose-taken data can reach your automations like any other metric. See the medications export guide. Treat it as informational, not as a medical safety system.

HealthSave is not a medical device. It is for informational purposes only and does not diagnose, treat, cure, or prevent any disease or condition. Do not build medical or safety-critical automations on this data; the accuracy of health data depends on your wearable device and its sensors.

Related guides

Get HealthSave

Download free, then unlock background sync, the REST API, and Home Assistant with a one-time Pro purchase.

Download HealthSave on the App Store


HealthSave: Export Health Data, on iPhoneGet on the App Store