All posts
Using Moveee ·4 July 2026 · 8 min read

Connect Strava, Garmin, Wahoo and WHOOP: what syncs where

The Moveee team

Free coaching · a real route for every ride

Short version: Strava is the connection that does the work today. Rides come in from it, Indoor rides go back out to it, and if your Garmin or Wahoo unit already uploads to Strava you are covered without connecting anything else. WHOOP syncs recovery, sleep and strain in. Garmin, Wahoo and Hammerhead have connect flows built into the app, but two of the three are waiting on the provider before they light up, and this post says so rather than pretending otherwise.

Everything below lives on one page: Account → Integrations. Each service is a card with a badge on the right, and the badge is honest — a green "Connected" means the token is alive and the last sync time is printed underneath, a grey "Not connected" means you can connect right now, and anything else means we are waiting on the provider, not on you.

What syncs where, in one table

ServiceInto MoveeeOut of MoveeeStatus
StravaRides, power and heart-rate streams, GPS tracks, profile weight and FTPIndoor rides, with the workout descriptionLive
WHOOPRecovery score, HRV, resting and average HR, day strain, sleep, body weightNothing (a recovery wearable takes no workouts)Connectable once WHOOP's API access is granted
Hammerhead KarooA record that a ride happened (summary only, for now)Routes and structured workoutsConnectable once Hammerhead's API access is granted
Wahoo ELEMNT / RIVALNothing directly — your rides arrive via StravaStructured workouts, once Wahoo enables the appBuilt, waiting on Wahoo
Garmin ConnectDesigned for full rides with 1 Hz samplesDesigned for workouts and coursesBuilt, waiting on Garmin's developer programme
Zwift / MyWhooshNothingWorkouts as .ZWO filesWorks by file, not by API

Strava: the one to connect first

You can sign in with "Continue with Strava" or connect it later from the Integrations page; either way it is a standard OAuth handshake on Strava's site, and Moveee never sees your Strava password. Strava's own documentation describes the scopes an app asks for, and three of them matter here.

  • "View data about your activities" (activity:read_all). Without it Strava only hands over rides you have marked public. The Integrations card warns you in orange when this is the case — "Only your public rides are syncing" — and offers a one-click reconnect. This is the most common reason a rider's calendar looks half-empty.
  • Upload activities (activity:write). This is what lets Moveee post an Indoor ride back to your Strava feed as a virtual ride, with the workout's description attached. Rides you record elsewhere are never touched.
  • Profile details (profile:read_all). Reads weight and FTP from your Strava profile so your Power Profile has something to start from before any rides are analysed.

The first connect is deliberately two-speed. Moveee pulls your most recent rides quickly, opens the plan wizard as soon as those are analysed, and then walks the rest of your history in the background. After that, new rides arrive by webhook: Strava tells Moveee the moment an activity is uploaded, and the ride is imported without you doing anything. There is also a "Sync now" button, which re-walks your whole history and refreshes edits you have made on Strava — renamed rides, commute or race tags — since the automatic sync only ever adds what is new.

One limit is worth knowing. Strava's API budget is shared by the whole app, not per rider, so when it is exhausted an import waits for the next fifteen-minute window and tries again rather than failing. Disconnecting Strava keeps every ride already imported; it only stops new ones.

Garmin and Wahoo: read this before you look for the button

Both cards are on the page and both connect flows exist, but neither works yet, for different reasons.

  • Garmin Connect. The integration is built to Garmin's published Activity API and OAuth2 PKCE spec, and is designed to import the full sample stream — per-second power, heart rate, cadence and a dense GPS track — so a Garmin-only rider would get the complete picture without Strava. But access requires approval into Garmin's developer programme, and that programme paused new applications in mid-2026. Until it reopens the card reads "Coming soon", and the honest workaround is the one most riders already use: let Garmin Connect auto-upload to Strava and let Moveee import from there. You lose nothing on the ride itself; Strava's streams are what the Power Profile is built on today.
  • Wahoo. Registration on Wahoo's developer portal is self-serve, so the flow is complete and the card will show "Connect" the moment the keys are in place. What it will do is push structured workouts to an ELEMNT or RIVAL. What it will not do is pull rides: Wahoo devices upload to Strava, and that is the path rides take into Moveee. The card says exactly this once connected — workout push "lights up as Wahoo enables Moveee's API access".

