Import all data from Strava

Intervals.icu supports retrieving Strava activities using the Strava API and supporters can fetch their complete history using the “Download Old Data” button in /settings. However this data is subject to the Strava API terms of service which prohibit Intervals.icu from showing activities obtained via the API to your Intervals.icu followers (coaches can see them). Intervals.icu also has to delete the data if you disconnect Strava or Strava requests it.

Intervals.icu also supports importing the archive Strava emails you when you request all of your data. This data is not subject to the Strava API restrictions and is not deleted if you disconnect Strava. Click the “Import All Strava Data” button in the Strava box in /settings:

Screenshot 2024-11-28 at 09.36.05

When you receive the email with the archive paste the link into the field in the dialog. Note that this is a premium feature only available to supporters.

You can choose to only import some activity types and to import weight stored on the activities. Use the optional start and/or end date to limit the range of activities imported. You can use this to test the import over a couple of months before doing everything,

If the imported activity matches an activity already on Intervals.icu from the Strava API then the API activity is replaced. The following fields are copied from the Strava API activity to the imported activity:

  • Name and description
  • Trainer, commute and race flags
  • Attachments
  • Comments (the activity chat)
  • Gear (unless “Do not use gear from Strava” is ticked in /settings)
  • Power, heart rate and/or pace zones
  • FTP, W’, LTHR and threshold pace
  • Training load if it has been manually edited, otherwise it is re-computed
  • Warmup and cooldown time
  • Ignore power, pace, heart rate, velocity and time flags
  • The intervals and ignored parts if the activity streams match. This should be the case unless the activity was cropped on Strava

If the activity is new then the following fields are imported from the Strava archive file:

  • Name
  • Description
  • Type (unless the type from the activity file is more specific than what Strava has e.g. “Run” will not be used if the file says “Trail Run”)
  • Weight (if the box was ticked)
  • Commute flag
  • Calories
  • Bike (new gear created if needed)
  • Shoes (new gear created if needed but name is not available so the id is used)
  • Perceived exertion

The following fields are not present in the file and so cannot imported:

  • Race flag
  • Trainer flag
  • FTP (the Intervals.icu FTP currently set for the sport in /settings is used)

If the imported activity already exists on Intervals.icu from Garmin, Polar, Suuto, Coros, Wahoo, Dropbox, manual uploads etc. then the imported activity is ignored. The activity file needs to be exactly the same to be considered a duplicate.

The importer now supports the following languages: en, de, zh, nl, it, pt-BR, fr. It also cc’s me on the mail it sends if the language isn’t recognised. So I will more as they show up.

You can update your FTP history after the import using the activity list view. Add the FTP column to the table and edit directly or use Edit → Edit to bulk update blocks of activities at a time:

You can also use that screen to set the trainer flag etc…

Intervals.icu will send you and email when the import is complete. This lists what was done with each file and documents any issues. The import might take several hours if you have a lot of data.

Activities without files on Strava are imported as manual activities if the date can be parsed. Unfortunately Strava uses a localised date format that differs even for people in the same locale. Intervals.icu tries to guess the format but if this is not successful then manual activities are not created.

11 Likes

Wow fast work this is cool. If I have already downloaded the archive as a file (about a week ago), is this useable or should I go back and get a new link? thanks!

Awesome feature!

I don’t have a Strava account anymore, but I did download the archive.
I think you have to connect Strava to see the import button and it looks like the link is the only option (no upload)?

nope 7d limit and I was on 8d so had to request again and it came through quickly. Resubscribed to Intervals and very pleased thanks David.

1 Like

I have fixed this. The button is now available when not connected. Tx.

The file is too big to upload. You need to make it available for download somewhere (Google Drive, Dropbox, One Drive etc.), share it publicly and paste the link into the dialog.

2 Likes

The importer now supports the following languages: en, de, zh, nl, it, pt-BR, fr. It also cc’s me on the mail it sends if the language isn’t recognised. So I can add more as they show up.

1 Like

