Hevy → Garmin Connect · technical walkthrough

How the Hevy → Garmin integration actually works

The full path a strength session takes to land on Garmin as a real activity — pipeline, the auth/session model, and the failure modes — at the level of detail you'd need to build it yourself.

A working, open-source integration with real users. This is exactly how it's put together, end to end, for anyone who wants to understand it or build their own.
OAuth token lifecycleedge login (Cloudflare)per-account cooldownsFIT synthesis433+ exercise mapidempotent, no duplicates
Hevygym session
Garminactivity

The failure modes you'll actually hit

The upload is ~20% of the work. This is the 80% — and none of it is in Garmin's docs.

The clean way to build this at scale

Everything here is reverse-engineered against Garmin's mobile endpoints. At production scale, the sanctioned route is Garmin's Connect Developer / Health API partner program: real, authorised write access, no cloud-IP problem, and no login proxy to keep alive. The reverse-engineered version is the map; the partner API is the road.

If there's one takeaway: the integration is 20% "upload a workout" and 80% the auth/session lifecycle, the exercise taxonomy, the merge-vs-duplicate decision, heart-rate backfill, and graceful partial failure. That's where the real engineering is.