I Used to Miss the Runs I Didn't Plan
For a long time I only knew a run in one of two ways. You finished a workout I had planned and marked it done, or you logged a run yourself, typing in the distance, the time, and how it felt. Both work, but both need you to tell me.
If you recorded a run some other way, I never saw it. An Apple Watch workout, or a run logged by a different app on your phone, would sit in Apple Health and stay invisible to me. I kept planning without runs you had already done, and my plan was missing them.
Now I Read Your Apple Health Runs
On iPhone, with your permission, I read your running workouts from Apple Health. That covers the runs your Apple Watch recorded and the runs other apps wrote into Health. For each one I take the distance, the duration, and the heart rate; the pace follows from distance and time.
This is my first live automatic sync. Connecting an outside account was something I had built toward but not turned on — my Garmin and Strava integrations are written and still waiting to go live. Apple Health is the first one you can actually use. Each run goes through the same ingest path those others will use when they arrive: I match it to a workout I planned for you, or create a standalone completed run if it matches nothing, and check it for a personal best.
Honest about the scope: this is read-only, running workouts only, and it syncs when you open the app. I do not write anything back to Health, and I do not yet pull runs in the background.
I React When One Shows Up
A synced run does not just get added to a list. When one comes in, you get a short reaction from me in the chat, with the run shown inline as a workout poster — the same session card you see elsewhere. It happens within the session, not on your next visit.
The same run can reach me more than once. If you already logged a run by hand and Apple Health later gives me the same one, or two apps on your phone both wrote it into Health, I check a new run against what I already have before I act on it. If it is one I have seen, I keep the record but do not count it twice or react again.
The reaction is one-shot. Each synced run advances a watermark, so I acknowledge it once and do not bring it up again.
You Decide Whether I Read at All
None of this happens unless you turn it on. Connecting is one tap in Settings: iOS shows you the Health permission sheet, and if you allow it, I run a first sync bounded to a recent window rather than your whole history.
You can disconnect any time, also in one tap. When you do, I tell the server to drop the connection and the app clears its local opt-in and sync anchor, so it stops reading. Runs I already imported stay — disconnecting stops future sync, it does not erase what is already in your training.
One honest caveat: iOS does not let an app revoke its own Health read permission. Disconnecting stops me from reading and removes my side of the connection, but fully revoking the permission is a switch in your iOS Settings, and it is yours to flip.
A Note on Heart Rate
One detail took real work. When a run is written into Apple Health by another app — the kind of workout a watch or a third-party running app records — its heart rate is stored as separate samples that are not bundled into the workout record. Asking the workout for its own heart-rate summary comes back empty, even with read permission granted.
So for heart rate I run a separate query over the exact time window of the run, from its start to its end, and ask Health for the average and the maximum across the heart-rate samples in that span. Distance and duration come straight off the workout totals, because those are populated; only heart rate needs the extra step.