Set up a destination
Do you even need a destination?
Probably not.
A destination is an internet address that accepts your data on its own. We run no such address and hand you none: the app has no servers, by design. So you need something of your own.
If you don't have one, use the Export tab instead: pick a period and tap "Tabelle erstellen". Open the file in Excel, Numbers or Google Sheets. That needs no destination.
Try it in two minutes
If you only want to see whether and what arrives, you do not need a server:
- Open webhook.site. It shows you your own address straight away ("Your unique URL").
- Copy it into the app under Senden → Erstes Ziel anlegen. Any name will do; leave both key fields empty.
- Save, then tap "Jetzt senden" on the destination.
- The delivery appears on webhook.site — you see exactly what the app sends.
Important: that is real health data, readable by anyone who knows the address. Use it to try things out, not permanently, and delete the destination afterwards.
Permanent destinations
These accept a plain JSON POST without any programming. They are examples, not recommendations.
Home Assistant
An open-source home automation platform that runs on your own hardware. Under Settings → Automations & Scenes → Create Automation add a Webhook trigger; Home Assistant generates an address of the form /api/webhook/<id>. No key needed — the id is the secret.
The usual trap: Home Assistant is reachable only inside your own network by default. The app also sends while you are out, and then nothing arrives. You need an externally reachable https:// address.
n8n or Node-RED
In n8n add a Webhook node, method POST, and use the production URL — the test URL is valid for a single run only. In Node-RED place an http in node and be sure to add an http response node after it: without one nobody answers, and the app reports "no response" after 90 seconds.
An automation service
Services such as Make.com accept incoming data through a "Custom Webhook" — the only route with no server of your own. In exchange your health data sits with a third party, and where their servers are depends on your account. You can skip Zapier and IFTTT: both accept inbound webhooks on paid plans only.
Your own server
Anything that accepts a POST and answers 200 is a valid destination. This is what arrives:
POST https://your-server.com/health
Content-Type: application/json
X-Sender: export-health-data
{ "data": { "metrics": [
{ "name": "resting_heart_rate", "units": "bpm",
"data": [ { "date": "2026-08-30 12:00:00 +0200", "qty": 52 } ] }
] } }
The X-Sender header tells you the delivery came from this app — useful when several programs feed the same address.
The three entries in the app
Name — for you only. It appears in every line of the log.
Address — your destination gives it to you. Paste it in full, including the https://. iOS does not allow unencrypted addresses (http://); nothing would ever arrive there, so the app refuses them outright.
Access key — only if your destination asks for one. It will tell you both parts: what the field is called and what goes in it. The two belong together; a key without a field name is not sent.
How to make it run by itself
A destination alone is not enough. Two things have to come together: iOS has to start the app in the background (on battery it rarely does), and the iPhone has to be unlocked at that moment — while it is locked, iOS hands out no health data, charger or not. At night it is usually the lock. Sending becomes reliable with an automation in the "Kurzbefehle" (Shortcuts) app, preinstalled on every iPhone: it runs as your own action, whether or not iOS starts the app. Both routes are also spelled out step by step in the app's "Senden" tab.
A device with an app of its own (e.g. Garmin Connect, Oura, WHOOP, Withings): in Shortcuts tap Automation → New Automation, choose App, pick your device's app and tick Is Closed. Then Run Immediately, continue, New Blank Shortcut → Add Action → Apps → Export Health Data, tap "Gesundheitsdaten senden" and finish. Don't use the search box: it also offers the scripting action "Run Shortcut", which is not it. In the morning, wait until your device's app shows the new values before you close it — only then are they in Apple Health.
Apple Watch or iPhone only: the same route, but with Time of Day instead of App — set a time (7:30, say) and Daily. Pick a time when you are already up: your values have to be in Apple Health by then, and the iPhone has to be unlocked — while it is locked, iOS hands out no health data to an automation either, charger or not.
Shortcuts speaks your iPhone's language; on a German one the same steps read "App" → "Wird geschlossen" → "Sofort ausführen". The action itself is called Gesundheitsdaten senden in every language — the interface of Export Health Data is German. If you get up later than the time you chose, the iPhone was locked at that hour, so iOS handed out no health data. The values arrive once the app is running again after you unlock, at the latest with the next delivery.
When nothing arrives
Nothing arrived overnight. Usually not a problem with your destination: at night the iPhone is locked, and then iOS hands out no health data — plugged in to charge just the same. Delivery happens in the morning, after you unlock. It becomes reliable with "Is Closed" from the section above — you unlock to open that app anyway; with "Time of Day", pick an hour you are normally already up.
Delivered, but 0 values. The app sent and your destination confirmed receipt, but the delivery contained no values. Almost always the Health permission is missing — "Datenquellen prüfen" in the Info tab shows what is actually read.
Address unreachable. A typo, or the destination is only reachable on your own network, or it is switched off. Compare the address character by character.
Access refused. The address is right, the key is not — or the field name was left empty.
Address unknown to the destination. The server answers, but nothing lives at that path. Usually the tail of the address is missing, or it is n8n's test URL instead of the production one.
No response. The connection was made, nothing came back — with Node-RED the response node is usually missing.
The app tries up to five more times, at growing intervals — from half a minute to six hours. A retry only falls due the next time the app runs. Little is usually lost in the meantime: every delivery carries the last few days, so the gap fills as soon as your destination answers again.
What we cannot know
"Delivered" means your destination confirmed receipt. Whether it then stored, understood or discarded the data, we cannot see — no confirmation says so. And we cannot check your address in advance. Only the first real delivery shows that.