[Need More Info] Custom "Ride" workouts labeled as "mountainbike" in FIT file

When creating a “Ride” workout, exporting to .fit and then importing it to a Garmin device (Edge 1030 Plus in my case), the sub_sport field in the FIT file is labeled as “mountainbike” in every FIT file message except for the session summary.

After some digging I found out that also the .json export has some related unexpected (for me) behavior: When exporting a cycling workout to .json, the types are always these, even when selecting for example “VirtualRide” or “MTB” specifically:


I am not sure whether this is a bug or if I do not understand the intention of these workout types. Can you share the intention behind these types and how these should be parsed in for example the .fit and .json exports?

These are all marked a under the grouping of “Ride”

in my case, I have GravelRide as separate in /settings

so when you’re exporting as JSON, these are expected.

you should be looking at the FIT export specifically

If I look at my /settings, I suspect that the “RIDE” category (that is on the same level as “RUN”, “SWIM”, etc.) is more like a label for a group of activity types than a specific “Activity Type” (like the “Ride”, “MTB”, “Virtual Ride” in your screenshot).
Following that logic, when I create a “Ride” workout, I would expect it to also just list “Ride”. Or am I misunderstanding the rationale here?

It’s also still somewhat surprising that all these types are also listed when I explicitly create e.g. a “Gravel Ride”.

Also, upon further investigation, it looks like .fit files support not having a sub_sport, in which case saving “mountainbike” as the default for “Ride” workouts is not needed.

this is correct.

this means that you’ve resolved your issue?

Agreed that that is the expected behavior, but it is not what is happening: If I select “Ride” as the activity type, all the activity types listed earlier are present in the .json. Can I then assume that that is a bug or do I misunderstand you?

No. Intervals.icu sets this sub_sport field to “mountainbike” in my case. If leaving it blank is the intended/expected behavior, then intervals.icu could implement leaving the sub_sport blank.

For JSON download, the activity will list all the relevant/grouped items that is RIDE. I think I misunderstood your question. I tot you are saying if you create a RDE category and ONLY include RIDE in it (and not like my screenshot that shows Ride/Mtb/Virtual)

in my setup, when I download the workout as FIT, this is what’s shown. SPORT = Cycling. I don’t see a Subsport field.

When you download as JSON, it will show up as Ride/MTB/Virtual Ride

I downloaded the “testing things” workout from Monday on your calendar as a fit file and it doesn’t have any subsport set?

Screenshot 2024-07-12 at 06.08.04

The types you are seeing in the JSON download are for the “sportSettings” object. It seems I missed including the type of the workout in that download.