@david , I completed this task…it worked, but the Pace data for theses downloaded workouts appears to be corrupted….my Power Graphs for each workout are correct, but my Pace graphs are all flatlined and do not show the changes during the workouts……

I had a look at one of your virtual rows and the velocity data is off:

It doesn’t match the distance data at all. Also the file doesn’t display properly on fitfileviewer.com.

I have added a workaround for virtual row files with this problem and will deploy Tues AM (GMT+2). The velocity_smooth data is generated from the distance data with 5 second smoothing (distance data is noisy).

Yes, I was seeing the same issue. My Strava Fit files generated from data created on my Ergatta rowing platform appear corrupted when I’ve tried to view them.……the data that intervals and rowsandall.com have been obtaining from their API always appeared in the data fields and displayed fine🤔. It also was available if exported from your and Sander’s platforms…I suspected how the API provides data and what they are providing when they generate their .fit files is different……

@david , one last observation on this…all of my Strava api accessed data from both Ergatta and SmartRow have been previously auto-read/classified as “rowing” when brought into intervals, previously displayed properly in intervals and on Strava, and the Pace data was available when I manually dowloaded intervals-generated .fit files and exported them to other platforms. This Pace issue only affected the Strava .fit files that originated on the Ergatta platform as best as I can tell.

I had originally reclassified my SmartRow Pulley data in intervals as “Virtual Rowing” to differentiate it from my Ergatta data as the data originates from two different sensors. I subsequently removed the SmartRow workout data intervals to eliminate it from my fitness charts as it was duplicated from the same workout, just different capture equipment. I was in the process of doing that data cleanup again when I observed this issue

This SmartRow data reloaded with my bulk .fit file download from my Strava account last night as I couldn’t filter it out. I do believe Strava is classifying both the SmartRow and Ergatta data as “rowing” and expect the velocity issue you observed applies only to the Ergatta origin fit files from Strava

Strava was probably also generating velocity from the distance data like Intervals.icu now does. I have deployed the fix so you need to do “Reprocess File” on those Ergatta files. The activity list view is useful for doing this in bulk.

I noticed that some of your rows have type “Other”. You can use the list view to fix these (do Edit → Edit and specify “Rowing” as the type.

Thank you @david … did a partial run on my data…works as promised. Your continued responsiveness and customer service is impressive and sets a high standard other platforms could stand to learn.

One question going forward. My Strava API-acquired erg rowing workouts were posting to intervals as a “rowing” workout type. I’m observing the uploaded Strava .fit files are posting as a “virtual rowing” type. Is there a file coding issue driving the change?

I’m curious since I will have to manually upload my erg rowing workout files for a while andI want to make sure I keep my workout classifications consistent.

If it’s indoors. It should be either indoor rowing or virtual (with a gps map).

Rowing should be outdoors only. This makes it easier to differentiate

I’m with you….

I’m just trying to understand the change in intervals automatic assignment of workout type between Strava’s API upload (comes in as “rowing”) and Strava .fit file upload (comes in as “virtual rowing”) of the same workout.

Tx. The fit files have sport=ROWING and sub_sport=INDOOR_ROWING so Intervals.icu uses virtual row. The Strava import uses the type from the activities.csv in the Strava data archive instead because that is what was set on Strava.

1 Like

Thx. Last question…should I return to on-the-water rowing, I would expect my CP/FTP/W’ will be different given the equipment used to capture the Distance/SPM/Power readings is different.

Can I set up “rowing” and “virtual rowing” as two separate “Sports”, each with their own training zones?

1 Like

Yes. you can. same like some cyclist have indoor ftp vs outdoor FTP and/or Ride vs Gravel Ride

1 Like

Confirmed. This is what I am using. Works pretty well.

2 Likes

@Sander_Roosendaal , btw, my integration from intervals to rowsandall is working perfectly….thx!

1 Like

Thanks @david
I just tried this and got no import and the following error:
java.lang.StringIndexOutOfBoundsException: begin 0, end 75, length 67
Am I doing something wrong?