{
  "$type": "site.standard.document",
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreid7sty2iaxoliitaxsmoqoultyphntjtwmrute2lt5grd6roz66xe"
    },
    "mimeType": "image/jpeg",
    "size": 196386
  },
  "description": "Doing TrainerRoad workouts in Zwift just got a lot easier.",
  "path": "/2025/02/12/trainerroad-launches-zwift-integration/",
  "publishedAt": "2025-02-12T15:00:00.000Z",
  "site": "at://did:plc:vmxpdybfbj3ogs4w6p5pjhhs/site.standard.publication/self",
  "tags": [
    "Apps",
    "Cycling",
    "Zwift"
  ],
  "textContent": "I've been using TrainerRoad for all my cycling training, with great results, since even before I got into triathlons. I love the training plans and all the machine learning magic they apply to them, but doing long workouts indoors while looking at nothing more than a graph and some numbers is mentally challenging, to say the least. Or as a certain cyclist would say: \"It builds character.\" There are days when completing a two-hour (or more!) cycling workout indoors requires more mental endurance than I have available, especially in the winter, when I can't ride outdoors to break the monotony. On those days, even a little bit of distraction helps. Zwift is a good one; I enjoy the visuals and collecting route badges and achievements while exploring Watopia definitely helps pass the time. Over the years I've tried the two common ways of using TrainerRoad with Zwift: Either by running them side by side, or by recreating the workouts manually and doing them in Zwift. Both methods work reasonably well, but they're a bit of a hassle to set up and each comes with their own set of downsides. About a year ago, though, Zwift announced a new Training Connections API, which enables third-party training platforms to send cycling and running workouts over to Zwift, so that users can do them there. Since that announcement I've been waiting with bated breath for TrainerRoad to integrate with it, and it finally launched earlier this week. I was invited to try it out while it was in closed beta, so I've had the chance to do about a dozen TrainerRoad workouts in Zwift over the past few weeks; here are a few first impressions, which are overall very positive. If you'd like to try Zwift, sign up using this referral link and we'll both get a free month. How it works Just to state the obvious: You'll need to be a subscriber in both platforms to make this work (although it might work with a lapsed Zwift account if you stay under the monthly 25 km limit). If you are, setting this up is quite simple, all you need to do is go to the Connections page in the TrainerRoad website, hit the \"Connect\" button under Zwift, log into Zwift, and authorize the connection. Once this is done, TrainerRoad will push any workouts that you have scheduled for today and tomorrow into Zwift, and today's workout will show up in the \"For You\" carousel in Zwift's Home screen. If you don't have an active training plan, TrainerRoad will push a recommended workout instead; this is based on TrainerRoad's TrainNow feature, which uses machine learning to suggest a workout based on your recent training history. The syncing happens automatically: If you put a workout on your calendar, it'll show up in Zwift almost instantly (or at least quickly enough that it'll be in Zwift by the time you switch apps). Similarly, if you select an alternate workout, or accept plan adaptations suggested by TrainerRoad's Adaptive Training system, those changes will be immediately reflected in Zwift. That does mean that if you need to manage your training plan, such as selecting alternates or moving workouts around, you'll still need to do that on TrainerRoad before opening Zwift, but it all works seamlessly (and TrainerRoad is working to add an option to automatically accept adaptations and FTP adjustments). With your connection set up, sending TrainerRoad workouts in Zwift is pretty easy. If you have a a workout scheduled for today in your calendar... Today's workout: \"Bashful -1,\" a sixty-minute VO2 max workout. ...then simply open Zwift... ...select it from either the Home or the Workouts screen, pick a route to do it in, and off you go. You'll also get a TrainerRoad kit, which looks 🔥 with the Giro Vanquish helmet and the Fire Socks. Once you finish the workout, you'll be presented with a post-workout survey to record your RPE on a scale of 1–10. This gets sent back to TrainerRoad and converted into their 1–5 scale, although you can always update the rating in TrainerRoad afterwards. Then, you can end and save your activity, or keep riding if you want. Once you save the activity, it'll get synced back to TrainerRoad and any other services you have connected, such as Strava or Garmin Connect. This ended up mapping to \"moderate\" in TrainerRoad's scale. What happens if you can't complete the workout for some reason? For example, if it was too hard, or you ran out of time? Then you can go into TrainerRoad and answer the post-workout survey with the reason why. This \"struggle survey\" may pop up automatically, or if you select \"I did not pass\" from the regular post-workout survey. The reason you select may determine how TrainerRoad adapts upcoming workouts. For example, \"time\" may not trigger adaptations, but \"fatigue\" or \"intensity\" might. What works well I've been testing this integration quite a bit over the past few weeks and it all works pretty great, but there are a handful of things that have sold me on it, although not all of them are specific to TrainerRoad. In no particular order: The Companion app and controllers are game changers In TrainerRoad, you can use the on-screen controls to do things like pause the workout, adjust the intensity up and down, or toggle erg mode, but for me, that usually involves reaching over my handlebars or aerobars and tapping a small target on my iPad's screen with sweaty fingers while I'm fighting for my life. In the past I've experimented with things like using a Stream Deck as a TrainerRoad controller, but using the Zwift Companion app on my phone (which I have attached to my Garmin mount using this MagSafe adapter) or the Zwift Click makes it a lot easier to control the workout. I mostly use them for shifting during free rides, but it's pretty great to be able to adjust workout intensity right from my aerobars. I like the arches at the end of every interval I swear looking at the timer tick down in TrainerRoad during a hard interval only makes it slow down, so I like the way the end of intervals are presented in Zwift as arches that you ride through---somehow I can convince my legs that I can make the interval end sooner if I just pedal harder. I can't explain why it works, but it does. Must go faster... must go faster... TrainerRoad workouts work great as pre-race warmups I don't like spinning mindlessly in the pen before a race in Zwift. For one, it's not enough of a warmup for me, but also it's not recorded, so I can't track its training load or anything. I've found that short TrainerRoad workouts like \"Clyde\" (a twenty-minute threshold workout) work great as a warmup, but in the past I've had to time them properly to make sure I have enough time to finish it, save it, switch over to Zwift, pair my sensors, and join the event. This integration makes warmups seamless: Now I can simply schedule my warmup in my TrainerRoad calendar, do it in Zwift, and hit the \"Join Event\" button to teleport to the starting pen whenever I'm ready. The workout gets saved and sent to TrainerRoad automatically, separately from the event I'm doing. I really didn't have to do this right after that VO2 max workout, but I needed the screenshot. Let's just say that I was well and thoroughly warmed up for the Tour de Zwift Stage 6. Precise power targets Until now, workout targets in Zwift were rounded to the nearest 5 W, so if for example an interval called for 248 W, it'd show up as 250 W on the screen. This may not sound like a big deal, but for people with low FTPs, that rounding may be impactful. In any case, if a workout calls for 248 W, dammit, I want to do 248 W. This is a change that has been requested in the Zwift Forums for a few years now, so I'm impressed TrainerRoad convinced Zwift to do it. Pausing a workout doesn't stop the recording I don't like to pause in the middle of a workout, but sometimes I can't avoid it (for example, if I get paged at work). If the pause is particularly long, I like to spin for a few minutes before restarting the workout so I can get my heart rate back up, but on TrainerRoad, none of this is recorded while the workout is paused. In Zwift, pausing the workout simply puts you in free ride mode and continues the recording, which helps me track my training load and fatigue more accurately. Once I'm ready, I can restart the workout right from where I left off. The workout data is out of the way This is a matter of personal preference, but I do like that all the information about the workout, like upcoming intervals and remaining time, is at the edges of the screen, so I can keep them out of sight if I want to, simply by focusing on my avatar and the scenery. The list of intervals on the left side of the screen has been somewhat divisive in the TrainerRoad Forum because it's so hard to parse, but I actually like that it's hard to parse. Sometimes I don't want to know how much of the workout I have left and it's much harder to ignore the timers and blue bars on TrainerRoad since they're front and center. You can turn off workout instructions I really don't like the way Zwift displays workout instructions smack dab in the center of the screen. It's very obnoxious and distracting, and it's one of the reasons why I don't like to do Zwift's built-in workouts, since there's no way to turn them off in the settings. However, if you turn off workout instructions in TrainerRoad's settings, they won't sync over, so they don't appear in Zwift. Wonderful. All Zwift activities get synced back to TrainerRoad While TrainerRoad will only push scheduled cycling workouts to Zwift, once the connection is enabled every activity completed in Zwift, including runs, will be synced back to TrainerRoad. This is a good thing for a couple of reasons: First, it means that all your Zwift activities, including workouts (whether or not they come from TrainerRoad), races, group rides, and free rides, will be analyzed by TrainerRoad and taken into consideration for AI FTP detection and Red Light Green Light fatigue detection; and second, because this removes Strava as a dependency to get all these activities into TrainerRoad, so there's one less reason to keep it around after their recent policy changes. What could be better All that said, there are a few things that I would love to see changed, most of them on Zwift's side. Again, in no particular order: Scheduled running workouts don't sync TrainerRoad has full triathlon plans that include runs and swims, so I'd love to see the runs sync over to Zwift so I can do them on my treadmill. I don't expect this to happen anytime soon---those runs are RPE-based, so there's no target pace to sync over, and I imagine it'd be a big project for TrainerRoad to start tracking or calculating running pace zones (AI FTP but for running would be incredible, though). At least completed Zwift runs do sync back to TrainerRoad, so there's that. For now I'll just continue to recreate these workouts manually in Intervals.icu to sync them to Zwift. I've also been told that Zwift integration is coming soon to Runna, which would be even better, even though it'd mean paying for yet another service. The Kickr Climb doesn't work during workouts I bought a Kickr Climb last year and have enjoyed using it during Zwift races and events; I love big climbs, so I like the immersion it adds to my rides. I also like the way it works in TrainerRoad---obviously there's no terrain to simulate there, so it simply sets the grade based on the percentage of FTP of each interval. I've found that the small changes in position from the bike tilt can make a big difference in comfort and engagement during long indoor workouts, so I was disappointed to find out the Climb doesn't work at all in Zwift during workouts, despite it having been requested for years in the Zwift Forums. I would love if the Kickr Climb continued to follow the terrain in Zwift even in erg mode. In other words, if I'm doing an interval at 200 W and hit a 15% hill, then I want to continue to do 200 W but with the bike tilted 15%. There's no way to rewind a workout or repeat an interval While Zwift makes it easy to skip the current interval if you need to bail out, there's no way to rewind the workout to repeat an interval. This is something I do in TrainerRoad sometimes---if I have to pause my workout for whatever reason, I try to do so during a recovery interval, but if I have to do it in the middle of a work interval, I like to go back and repeat it. And yep, this is another feature request that goes back years and years, with multiple threads about it on the Zwift Forums. FTP changes don't sync between platforms TrainerRoad workouts done in Zwift are based on the FTP set in TrainerRoad, but TrainerRoad can't actually update the FTP saved in my Zwift profile, or vice versa. This is mostly a cosmetic issue; having a different FTP in Zwift only affects the power zones in the various graphs, but I still wish I could keep my FTP synced in both platforms whenever one of them detects a change, if nothing else so I don't have to remember to do it manually. Erg mode in Zwift is slower to respond Say what you will about TrainerRoad, but they have erg mode down to a science. Zwift responds slower to changes in power, and it's very noticeable, particularly in VO2 max workouts where the difference in power between the work and recovery intervals is usually large. Whereas the power ramps up very quickly in TrainerRoad, I've seen it take almost ten seconds in Zwift, and you'll likely see the \"More power!\" prompt quite often. It hasn't really detracted from any of my workouts, but it can be impactful in workouts with short, intense intervals. (On the other hand, a lot of people would argue that you shouldn't do VO2 max intervals in erg mode, and at least the Companion app makes it easy to turn it off when necessary.) Despite these few nitpicks, I think doing TrainerRoad workouts in Zwift is a game changer. It removes most of the friction needed to set it up and I get the best of both worlds: TrainerRoad's excellent, ML-driven adaptive training plans, with the visuals and gamification of Zwift. It could simply be the novelty of it, but it has made a noticeable difference in my ability to power through long workouts indoors. The VO2 max workout I used for the screenshots in this post is a good example: It wasn't particularly tough, just a 3.7 in TrainerRoad's difficulty scale, but even then I think I would have struggled mentally to complete it in TrainerRoad. My winter blues are pretty rough this year, so I'll take all the help I can get. Will I switch completely away from TrainerRoad? Probably not---there's still a time and place for it, since I'm sure there'll be times where I'll want to do something other than Zwift during a workout. But for days when I just need a little visual stimulus, this integration works as well as I could have hoped, and then some---TrainerRoad went above and beyond, even successfully cajoling Zwift into addressing some long-standing feature requests. Not bad at all.",
  "title": "TrainerRoad Launches Zwift Integration: Here’s How It Works",
  "updatedAt": "2025-08-19T22:52:46.320Z"
}