Why is hr_zone_data always empty for this provider?
hr_zone_data is only populated for providers that expose it through their API.
hr_zone_data is only populated for providers that expose it through their API.
Garmin and Apple Health do not currently expose HR zone data (Apple does not provide zones for workouts; Garmin does not expose them even though the Garmin app shows them), so the object arrives empty for those providers.
Some providers do send pre-calculated zones: Fitbit, Polar, Strava, Suunto, TrainingPeaks, WHOOP.
This is a provider-API limitation, not a mapping issue, and Garmin's would populate automatically if Garmin exposed it. To see which fields each provider returns, use the payload simulator in the dashboard's generate section.
If you need zones for an unsupported provider, derive them yourself:
Use recorded
max_hr_bpmfrom activities, or a theoretical max (e.g. 220 minus age).Compute zones from raw heart rate samples.
user_max_hr_bpm is only populated when a provider sends a theoretical max, which most (including Garmin) do not.
Last updated
Was this helpful?