DC Rainmaker

3 Ways to Automatically Copy Your Garmin Training Data to Other Fitness Sites

With the rise of connected devices that automatically upload your rides and runs upon completion to Garmin Connect, there’s been a corresponding rise in usage of 3rd party sites that synchronize that data to other training log platforms such as Strava and Training Peaks.  These middle-man sites operate by copying your activity data automatically upon detection of a new activity being uploaded, to the final destination of your choice.

It is in some ways ironic that with increased connectivity has come more complexity in getting files where you want them.  That’s largely due to the fact that Garmin has been less than entirely easy when it comes to getting data where end users plan to analyze it.  While Garmin Connect does have an API available, that API isn’t well documented, nor supported at all, and hasn’t been updated in years.

Thus most of these 3rd party applications have had to spend a bit of time reverse engineering how things work.  Sometimes that works well, but other times that’s caused some ripples between Garmin and 3rd party apps – such as with CopyMySports earlier this year being throttled from an activity polling standpoint.

Ultimately though, these solutions do offer users a great way to quickly and seamlessly get data from Garmin Connect to 3rd party sites.  With that, let’s run through the three I’m aware of today.  Oh, and all of these are free.

Tapiriik:

We’ll start off with Tapiriik from the very beginning, which takes you here, to their landing page to select which services you want to connect to.

In my case, I’ll start with Garmin Connect first:

Once I’ve done that, you’ll see how ‘Garmin Connect’ is shown on the upper half with ‘Connected’ next to it, while the others are down below indicating they aren’t connected to yet.

So next I’ll choose Training Peaks, and complete the same thing:

Once that’s complete, you’ll see both listed on the upper half.  You’ll also see the option to ‘Synchronize now’, as well as ‘Automatic Synchronization’ below it.

In my case, I went with ‘Automatic Synchronization’, which costs $2 per year.  Otherwise, you can just press the ‘now’ button and it does it for free.

After I paid my two bucks via PayPal, I was back on the landing page and able to configure settings.  In this page I can choose which accounts sync where.  Sorta like being a traffic cop.

In my case, I didn’t want to sync from Training Peaks to Garmin Connect, so I unchecked that option:

Then, I let it do it’s thing for the initial synchronization.  Because I have a couple of activities in Garmin Connect (uhh…thousands), this took a bit of time.  I simply went to bed.  It sorta worked out better that way.

With that, it finishes some time later (just insert some montage music).  And, magically, all the activities in my Garmin Connect account show up in Training Peaks (an account I tend to use for random testing and thus doesn’t have all my activities in it):

Once it completed, you’ll see how frequent it synchronizes.  This is a bit different than CopyMySports which does polling at an undefined frequency.  In this case, Tapiriik has a defined 60-minute interval.

The next day I went out for a run, and let the Garmin FR620 automatically upload the run like normal to Garmin Connect via WiFi when I got back to the house.  For fun, I timed to see how long it would take to show-up in Training Peaks.  In my case, about 10 minutes and 9 seconds.  But why 10 minutes?  Well, that’s just when it happened the next sync would occur – which is every 60 minutes.  So it was mostly just pure dumb luck it was on the shorter side rather than the longer side.

The long pole in the tent here is pretty much the polling process to pickup the activity from the source service (i.e. Garmin Connect).  The creation of the activity in the destination service (i.e. Training Peaks) takes mere seconds.

At this point, the activity is ready to use as normal for analysis/logging within Training Peaks.   Note that for Training Peaks you’ll need to be either a Premium or Coached member for sync to work, which, I think is a fair business move.

Of course, Tapiriik supports other services as well (like Strava), I just happened to use Training Peaks as my example.  Overall it works quite well, and is the most ‘known’ in terms of having a simple countdown clock until sync.  While I wish the synchronization were more frequent, I suspect that’s purely a case of not ticking off Garmin with too many requests.

Plus, for free, it’s hard to beat.

CopyMySports:

CopyMySports has been around quite a long time, though under their previous name of ‘GarminSync’, which they changed mid-summer.  The application is largely aimed at copying data from Garmin Connect to Strava, but it also copies data to RunKeeper as well.

To setup CopyMySports you’ll start with their home page.  This is where you can setup the sync process to either Strava or RunKeeper (the two services they support today).  Down the road they’ve noted they plan to add support for Training Peaks.

At the bottom of the page you’ll see a little box to type in some text.  In order to setup CopyMySports you’ll basically need to tell the service who you are.  Instead of authorizing your Garmin Connect account like Tapiriik, you’re going to provide it with an ID of one of your activities.  It then uses that to follow your future activities by looking up your username.

To find an ID, simply open up one of your activities in Garmin Connect.  At the top of your browser in the address bar you’ll see the activity ID.  I’ve highlighted it in yellow.  It’s simply the numerical number.

Copy that number down (using copy and paste, or old-school with a pen and paper).  Then, paste/write it in the little box.  A few seconds later it’ll do a quick validation and let you know the account it belongs to, along with a short blurb about the activity. Validate all is well there before continuing on.

There’s a little checkbox above (actually two).  The first one will copy activities marked as private.  For example, by default I mark all my activities as private and only publish those I permit to be shared – thus I don’t want to check that box.  The second checkbox enables you to copy the activity you just typed in the box above.  In my case, I’ve already published that activity to Strava, so I unchecked it after I took the screenshot.

Next, I clicked ‘Connect with Strava’.  This will bring up a page from Strava that has you authorize CopyMySports.  This is similar to (for example) what Twitter does if you authorize an application or service with them.  It allows you to easily revoke access later on.  In my case, I just click ‘Authorize’ and I’m good to go.

