What's your Workouts Information Architecture

Hello there! Despite being a little embarrassed for investing time in this, I would like to share my “information architecture” to gather feedback. Here is it, with my considerations right bellow:

My considerations:

  • I have two data inputs: Garmin Watch and Wahoo Roam. For cycling purposes, I use only the Roam nowadays. (How more straightforward would this diagram be if I had bought a Garmin cycling computer…)

  • Garmin is still my de-facto database; after experimenting with Whoop for six months, I decided to stick to one device for HRV, RHR, sleep, and workouts. But there’s a catch here, keep reading.

  • I’m moving from TR to TP because I’m starting with a coach. To bring the scheduled workouts to Roam, I need to connect Elemt and TP directly;

  • TP doesn’t have a read-API for RunGap to query it. I could connect my Wahoo account to RunGap directly, but there’s another reason here to link through Strava: to bring Strava routes to Elemt.

  • Wahoo → Strava → RunGap → Garmin is the common suggestion to bring Roam workouts to Garmin. Still, I have just recently figured out that Garmin does not take into consideration for their Training Status the data outside Zwift/TrainerRoad/Sufferfest/Tacx (DCRainmaker wrote it much before I made my decision to buy the Roam. Nevertheless, I just recently found the article about it.

  • I have acquired the Whoop and the Roam simultaneously, so I have not paid attention to the Training Status in the last months. One could argue that fatigue, form, and fitness are the core of TP, thus making the Garmin information about freshness non-useful. However, Garmin’s website says it considers HRV data. This could not be perfect yet, but it’s one more dimension to understand (very quickly, from a watch screen) the ongoing status of the training.

  • RunGap is not perfect, and more often than not in my case activities doesn’t sync, I keep refreshing it, and at some time have to share manually, specially when sending it to Garmin Connect.

If someone is interested in following up on the discussion, the link to create a copy of this diagram is available here.


                                      |-> Strava, RideWithGPS, Intervals.icu,
                                      |   SRAM, Zwift, etc.
Garmin bike computer -> GARMIN CONNECT|<-> TRAININGPEAKS -> WKO5
                                      |      ^
                                      |      |
                                      |      |
                                      |      v 
                                      |-> RunGap 
                                            v        <- Strong
                                        Apple Health -> Athlytic
                                                     <> Sleep++

TrainingPeaks (free or paid) has ALL structured workouts, completed workouts (cycling), along with other workouts (swimming, hiking, etc.).


FYI - if you pay for the RunGap “Swag Bag” and then tell it to “Fake Garmin Devices”, it will send the Training Effect info to Garmin Connect.


Here’s mine. It’s busy, but I don’t change it because it works :man_facepalming:


I think:

Ive a Garmin Watch/ Edge which uploads to GC which in turn loads them to Strava/RWGPS/TR/Intervals/ Free TP

The Strava also pushes to My Windsock (which sends some data back) and Veloviewer if I tell it to will pull from Strava.

Or I record a WO on the TR app which will push to Strava and GC

I usually record on the Edge in parallel to create a file that pushes to intervals, RWGPS, Strava and gives me temperature information. I usually delete it from GC and Strava (before making the WO public).

Rarely when things die I’ll record directly into the Strava app which will send to TR but I need to export manually to GC. I’ve also recorded in RGT in the past which has sent stuff to GC/Strava/TR/ etc.

I record everything on my Garmin, and that is the one source for data.

Mine is simple really…


I have no idea, I just link everything to intervals.icu and let intervals.icu sort it out. I use wahoo, Join, strava and Dropbox


For everything except cycling (so swimming, running and weight training, with the occasional trail running and hiking) I use a Coros watch. For indoor cycling, I use trainerRoad (even with my custom workouts) and for the outdoors, I use my Garmin Edge 5-hundred-something.

It all goes to strava and intervals.icu.

I would really like to be able to sync coros to/from garmin as well, to have all the activities on the same platform, but it seems to be quite complicated to achieve, so in the end I stay with the wonderful intervals.icu.

1 Like


The only item of value I have to add here is that if you have a Garmin watch and are sick of the training status not reflecting the work you do in ways that haven’t paid Garmin a load of $$$ to accurately integrate, you can use fitfiletools to change the “recorded device” model to a Garmin model and then upload direct to connect. When you next sync with your watch, it will calculate the Garmin Training Score / recovery for that and integrate it to your stats.

I used to do with with my Wahoo Bolt.

Now I just cba and turn off the garmin training tracker as it’s stupid anyway and just use Intervals or XERT to track fitness.


A +1 that this does work. I’m lazy, so I pay for the Run Gap Swag Bag, which does the editing for me.


Mine’s definitely a little nutty, but here it goes:

  • Activities recorded on my Garmin devices are sent to Garmin Connect, and from there they go to Strava, TrainingPeaks and Intervals.icu. Garmin Connect gets scheduled workouts from TrainerRoad and TrainingPeaks and pushes them to my devices. Garmin Connect also provides fitness data (weight, RHR, HRV, etc.) to Intervals.icu and TrainingPeaks.
  • TrainerRoad workouts get sent to Garmin Connect, TrainingPeaks, Strava, and Dropbox. TrainerRoad gets outside activities from Garmin Connect and Strava.
  • Zwift activities get sent to Garmin Connect, TrainingPeaks, and Strava. Zwift gets scheduled workouts from TrainingPeaks (I mostly use this for treadmill runs).
  • FORM gets scheduled workouts from TrainingPeaks, and sends completed swims to TrainingPeaks and Strava. FORM doesn’t integrate with Garmin Connect, and I don’t bother to import the swims there manually.
  • Intervals.icu gets completed activities from Garmin Connect, Strava, and TrainerRoad (by way of Dropbox). Thankfully it’s very good at deduplicating activities :grimacing:
  • I get all my activities into Apple Health by syncing the FIT files using the HealthFit app. TrainerRoad FIT files are stored in Dropbox, for everything else I export the FIT file from Strava.
  • I have an iOS shortcut that lets me enter my weight in the morning and then simultaneously saves it to Apple Health and sends it to IFTTT, and from there it’s synced to Strava and Fitbit. Zwift then syncs my weight from Fitbit.

Edit: I’ve updated the graphic like five times because I keep remembering things :joy:


Data Sources:

  • Zwift
  • Apple Watch - non-cycling workouts, (e.g., strength, run, walks, etc.) and metrics like sleep, HRV, RHR, etc.
  • TrainerRoad
  • Garmin Connect

Data Syncs - where I want to get all workouts:

  • TrainingPeak / WKO5 - everything
  • Apple Health - everything
  • TR - just cycling

Biggest Issues:

  • Lack of a native way to get Zwift completed workouts to Apple Health / TrainerRoad, so I’m connecting Zwift → Strava, and then Strava → TrainerRoad & Strava → Garmin Connect → Apple Health.
  • I end up getting duplicate workouts in TrainingPeaks from having too many services sync’ing to each other in chains

OK, here’s mine. I still have Golden Cheetah on standby, but I seem to be using it less and less, as Intervals seems to cover all the analysis I need.

I record all rides (TR, Zwift and outdoor) on my Garmin and sync through GC. I disconnected Intervals from Strava so now I have no dupes to deal with there. Zwift sends rides to Strava, TR doesn’t send them anywhere.

I set up HRV sync and used it for about a week, but I don’t use it now.

My smart scale is a $25 Renpho from Amazon with its own app.

In making this diagram, I just realized activityfix can connect to Garmin and get sensor information and use that to tag rides, so I guess that gets me one step closer to tracking equipment usage (which I don’t currently do).

Frustratingly this has stopped working for my rides on XERT. Even if I swap to a Fenix 6x or garmin 520, the connect app refuses to “see” them and so tells me no activity has occurred (even if the activity shows on connect.garmin.com).

Any ideas?

You’re using the RunGap Swag Bag subscription and have Garmin set to spoof devices?

You are ready for the solar winds this year! Kudos!

1 Like

I think you really would benefit from RunGap. Hard to justify a reason to refactor “old-code”, but keep that in mind! Thanks for sharing!

1 Like

Tell me more, it’s not clear from their website what parts of my workflow it could replace.