Wearables Data
Wearables data is now part of your Axon database. This page explains what's in there, where it comes from, and how to read it, so you can query it with confidence through Ask Axon or your own AI tools.
Biomarkers
Cleaned, standardised metrics: steps, sleep duration, resting heart rate and more.
Daily · some weeklyHealth Scores
Composite measures of sleep, activity, readiness and wellbeing, each with a factor breakdown that explains the number.
DailyArchetypes
Stable behavioural labels built from weeks of data, such as regular_sleeper or highly_active.
General
Where does the data come from?
Athletes connect through the Axon Pulse app on their phone. Pulse reads from Apple Health (iOS) or Health Connect (Android), the health data stores built into each platform. Anything the athlete's phone or wearable writes into those stores flows through to your database.
The data is deduplicated across sources, so an athlete carrying a phone and wearing a watch doesn't double-count steps.
Which wearables are supported?
Any device that writes to Apple Health or Health Connect. That covers Apple Watch, Garmin, WHOOP, Oura, Samsung and most consumer wearables. There's no device-specific integration to set up; if the athlete's wearable syncs to their phone's health store, the data comes through.
What if an athlete doesn't wear a device?
Phone-only athletes still produce meaningful data. Steps, active hours, sleep timing, sleep duration, sleep regularity and sleep debt all work from the phone alone. The Activity and Mental Wellbeing scores are fully phone-based.
What a wearable adds is physiology: sleep stages (deep, REM, light), awakenings, heart rate, HRV and the other vitals. Where a metric needs a wearable, it's flagged in the tables below.
How is the data organised?
Four tables, all keyed to the athlete:
| Table | One row per | Key columns |
|---|---|---|
| Biomarkers | athlete + metric + period | CATEGORY, TYPE, PERIODICITY (daily/weekly), AGGREGATION, VALUE, UNIT, START_DATETIME, END_DATETIME |
| HealthScores | athlete + score + day | TYPE (which score), STATE, SCORE (0–1), FACTORS (JSON breakdown), DATA_SOURCES, SCORE_DATETIME |
| HealthScores_Factors | athlete + score + factor + day | SCORE_TYPE, FACTOR_NAME, FACTOR_VALUE, FACTOR_GOAL, FACTOR_SCORE (0–1), FACTOR_STATE, FACTOR_UNIT |
| Archetypes | athlete + archetype + period | NAME, VALUE, DATA_TYPE (ordinal/categorical), ORDINALITY (0–3), PERIODICITY (weekly/monthly), window start/end |
HealthScores carries the factor breakdown as JSON; HealthScores_Factors is the same information flattened to one row per factor, which is usually the easier shape to query ("show me every low factor for this athlete this week").
How current is the data?
Scores recalculate within about a minute of new data arriving. When an athlete first connects, the system also backfills roughly the previous 14 days, so you're not starting from an empty history.
Is this medical data?
No. These are wellness and behaviour measures, not clinical ones. They don't diagnose conditions and shouldn't replace medical assessment. Treat them as daily patterns that shape how an athlete feels, performs and recovers.
Why are some values missing?
Coverage depends on what the athlete's device provides. If a source doesn't supply a metric (for example sleep stages without a wearable), that row simply doesn't appear rather than being estimated.
Scores adjust around missing factors, but each score needs a minimum number of contributing factors; below that, the score itself isn't produced. Build queries and reports to handle gaps rather than assume complete coverage.
Percentages and scores look like decimals. Why?
Scores, factor sub-scores and percentage-type biomarkers (sleep efficiency, sleep regularity, oxygen saturation) are all stored as decimals between 0 and 1. A Sleep Score of 0.72 is 72 on the familiar 0–100 scale; oxygen saturation of 0.962 is 96.2%.
Biomarkers
What is a biomarker?
A biomarker is a cleaned, product-ready metric: the raw samples from the phone and wearable are deduplicated, standardised into consistent units, and aggregated into daily totals, averages or point-in-time values. It's the layer to use for dashboards, trends and analysis.
What activity biomarkers are available?
All daily totals:
| Type | Unit | Notes |
|---|---|---|
steps | count | Daily total |
active_hours | hour | Hours of the day with movement |
active_energy_burned | kcal | Energy burned during activity (an estimate) |
total_energy_burned | kcal | Active plus resting energy (an estimate) |
floors_climbed | count | Vertical movement |
activity_low_intensity_duration | minute | Light activity time |
activity_medium_intensity_duration | minute | Moderate activity time |
activity_high_intensity_duration | minute | Vigorous activity time |
activity_sedentary_duration | minute | Time sedentary |
What sleep biomarkers are available?
| Type | Unit | Periodicity | Wearable | Notes |
|---|---|---|---|---|
sleep_start_time / sleep_end_time | datetime | daily | No | Timing of the main sleep episode |
sleep_duration | minute | daily | No | Minutes asleep |
sleep_in_bed_duration | minute | daily | No | Time in bed, including awake time |
sleep_regularity | percentage (0–1) | weekly | No | Consistency of sleep timing |
sleep_debt | hour | weekly | No | Accumulated shortfall vs need; clears over several nights, not one |
sleep_interruptions | count | daily | Yes | Awakenings detected |
sleep_awake_duration | minute | daily | Yes | Awake time within the sleep window |
sleep_light_duration / sleep_deep_duration / sleep_rem_duration | minute | daily | Yes | Estimated sleep stages |
sleep_latency | minute | daily | Yes | Time to fall asleep (typical adult range 10–20 min) |
sleep_efficiency | percentage (0–1) | daily | Yes | Sleep duration divided by time in bed |
What vitals are available?
All daily averages, all wearable-dependent:
| Type | Unit | Notes |
|---|---|---|
heart_rate_resting | bpm | Resting heart rate; deviations from baseline often precede illness or under-recovery |
heart_rate_variability_sdnn | ms | HRV (SDNN method); reflects stress and recovery state |
respiratory_rate | count/minute | Breaths per minute |
oxygen_saturation | percentage (0–1) | Blood oxygen (SpO₂) |
vo2_max | mL/kg/min | Cardio fitness estimate from the device |
How precise are the values?
Steps and durations are solid. Energy burned, sleep stages and VO₂ max are estimates from consumer devices; use them directionally, not as lab measurements. For decisions, look at 7 to 14 day baselines rather than reacting to a single day.
Health Scores
What are health scores?
Scores condense several related biomarkers into one measure for a dimension of health. Each score row carries a STATE band alongside the number:
| State | Range (0–100 scale) |
|---|---|
| high | 80–100 |
| medium | 60–79 |
| low | 40–59 |
| minimal | 0–39 |
There are no hidden weights. Every score breaks down into independently scored factors, and each factor shows the measured value, a goal, a sub-score and its own state. The factor breakdown is the explanation.
Sleep Score
Sleep health across seven factors: sleep_duration, sleep_regularity, sleep_continuity, sleep_debt, circadian_alignment, physical_recovery (deep sleep) and mental_recovery (REM). Four are phone-based; continuity and the two recovery factors need a wearable.
Worth knowing: sleep regularity is one of the strongest predictors of sleep health, sometimes more impactful than duration itself.
Activity Score
Daily movement across six factors: steps, active_hours, extended_inactivity, active_calories, intense_activity_duration and floors_climbed. All six work from the phone alone.
The factor breakdown shows patterns raw totals hide, e.g. an athlete who hits their step count but sits for nine hours between sessions.
Readiness Score
Recovery and preparedness across eight factors in three domains: sleep recovery (sleep_duration, sleep_debt, physical_recovery, mental_recovery), activity strain (walking_strain_capacity, exercise_strain_capacity) and cardiovascular signals (resting_heart_rate, heart_rate_variability). Four factors are phone-based; the sleep-stage and cardiovascular factors need a wearable.
Everything is compared against the athlete's own rolling 30-day baseline, not population norms. The baseline becomes usable after about two weeks and well-tuned after a month.
RHR and HRV shifts often flag incomplete recovery, stress or oncoming illness a day or two before the athlete feels it.
Mental Wellbeing Score
Behavioural patterns linked to mental wellbeing: steps, active_hours, extended_inactivity, activity_regularity, sleep_regularity and circadian_alignment. All phone-based.
It doesn't measure mood and doesn't diagnose anything; it tracks routine consistency, which research links strongly to mental wellbeing. Treat it as a signal to check in, not a label.
Wellbeing Score
The broadest measure, spanning the activity factors and all seven sleep factors in one number.
Useful when you want one measure for how an athlete is doing overall, and the balance between training and rest.
How should I read the factors?
Query the factors table and start with the lowest-scoring factors on a given day; they're the drivers of the score. Each shows its value against its goal, so "Sleep Score is low" becomes "duration was 332 minutes against a 480-minute goal, and debt is at 10.3 hours". That's the level coaches can act on.
Archetypes
What are archetypes?
Archetypes turn weeks of data into stable, human-readable labels, refreshed weekly and monthly. Where scores move daily, archetypes smooth out one-off events (travel, a bad night, illness) and describe the athlete's underlying pattern.
Use them for grouping athletes and framing conversations, not day-to-day decisions.
What archetypes are available?
| Name | Values (low → high) | Wearable |
|---|---|---|
activity_level | sedentary → lightly_active → moderately_active → highly_active | No |
exercise_frequency | rare → occasional → regular → frequent_exerciser | No |
sleep_duration | very_short → short → average → long_sleeper | No |
sleep_quality | poor → fair → good → optimal_sleep_quality | No |
sleep_regularity | highly_irregular → irregular → regular → highly_regular_sleeper | No |
sleep_efficiency | highly_inefficient → inefficient → efficient → highly_efficient_sleeper | Yes |
sleep_pattern | consistent/inconsistent × early/late sleeper (e.g. consistent_early_sleeper) | No |
bed_schedule | very_early → early → late → very_late_sleeper | No |
wake_schedule | very_early → early → late → very_late_riser | No |
mental_wellness | poor → fair → good → optimal_mental_wellness | No |
overall_wellness | poor → fair → good → optimal_wellness | No |
Most are ordinal: the values sit on a scale and each row carries an ORDINALITY number (0 lowest to 3 highest), so you can track movement up or down and aggregate across a squad. sleep_pattern is categorical (distinct groups, no ranking).
How would I use archetypes in practice?
Squad-level segmentation and flags: pull every athlete labelled irregular_sleeper or short_sleeper and you have a sleep-hygiene conversation list. Track whether an athlete's sleep_regularity ordinality moves up a band across a training block.
Because each label covers a week or month, it won't overreact to a single bad night the way a daily score can.