> For the complete documentation index, see [llms.txt](https://docs.tryterra.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/apple-health-permission-list-mapping.md).

# Why are Apple Health activity webhooks empty?

Apple Health data only flows when the **matching HealthKit permission is granted**, and the Health app labels don't always match Terra's data types.

Key mappings and gotchas:

* **Activity payloads** (workout sessions) require the `Workouts` read permission, not the activities permission alone.
* **Daily background delivery** is triggered by step updates, so `STEPS` must be in your permission list even if you only need other data types, or daily webhooks won't fire automatically. The roughly 30-minute interval is iOS-controlled and not configurable.
* **Menstrual flow** is labelled `Cycle Tracking` in the Health app, not Menstruation.

iOS only shows the HealthKit permission sheet **once per permission set**. The auth state lives in the Health app and persists across reinstalls. So if a type is missing:

* Have the user enable it manually under **Settings > Privacy & Security > Health > \[your app]**, or
* QA on a fresh simulator (Erase All Content and Settings) to see the full sheet again.

An undecided permission (e.g. a body category) also makes `initTerra` re-prompt and blocks background delivery for that type until the user responds once. See the [permissions mapping](https://docs.tryterra.co/reference/health-and-fitness-api/sdk-references/permissions-mapping) reference.
