Which Apple Health data types does Life Dashboard send?
The iPhone app reads 28 Apple Health types, and each one is off until you switch it on. It sends them under the Android app's payload keys, with the same fields and units: steps, distance and calories, workouts, weight and body composition, heart rate, resting heart rate and HRV, blood pressure, glucose, oxygen saturation, respiratory rate, VO2 max, sleep with stages, hydration, nutrition, mindfulness and six cycle tracking types. Menstruation goes out as two keys, so an iPhone sends 29 of the Android app's 33 keys.
Every record carries a uuid, the Apple Health sample's own, and a source: the name Apple Health gives the app or device that wrote it. The app only reads; it never writes into Apple Health.
All types at a glance
The Apple Watch column says where Apple's documentation describes the watch recording the type; Apple Watch in Home Assistant links each page. The other types come from the iPhone, from what you log yourself, or from apps that write into Apple Health.
| Type | Payload key | Value and unit | Home Assistant | Apple Watch |
|---|---|---|---|---|
| Steps | steps | count | Today's total | Yes, and the iPhone |
| Distance | distance | meters | Today's total | Yes, and the iPhone |
| Active Calories | active_calories | calories, kcal | Today's total | Yes |
| Total Calories | total_calories | calories, kcal | Today's total | Yes |
| Exercise Sessions | exercise | type, duration_seconds | Last workout, minutes per day | Yes |
| Weight | weight | kilograms | Latest value | No |
| Height | height | meters | Latest value | No |
| Body Temperature | body_temperature | celsius | Latest value | No |
| Body Fat | body_fat | percentage | Latest value | No |
| Lean Body Mass | lean_body_mass | kilograms | Latest value | No |
| Heart Rate | heart_rate | bpm | Latest value | Yes |
| Resting Heart Rate | resting_heart_rate | bpm | Latest value | Yes |
| Heart Rate Variability | heart_rate_variability | heart_rate_variability_millis, ms (SDNN) | Latest value | Yes |
| Blood Pressure | blood_pressure | systolic, diastolic, mmHg | Two sensors | No |
| Blood Glucose | blood_glucose | mmol_per_liter | Latest value | No |
| Oxygen Saturation | oxygen_saturation | percentage | Latest value | Some models and regions |
| Respiratory Rate | respiratory_rate | rate, breaths per minute | Latest value | Yes, while you sleep |
| VO2 Max | vo2_max | vo2_ml_per_min_per_kg | Latest value | Yes, during some workouts |
| Sleep | sleep | duration_seconds, stages | Last sleep duration | Yes, with stages |
| Mindfulness | mindfulness | duration_seconds | Minutes per day, in the statistics | Unknown |
| Hydration | hydration | liters | Last drink | No |
| Nutrition | nutrition | calories, grams and 34 more nutrients | No sensor | No |
| Menstruation | menstruation_flow, menstruation_period | flow; start_time, end_time | No sensor | No |
| Basal Body Temperature | basal_body_temperature | celsius | Latest value | No |
| Intermenstrual Bleeding | intermenstrual_bleeding | The time only | No sensor | No |
| Ovulation Test | ovulation_test | result | No sensor | No |
| Cervical Mucus | cervical_mucus | appearance, sensation | No sensor | No |
| Sexual Activity | sexual_activity | protection_used | No sensor | No |
"No" and "Unknown" in the Apple Watch column mean Apple's watch documentation, as cited on this site, doesn't describe the watch recording it, not that nothing can. To see what writes a type on your own iPhone, open the Health app, find the type and look under Data Sources & Access.
Which source writes which type
- Apple Watch: steps, distance, active and resting energy, workouts, heart rate, resting heart rate, HRV, sleep with stages, respiratory rate while you sleep, VO2 max during some outdoor workouts, and blood oxygen on models and in regions that have it. Apple Watch in Home Assistant has the details and Apple's pages.
- iPhone: steps and distance. An iPhone without a watch usually records no resting energy, so
total_caloriesmostly comes with a watch. - Other apps and devices: the apps of other watches, rings and scales, such as Garmin Connect, Oura and Withings, can write into Apple Health, and so can apps you log food, water, cycle tracking or meditation in. What they write depends on the app and your settings there; each record names the app in
source.
Apple Health keeps a walk that both the iPhone and the watch recorded twice, once per device. The daily_totals in every payload count it once, in the order of the data sources you set in the Health app, so use those for day totals.
Activity
Steps
Key steps: count, a whole number, over an interval from start_time to end_time. Up to 1000 new records per sync.
Distance
Key distance: meters, over an interval. Apple Health keeps a distance type per kind of activity, and the app reads them all: walking and running, cycling, swimming, wheelchair, downhill snow sports, and from iOS 18 rowing, paddling, cross-country skiing and skating. They don't overlap, so adding them up counts nothing twice. A record doesn't say which activity it's from.
Active Calories
Key active_calories: calories in kcal, over an interval. Apple Health's active energy.
Total Calories
Key total_calories: calories in kcal, over an interval. Apple Health has no total energy type, so this is its resting and active energy records together. One active energy sample is therefore part of both active_calories and total_calories. Up to 1000 new records per sync. In daily_totals, it's only sent on days with resting energy.
Exercise Sessions
Key exercise: type, start_time, end_time and duration_seconds, from Apple Health's workouts. type is the activity in snake_case, such as running, walking, downhill_skiing or hiit; other is Apple's own Other, or an activity from an iOS newer than the app. duration_seconds includes pauses, so it can be longer than the workout time the Health app shows. Android sends a number as a string here instead, such as "56" for running.
Body
Weight
Key weight: kilograms, at a moment (time), with up to 2 decimals, so a weight entered in pounds survives the conversion.
Height
Key height: meters, at a moment.
Body Temperature
Key body_temperature: celsius, at a moment.
Body Fat
Key body_fat: percentage, 0 to 100, at a moment.
Lean Body Mass
Key lean_body_mass: kilograms, at a moment.
Heart and breathing
Heart Rate
Key heart_rate: bpm, a whole number, at a moment, one record per sample. Up to 1000 new records per sync. Every sample has its own uuid; Android's <uuid>#<time> form doesn't apply.
Resting Heart Rate
Key resting_heart_rate: bpm, a whole number, at a moment.
Heart Rate Variability
Key heart_rate_variability: heart_rate_variability_millis, at a moment. This is SDNN, the measure Apple Health stores. Android sends RMSSD, the one Health Connect stores, under the same key; the two aren't the same number, so keep them apart. Up to 500 new records per sync.
Blood Pressure
Key blood_pressure: systolic and diastolic in mmHg, at a moment, per reading: the two values an app saved together. The rare app that saves them separately gets them paired when they come within a second of each other. A value without its other half isn't sent. uuid is the systolic sample's.
Blood Glucose
Key blood_glucose: mmol_per_liter, at a moment.
Oxygen Saturation
Key oxygen_saturation: percentage, 0 to 100, at a moment.
Respiratory Rate
Key respiratory_rate: rate in breaths per minute, at a moment. Up to 500 new records per sync.
VO2 Max
Key vo2_max: vo2_ml_per_min_per_kg, at a moment.
Sleep and mindfulness
Sleep
Key sleep: session_end_time, duration_seconds and stages, each stage with its own stage, times, uuid and source. Apple Health has no sleep session, so the app groups stage samples into nights, and a gap of more than an hour starts a new one.
- Stages:
light(Apple's Core),deep,rem,awake,sleepingandunknown, which Android sends too, andin_bed, which only an iPhone sends: the time in bed around the stages, not a stage itself. - A night's
uuidcomes from its earliest stage, so it stays the same while the night grows. Replace the night when it comes back longer. A stage added later sends the whole night again. - The night's
sourceis the app or device that recorded most of its stages.
Mindfulness
Key mindfulness: start_time, end_time and duration_seconds, from apps that write mindful sessions to Apple Health. No title, which Android can send.
Food and drink
Hydration
Key hydration: liters, over an interval. Apple Health's water.
Nutrition
Key nutrition: calories, protein_grams, carbs_grams, fat_grams, name and 34 more nutrients under Android's keys, such as dietary_fibre_g, sugars_g, sodium_mg and caffeine_mg, over an interval. Every field is optional.
- A food an app logged, with every nutrient in it, is one record, with its name when the app gave one.
- The 34 other nutrients are only read from a food that also has energy, protein, carbohydrates or fat, so a coffee logged with caffeine only isn't sent.
- Apple Health has no type for trans fat, unsaturated fat, energy from fat, folic acid or
meal_type, so those never come from an iPhone.
Cycle tracking
Menstruation
One switch, two keys. menstruation_flow has flow at a moment, with the shared schema's values light, medium, heavy or unknown. menstruation_period has only start_time and end_time: Apple Health has no period record, so the app derives periods from consecutive flow days, and a gap of up to 48 hours bridges one missed day. A period's uuid comes from its first flow day, so replace the period when it comes back longer.
Basal Body Temperature
Key basal_body_temperature: celsius, at a moment.
Intermenstrual Bleeding
Key intermenstrual_bleeding: only the time.
Ovulation Test
Key ovulation_test: result at a moment: positive (LH surge), high (estrogen surge), negative, inconclusive or unknown.
Cervical Mucus
Key cervical_mucus: appearance and sensation at a moment. Apple Health records no sensation, so sensation is always unknown.
Sexual Activity
Key sexual_activity: protection_used at a moment: protected or unprotected when the writing app recorded it, unknown otherwise.
Over MQTT, the cycle tracking entries aren't published, because a retained topic is no place for reproductive data; basal body temperature is. Home Assistant's integration and a webhook get them all.
The four Android keys an iPhone never sends
| Android key | Why not |
|---|---|
bone_mass | Apple Health has no bone mass type. |
body_water_mass | Apple Health has no body water type. |
skin_temperature | Apple Health stores the absolute wrist temperature during sleep, not the change against a baseline that this key carries. |
basal_metabolic_rate | Apple Health stores resting energy per interval, not a rate per day. It goes out as part of total_calories. |
Numbers, limits and resolution
- Decimals. 3 for meters and liters; 2 for kilograms, calories, Celsius, mmol/L and the nutrients; 1 for percentages, blood pressure, breathing rate, HRV and VO2 max. Trailing zeros are dropped, so 97.0 arrives as
97. Counts, beats per minute and durations are whole numbers. - Per sync. Up to 1000 new records for heart rate, steps and total calories, 500 for HRV and respiratory rate, and 200 for every other type. The next sync continues where this one stopped.
- Data Resolution. Heart rate, HRV, oxygen saturation and respiratory rate can be sent as one average per 1, 5 or 15 minutes or per hour, with a minimum and maximum; steps, distance and both calories as a sum. Every type starts at every record.
The iOS payload page has every detail, and the Android app's JSON Schema covers both apps. For Android, see Health Connect data types, app by app.
Switch on your types on the Health tab and tap View to see what the next sync would send.
Get the iPhone app iOS payload referenceCommon questions
How many Apple Health types does the iPhone app read?
28, each off until you switch it on. Menstruation sends two keys, flow and periods, so an iPhone sends 29 payload keys.
Why doesn't the iPhone send bone mass or skin temperature?
Apple Health has no bone mass or body water type, and it stores the absolute wrist temperature during sleep rather than the change against a baseline that the shared payload carries. Basal metabolic rate goes out inside total_calories.
Is HRV from an iPhone the same as from Android?
No. Apple Health stores SDNN and Health Connect stores RMSSD. Both arrive in heart_rate_variability_millis, but they're different measures, so don't average or compare them.
Which types become sensors in Home Assistant?
20 of the 28, with blood pressure as two sensors. Workouts get a last workout sensor and minutes per day, and mindfulness counts toward the day statistics. Nutrition and cycle tracking get no sensor; a webhook gets them in full.
Does the app read Screen Time or the ECG?
No. Screen Time can't leave the iPhone: iOS shows it only inside a sandbox that can't send anything out. Anything outside the 28 types stays in Apple Health.