Once I’ve done that, it’ll give me this little confirmation page.  Note that in my case I didn’t do a bulk copy of past activities (though I did for Training Peaks with the previous account).  You can do that to Strava though for older activities using the CopyMySports Bulk Copy feature, which will go back and copy all your older stuff over.  In my case, I’ve got tons of wonkiness in my Garmin Connect account (for example, I often have 4-6 versions of the same ride recorded since I use so many devices), so I want to keep my Strava account kinda ‘clean’.

Note, if down the road you ever want to revoke access to CopyMySports, you can do that within the Strava settings and then ‘My Apps’ section:

With that, I went ahead and went out for my run and came back.  Once inside I pressed the ‘Upload’ button on my FR620 and let it upload to Garmin Connect.  Once I confirmed the activity was on Garmin Connect, I was curious to see how long it would take until it showed up on Strava.

In my case, that was 38 minutes.

CopyMySports aims for a synchronization time as little as every 15 minutes.  If you had for example paired your FR220/FR620 or Edge 510/810 to your phone and uploaded upon completion at a park somewhere, it’d potentially be there before you got home.  At worst, if you finished at home it’s there before you’re out of the shower.

As you can see, the solution worked well.  I know they’re working to speed up the synchronization delay, but like everyone else, is a bit limited there by what Garmin will tolerate.

SyncMetrics:

(Update as of August 2014: SyncMetrics is no longer operating.)

Now, SyncMetrics is a bit different in scope than the previous two sites.  It does Garmin Connect to Strava like the others, but it also covers more health-focused sites like Withings, FitBit and iHealth.

With that, let’s get things setup.  To do so, we’ll tap ‘Register’ in the upper right.

That’ll pop-up an account creation page.  Now, I actually like this over the other two sites, as I feel like I have more ‘control’ over the transactions.  Of course, both the other sites have ways to turn things off, but this just makes it simpler in my mind (I know some would disagree).

It’ll send me an account activation e-mail, to validate I’m a real person and didn’t hose up my e-mail address.  I suggest clicking on that link you receive if  you want to have further success in this venture.

Once you do that, you’ll be brought to the below screen.  Which is admittedly a bit confusing (primarily the upper portion).  Just ignore all the upper stuff, and focus on the bottom half, which is all the accounts you can link up.

Next, I clicked on ‘Garmin Connect’ in the list to start that setup.  You’ll then click on the Garmin Connect logo, as it specifies in the ‘Hint’.  I’d suggest a ‘Hint’ of my own however: If I have to have a hint when that’s pretty much the only button/link on the page that’s not clearly a button, perhaps it’s time to create a real button.

Next, we’ll enter your Garmin Connect credentials in.

Once you’ve done that, you’ll be back here, ready to link up another account.  In my case, I’m going to spit this out to MapMyFitness.  So I’ll click MapMyFitness and then click to ‘Authorize’.

I also did the same for RunKeeper, just to see how that’d work.

Afterwards, if you were to look at RunKeeper, you’d see the API authorization listed there in your settings:

Once that’s done, I’m presented with options to sync activities to/from Garmin Connect.  The challenge though is that I don’t have much control over what happens after I check that box.

And I checked the same box for RunKeeper.

Now, there’s some limits here:

– I can’t specify if it’s for just newer activities, or also older ones too.  Currently, it pulls only activities after the creation date.
– I can’t specify what to do about private activities, to include, or not to include?  Currently it pulls them.

Once it’s done a sync, you’ll see the activities listed within the window ‘Activities’ tab.  I actually like this a bit, as it’s more of a sync log file, something the other ones lack.  I can see what got processed easily.

After it syncs you’ll see the data on the destination side.  Below, you can see my activities copied over from skiing the past few days (I’ve got duplicate activities since I was uploading from different devices).

I can then click on an activity and see it in its fully glory:

Now, I had some initial teething issues with the SyncMetrics service, but the support folks were able to take care of it.  The interesting aspect to SyncMetrics is that it goes beyond just the sport side and delves into the weight/sleep side a bit, where the other services shy away from that.

So if your goal is getting more health and wellness data moved around, SyncMetrics may be the better choice.

Wrap-up:

In looking at the solutions  at hand, you can see they vary a bit in implementation, and thus the ‘cleanliness’ of each solution.  Further, some solutions may be faster but less consistent in terms of speed, while others may be slower, but more consistent.  Unfortunately, there is no perfect-instant solution.  But, I think that they do offer quite functional solutions, and ones that ultimately get your data to it’s final destinations jazz-hands free.

Now, the trick here is that all of this depends on an API that’s just barely there.  Garmin deleted the API’s main page late this past summer, though the rest of the API documentation is still published.  In my recent discussions with them, Garmin has seemingly tried to further distance themselves from even having an API at all (outside of their corporate wellness program stuff they announced a few months back).  I’m optimistic however that they’ll re-think any ‘back of the brain’ thoughts about closing things down any (further).  Only because I’d note that the sports technology darling of the world (Strava) tried doing that this past summer, and that didn’t turn out terribly well for them.

Thus, in that vein, here’s a fun fact for you (or for Garmin): That Strava API closing post was shared more than any other post ever in the history of this site – including any individual product review at that point (which are typically the most popular posts here).  As a result, Strava has mostly changed their ways, which is a good thing.

In the meantime, we can all enjoy the free offerings that are out there today, and hopefully down the road certain parties will make it easier to use their devices while still using the bountiful and diverse 3rd party software options built around those devices.

Thanks for reading!