Sync Wahoo SYSTM calendar with

Not quite a feature request but thought it was worth sharing as it might help others: I cobbled something together for myself to get my Wahoo SYSTM training plan in the calendar, thought others might benefit from it as well.

There are a few steps to get it working, details can be found on GitHub.

PS: @david, thanks for the app and having such an easy API integration!


Thats neat! Tx for putting it together!

1 Like

This is just Awesome @Bakermat !!
I am sorry that I’m not tech-savvy and python is out of my knowledge.

@david I know that @Bakermat set up this not as a feature request but… Damned that would be nice (hint, hint)


Unfortunately there is no public Wahoo SYSTM API (yet?), the script uses your username and password in order to login. That’s fine for one user running it on their own system, less than ideal from a security and supportability point of view if you have to support it for many users.

1 Like

Thank you for sharing this, it works and was really usefull! Just got the workouts offset by -1 day, but easily fixed it with a few drag and drops :grinning_face_with_smiling_eyes: Saved me a lot of time! :blush:

I just updated it to reflect some changes in timezones, as well as fixing the rides that didn’t match 100% so it should all be good now. Thanks for the pointers @gaiors regarding the MAP values.


OMG @Bakermat, this is so awesome!!
I am not used to Python on my Macbook but I got it up and running!!
This makes planning my year so much easier as I do use Systm but because of my odd goal (ultra race in the Netherlands) I have to customize my training and that is now possible.

Bedankt Patrick!


@Bakermat Just tested and looking fantastic! Thank you again for sharing this, and my pleasure to help! :clap: :clap: :clap:


Thanks for your work, @Bakermat :DD

Intervals.ICU is now excellent!

If you allow me, I would like to suggest something that you might consider in a future version:
when using a plan with Strenght and Mental exercises, it would be nice to exclude those from syncing, like yoga (UPLOAD_YOGA_WORKOUTS = 0).


1 Like

Awesome work @Bakermat !

Question; Could you adjust the script to overwrite existing, future workouts instead of creating duplicates?

I’m tweaking the trainingplan, and ended up with multiple workouts :joy:

Work’s been busy and I didn’t see your replies, I’ve changed my settings to get notified about it. Thanks for the feedback and the suggestions. I made some improvements today that hopefully will help some of you.

It crossed my mind but there is a fair bit of extra work involved to do that, as I would have to store detail about the created workouts and edit/overwrite them instead of creating new ones.

If you’re just testing if it works, I recommend to use a small date range instead and only use the multi-month plan range when you’ve decided on the program you want to use.

That’s a good point and shouldn’t be too difficult to add, will look into this.

I managed to get these changes added, so just published version v1.3.0:

  • Added support for runs, swims, strength training besides yoga. These are disabled by default.
  • Added support for adding the Wahoo SYSTM description to an workout. It’s pretty verbose, so disabled by default.

If you’re upgrading, the config file won’t be overwritten. If you want to change the defaults, you’ll have to either remove your current config file and it’ll get created again, or you can add the relevant lines yourself to your existing sufferfest.cfg if you want to use this:



updates are coming at full speed!

Thks thks thks

Now activities get duplicated.

Before it didn’t happen, I think.

Any workouts already in do not get overwritten, the app only creates new workouts. So if you run the app multiple times for the same date range you will get duplicates if your plan hasn’t changed.

If that’s not what you meant let me know and I’ll look into it, just checked with a clean calendar and I see only one event a day as expected.


The behaviour you are describing was present in v1.0.

Now, with 1.3.0 and with descriptions enabled, it creates duplicates.
I did small changes to my plan calendar, and a new sync created duplicates for each run (I had to manually remove 3 copies of each for a 3 months plan :slight_smile:

One more thing: it still considers today as past.
If I do a change to today session, it doesn’t sync with UPLOAD_PAST_WORKOUTS = 0.

Keep it going!
Thanks! :beer:

Yes it does, that’s the behaviour I mentioned above: v1.3.0 or below does not keep track of what’s uploaded to and just creates a new workout which results in duplicates if you run the app multiple times.

I didn’t encounter this myself. Timezones can be finicky to work with, are you in the same timezone as is set in Having said that, the way the dates were handled wasn’t as clean as they could be.

I’ve just simplified that part in v1.4.0 which I’ve just released, which also has support for deleting workouts (in case you want to change training plans) as well as overwriting the same workouts in to avoid duplicates.

i was just thinking myself how to achieve that