Hammerhead Karoo: routes and workouts out, a heartbeat in

The Karoo connection is the most complete of the head-unit integrations. Once connected, Moveee can send a saved route or a structured workout straight to the unit through Hammerhead's API, and the Karoo tells Moveee when a ride has synced. In the current version that inbound message records a summary — name, duration, distance, when — and lights up "last synced" on the card. Turning those summaries into full Moveee rides with power and GPS is built on the same import plumbing as Garmin and lands with it. So for now: routes and workouts go out to the Karoo, and the ride itself still comes in through Strava.

WHOOP: recovery in, and what Moveee does with it

WHOOP is in a different group on the page — recovery and sleep wearables — because it takes no workouts and sends health data in. On connect, Moveee backfills your history and then keeps up by webhook and a recurring poll; the card shows "last synced" and offers a manual "Sync now" that is capped at two a day, because WHOOP keeps revising a day's scores for hours and the automatic sync already re-reads the last few days each time.

What arrives: the recovery score and its colour band, HRV as RMSSD, resting heart rate, average heart rate across the day, day strain, hours asleep and sleep performance, and your current weight, which updates the W/kg figures on your Power Profile. It all renders on the Health tab of Performance, day by day, using WHOOP's own bands — green from 67, amber from 34 to 66, red at 33 and below — as WHOOP's developer documentation defines them.

Now the honest part. As of today the training plan does not read WHOOP. The adaptive engine re-tunes your plan from the rides you actually did and from the check-in answers you give it, not from this morning's recovery score. Consuming readiness in the plan is on the list, and the data is being stored with exactly that in mind, but if you see a red recovery and a hard session on the same day, the app is not going to move it for you yet. That is a deliberate omission rather than a bug; the evidence that HRV-guided prescription beats a fixed plan is real but modest — Kiviniemi and colleagues found a small advantage in runners, and Javaloyes' cycling trial found the HRV-guided group improved peak power and 40-minute time-trial performance where the fixed-plan group did not — and we would rather wire it in carefully than bolt it on. On the measurement side, Bellenger and colleagues found wrist-based optical HRV agrees well with a chest strap at rest, which is the condition WHOOP's overnight numbers are taken in.

Zwift and MyWhoosh: files, not APIs

Neither platform offers a public API for workouts, so the "integration" is a file. Every Moveee workout can be downloaded as a .ZWO. In Chrome or Edge on a desktop, the Zwift card lets you pick your Zwift folder once, after which Moveee writes new workouts directly into Workouts/<your Zwift ID>, with an optional toggle to auto-add every new session. Other browsers get the download and a path to drop it in. MyWhoosh has no workouts folder on disk, so the card walks you through its web Workout Builder instead. Full details are in exporting workouts as .ZWO and .FIT.

The ones that say "coming soon"

TrainingPeaks, Intervals.icu, Ride with GPS, Suunto, iGPSPORT, Oura and Apple Health are all listed on the page with their status, and none is connectable today. TrainingPeaks has the flow built but is not taking new partners; Apple Health has no web API at all, so it needs a native iOS app before anything can sync.

A sensible setup for most riders

  1. Connect Strava with all three permissions ticked. If you use a Garmin, Wahoo or Karoo, let it upload to Strava as it already does.
  2. If you own a WHOOP, connect it and check the Health tab for a week before drawing conclusions — it needs a baseline.
  3. If you ride indoors on Zwift, connect the folder once from Chrome or Edge and forget about it.
  4. Check the Integrations page after any password change or app revocation. A dead token shows in red with a reconnect link; it will not fail silently.

Once the rides are flowing, the rest of the app takes over: the Indoor-to-Strava path, the calendar's planned-versus-actual matching, and the Fitness and Form chart all run off the same imported rides.

Sources 8

