Bring your Whoop fitness data directly into Home Assistant — no Docker, no extra server, no hassle.
- Native OAuth2 — authenticates directly in Home Assistant, no external service needed
- 25+ sensors — Recovery, Sleep, Strain, HRV, SpO2, Skin Temperature and more
- Smart polling — Cycle data refreshes every 10 minutes, daily metrics every 60 minutes
- Always available — last known values are kept if the API is temporarily unreachable
- HACS compatible — install and update with one click
- Home Assistant 2023.1.0 or newer
- HACS installed
- A Whoop Developer account with an app configured
- Go to developer.whoop.com and create a new application
- Set the Redirect URI to:
https://<your-ha-domain>/auth/external/callback - Copy your Client ID and Client Secret
- Open HACS → Integrations
- Click the three-dot menu → Custom repositories
- Add
https://github.com/DennisGoss99/WhoopIntegrationHAas an Integration - Search for Whoop and click Download
- Restart Home Assistant
- Go to Settings → Devices & Services → Add Integration → Whoop
- Enter your Client ID and Client Secret
- Complete the OAuth2 login in the browser popup
- Done — your Whoop sensors will appear automatically
| Sensor | Unit | Description |
|---|---|---|
| Cycle State | — | SCORED, PENDING_SLEEP, etc. |
| Day Strain | — | Overall strain for the current day |
| Day Average Heart Rate | bpm | Average HR over the current day |
| Day Max Heart Rate | bpm | Peak HR over the current day |
| Day Kilojoules | kJ | Energy expenditure for the day |
| Sensor | Unit | Description |
|---|---|---|
| Recovery State | — | SCORED, PENDING_SLEEP, etc. |
| Recovery Score | % | Daily readiness score |
| Resting Heart Rate | bpm | Overnight resting HR |
| HRV (RMSSD) | ms | Heart rate variability |
| SpO2 | % | Blood oxygen saturation |
| Skin Temperature | °C | Overnight skin temperature |
| Sensor | Unit | Description |
|---|---|---|
| Sleep State | — | SCORED, PENDING_SLEEP, etc. |
| Sleep Performance | % | Overall sleep quality score |
| Sleep Efficiency | % | Time asleep vs. time in bed |
| Sleep Duration | min | Total time in bed |
| REM Sleep | min | REM sleep duration |
| Deep Sleep | min | Slow-wave sleep duration |
| Respiratory Rate | breaths/min | Average breathing rate during sleep |
| Sensor | Unit | Description |
|---|---|---|
| Latest Workout Sport | — | Activity type (e.g. "Running") |
| Latest Workout Strain | — | Cardiovascular strain score |
| Latest Workout Avg Heart Rate | bpm | Average HR during workout |
| Latest Workout Max Heart Rate | bpm | Peak HR during workout |
| Latest Workout Kilojoules | kJ | Energy burned during workout |
| Sensor | Unit | Description |
|---|---|---|
| Max Heart Rate | bpm | Physiological max HR |
| Weight | kg | Body weight |
| Height | m | Body height |
Recovery, Sleep and Workout sensors only populate after the respective activity has been completed and scored by Whoop. Cycle sensors are available immediately.
No real-time heart rate is available — the Whoop Public API does not expose a live HR endpoint. The closest values are Resting HR (from Recovery) and Day Average/Max HR (from Cycle).
Pull requests are welcome! Please target the dev branch.
- Fork the repo
- Create a feature branch from
dev - Submit a PR against
dev
MIT — see LICENSE