Whoop Exporting to Apple Health: Here’s how it actually works


Back a couple months ago, Whoop started importing from Apple Health. While the data they pulled was somewhat limited, the goal was mainly to assist in activity recognition and categorization. The idea being that if you used a Garmin Edge bike computer, and had Garmin Connect setup to sync to Apple Health, then Whoop could more accurately time the start/end points of your ride based on the Garmin data (and also ensure that it was tagged *specifically* as a ride). And generally speaking that worked fine, but it still required you wear your Whoop band for these activities. If you didn’t wear your Whoop band, it didn’t work.

In any case, setting the import aside, now Whoop also exports data to Apple Health. Like the import side of the house, this covers the bulk of scenarios, but there’s also still some gaps in the data too.

So after having it enabled for a few days, I figured I’d run through how it works and what it is (and isn’t sending). Also, you’ll remember I previously asked Whoop about their plans here, and they did promise this was on the way – so it looks like they delivered on that. They also noted that Google Fit on Android was coming too, but that they were just working through one side at a time. I presume that’s still on the radar.

The Tech Details:

First up, is getting it enabled. Even if you previously enabled the Apple Health to Whoop feature, you’ll have to re-enable this to send from Whoop to Apple Health, since that requires your approval. Doing so is silly easy though, but first, update your Whoop app.

1) Then click on the menu icon in the lower right corner of the app
2) Then choose Apple Health
3) Then choose ‘Connect’
4) Followed by ‘Turn on All’ for all the categories that Whoop sends data to Apple Health.
5) Finally, tap Allow

clip_image001 clip_image001[5] clip_image001[8] clip_image001[11]

You can go back into this same menu if you’d like to disallow certain things from syncing to Apple Health.

So, once that’s done, Whoop will start syncing over data to Apple Health from Whoop. In my case, it appeared to sync the previous week’s worth of data (seemingly 7 days’ worth). The data types it syncs are:

– Active Energy: These are the calories you burn from doing activities
– Blood Oxygen: This is your blood oxygen levels, sometimes known as SpO2 or pulse oxygen levels
– Heart Rate: This is your heart rate (obviously), but, as I’ll explain in a sec, this is not done well.
– Respiratory Rate: This is your respiration rate
– Resting Heart Rate: This is your computed resting heart rate value
– Sleep: These are the times you sleep, segmented into a gazillion chunks per night (same as other companies)
Workouts: These are workouts as defined by Whoop, and Whoop creates a single entry for them

Note that certain types like Blood Oxygen and Respiratory rate, are only available for Whoop 4.0 bands, as the Whoop 3.0 band doesn’t have those metrics.

If we dive into all the data pumped over from Whoop to Apple Health, via the Health App, we can see how this data actually shows up (the titles are shown at the top of each data set, with the first screenshot being sleep):

clip_image001[19] clip_image001[21] clip_image001[23] clip_image001[25]

And more specifically, how often this data is updated. In general, I’d say that Whoop does a chunk of this data perfectly, a chunk of it half-assed, and a chunk of it ‘fine’. Which is basically the same as how Garmin and others do it. As I talked about previously, there really needs to be a ‘Here’s how to properly put wearables data into Apple Health’ best practices guide from Apple on this, like most other tech companies do for their API’s.

– Active Energy: This calorie data is written only from workouts seen by Whoop (but not for anything not seen by Whoop as a workout).
– Blood Oxygen: This writes once per day when you wake up, showing your average SpO2 value overnight.
– Heart Rate: This is a weird one. It only seems to write your HR at one value per day. For context, Garmin writes it every 2 mins, and the Apple Watch does it somewhat variable at every 1-15 mins (on average every 5-6 mins). Oura writes it anywhere between every 1-5 mins, but skipping any workout periods entirely.
– Respiratory Rate: This writes once per day when you wake up, showing your average respiration rate overnight.
– Resting Heart Rate: This writes once per day when you wake up, showing your computed RHR overnight.
– Sleep: This writes your sleep in chunks for ‘asleep’ and ‘awake’ time, just like most other watches do.
Workouts: These create workouts in Apple Health, but incorrectly omit the heart rate values during the workout itself.

Notably, it does not write your Whoop 4.0 HRV values to Apple Health. Whoop notes this is because of the Apple-induced weirdness of Apple writing HRV values as SDNN while the rest of the world largely does RMSSD:

“Apple Health tracks HRV using SDNN, while WHOOP calculates HRV using RMSSD. While the values may trend similarly, the absolute numbers are inherently different. For more information, check out these resources: National Center for Biotechnology Information and Frontiers in Public Health.”

Next, you’ll notice that for the ‘Workouts’ category, Whoop doesn’t correctly write all of the underlying heart rate data to the workout collection. Here you can see this is omitted within the Fitness app:

clip_image001[15] clip_image001[17]

And if I export out that data to look at, the HR data is indeed missing. This is the same problem Garmin has, where they don’t write the HR data to Apple Health properly. Though, Wahoo and Peloton do.

And finally – what about rings? Well, that seems to work, though, it also seems fiddly. But I don’t think that’s Whoop’s fault. For example, none of my workouts last week moved the rings in the Fitness app, but my one from yesterday did, as did my ride today (and the only thing I let sync to it, was Whoop – so I know it was Whoop). Note the stand-time was merely me wearing the Apple Watch pre-ride for a few hours to ensure life was happy there.

clip_image001[1] clip_image001[3]

Folks on Reddit have had mixed luck here too. Some have seen cases where it requires having your Apple Watch write at least some data to show up (unrelated data). And others have had better luck with changing the sources ordering in Apple Health. Of course, I can’t imagine there’s many people that use rings but don’t semi-routinely wear an Apple Watch (most people that don’t wear an Apple Watch but still use rings, simply don’t wear it during workouts specifically, but still wear it the rest of the day).



All of these are good steps for a company that’s largely been an island unto itself when it comes to data and openness. Sure, the implementation is not perfect, but hopefully we’ll see Whoop fix the mostly minor gaps (like lack of HR in the workout files), as well as the 24×7 HR pieces. That would leave them with a pretty clean/good implementation.

Of course, I’m still looking forward to them opening up their platform from a proper workout exporting standpoint like they promised last summer, and, if I could really have my way, their recent Whoop import feature would allow importing of external heart rate sources (right now, they ignore the data), which would really fix the main outlier issues that still exist from an accuracy standpoint on the Whoop 4.0 band (it’s far better than 3.0, but still not perfect in certain sport types).

Heck, maybe we’ll eventually even see a proper API, allowing Strava-like integrations from 3rd party developers. Either at the hobbyist level or the company level, both of which would likely only serve to increase stickiness from Whoop users, who are often heavily invested in the platform (either monetarily or interest-wise).

With that, thanks for reading!

Product Reviews – DC Rainmaker

Leave a Reply