All documentation

When something is wrong

Why your export didn’t run

iOS controls timing; Hozz preserves correctness.

A cadence is a request, not a schedule. iOS decides when Hozz runs. Hozz reports the actual state instead of claiming an on-time delivery.

The three constraints#

Health cannot be read while the phone is locked#

Health may be unreadable while locked. Hozz then shows:

Health data is locked. Unlock this iPhone and Hozz will continue.

Its cursor does not advance, so the next pass retries the same records.

Most Health types are capped at hourly#

Hozz requests .immediate; HealthKit lowers most types to hourly. “When new data arrives” therefore does not mean within seconds.

Force-quitting the app stops background launches#

Swiping Hozz out of the app switcher stops background launches until you reopen it.

What the cadences actually mean#

A cadence sets the shortest gap between deliveries. iOS sets no deadline.

Sync cadences and the minimum interval each enforces
CadenceWhat it meansFloor
When new data arrivesDeliver when iOS next wakes Hozz and this much time has passed.at most one delivery every 5 minutes
About every hourDeliver when iOS next wakes Hozz and this much time has passed.at most one delivery every 55 minutes
About once a dayDeliver when iOS next wakes Hozz and this much time has passed.at most one delivery every 23 hours
Only when I askOnly when you tap Sync now, or a Shortcut runs.never on its own

Hozz requests another refresh 15 minutes after each run. That is an earliest acceptable time, not an iOS promise.

How long a first backfill takes#

A pass reads at most 5,000 records, or 4 MB, whichever comes first. Every type gets a share; iOS decides how many passes run.

Large archives take days or weeks. Records arrive throughout.

How to make it run right now#

Open Hozz and tap Sync now. Hozz also provides two Shortcuts: Sync Health Data and Check Health Sync Status — so a personal automation can trigger one.

Reading the dashboard#

The dashboard shows one of seven states per destination. Five of them are healthy; only two mean something is wrong.

Delivery states and what each means
StateHealthyMeaning
idleYesNothing has been attempted yet.
waitingForSystemYesThere is data to send and Hozz is waiting for iOS to run it.
deliveringYesA delivery is in flight.
deliveredYesEverything staged has been accepted by the destination.
waitingForUnlockYesThe device was locked, so Health could not be read. Resolves itself.
retryingNoThe destination rejected the data or could not be reached. Will retry.
needsAttentionNoSomething you have to fix, such as a folder that was moved.

waitingForSystem and waitingForUnlock resolve themselves. retrying keeps trying; needsAttention stops for you.

What Hozz guarantees regardless#

Each Health type advances only after durable staging. Each destination advances only after acceptance, so failures cannot skip data or block another destination.

An interruption can repeat work, but it cannot skip records. Content-derived Idempotency-Key values make repeats identifiable.

Troubleshooting covers what to do when a state is genuinely stuck.