Where this article summarises a study, the study itself is linked — not a write-up of it.

  1. 1 Strava API reference · Strava Developers · 2026
  2. 2 Garmin Connect Developer Program overview · Garmin Developers · 2026
  3. 3 Wahoo Cloud API developer portal · Wahoo Fitness · 2026
  4. 4 Hammerhead API documentation · Hammerhead · 2026
  5. 5 WHOOP developer documentation: recovery · WHOOP · 2026
  6. 6 Javaloyes A, Sarabia JM, Lamberts RP, Moya-Ramon M Training Prescription Guided by Heart-Rate Variability in Cycling · International Journal of Sports Physiology and Performance · 2019
  7. 7 Kiviniemi AM, Hautala AJ, Kinnunen H, Tulppo MP Endurance training guided individually by daily heart rate variability measurements · European Journal of Applied Physiology · 2007
  8. 8 Bellenger CR, Miller DJ, Halson SL, Roach GD, Sargent C Wrist-Based Photoplethysmography Assessment of Heart Rate and Heart Rate Variability: Validation of WHOOP · Sensors · 2021
Ride it, don't just read it

Your own roads, indoors, in a browser tab

Moveee Indoor pairs your smart trainer over Bluetooth and rebuilds a route you have saved as a 3D road — real gradients, ERG for the intervals, and the ride saved with full power data. Nothing to install. Free while it is in alpha.

Start an indoor ride

Keep reading

Using Moveee

Power Profile explained: how Moveee places you from sprinter to diesel

Where every number on the Power Profile page comes from: the 3–30 minute Critical Power fit, estimated FTP, thresholds and FatMax, the VO2max regression, the Power Index spider, glitch nets, and lab test uploads.

Using Moveee

Planned vs actual: reading your Moveee calendar after a week of riding

How to read the week banners, the day cells and the four ride verdicts, how a ride is matched to a session, what the check-in does, and the honest gaps: no missed state, and verdicts only on the ride page.

Using Moveee

The check-in emails, and what your answers do (and don't) change

Seven check-in emails, three questions, a 30-day pause when you answer, and a clear line: the survey is read by a person and never edits your plan. The post-ride check-in is the one that does.

Using Moveee

What happens after a hard ride: how an adaptive plan eases your next day

The evening re-tune, step by step: the verdict on your ride, the deviation number, the window it edits, what gets eased and by how much, the card with Undo, and what the adaptive plan does not do.

Using Moveee

How Moveee builds your training plan: what the wizard asks and why

A walk through the plan wizard, question by question: what each answer changes in the engine, how the weekly load budget is set, where hard days land, and what the wizard does not ask.

Using Moveee

From Free to Pro: what changes in your plan the day you upgrade

What Free includes, how the 14-day adaptive trial works, and exactly what switches on when you go Pro: adaptation resumes, the coach unlocks, the caps lift. Nothing is rebuilt.

Using Moveee

Blocked dates: telling your plan about the week you can't train

How to block a day on the calendar, what the engine does with its share of the week, why blocking after the fact does not rebuild the plan, and how much fitness a short break really costs.

Using Moveee

Upload a lab test and let your zones come from real lactate numbers

How the Power Profile reads LT1, LT2, VO2max, FatMax and the lab's zone table out of a PDF, what it shows, and why it leaves your FTP for you to set.

Using Moveee

Route Engine: how Moveee picks the right road for tomorrow's workout

How a planned session becomes a route from your door: the spec, the search for real climbs and flat drags near home, fresh wind-aware loops, fixed scoring weights and templated reasons, plus what it needs and what it cannot do.

Training science

Recovery is training: sleep, easy days, and why rest makes you faster

You don't get fitter when you train — you get fitter when you recover from it. Here's how sleep, easy days and rest turn hard work into actual speed.

Training science

Fitness, Fatigue and Form: reading your training load without overthinking it

Three numbers explain almost everything about your training — whether you're building, digging a hole, or ready to fly. Here's how Fitness, Fatigue and Form work, in plain English.

Guides

How to use your Wahoo KICKR without Zwift (a free browser app)

Your Wahoo KICKR doesn't need Zwift — or any subscription — to give you a proper session. Here's how to use a KICKR (or KICKR Core, Snap and Move) with a free browser app that controls resistance, holds ERG targets and saves to Strava.

Ready to ride with a plan?

Connect Strava and get your first three-week block today — free.

Continue with Strava