By default, ConnectStats accesses your Garmin Data from two sources. It gets the data primarily via a dedicated ConnectStats service that uses Garmin Health API, but it also tries to get the data from the Garmin Connect Website to look for manual edits or deleted activities.
This can lead to some confusing behaviour if for example you successfully connect to one source but not the other you may see your activity downloaded but still get an Access Denied error, in which case jump to the section on authentication below.
Table of Contents
In a nutshell
In the Garmin Connect Service setup, you can see and change the source for your data.
If you select All or Garmin Website, you will need to enter your login name and password.
To get your data from both sources you should select the Source to be All as in the screen shot here. This is the default on first use of the app.
You can alternatively choose either of the sources ConnectStats only or Garmin WebSite only.
You can switch between the sources and you will not loose any of your already downloaded activities if you have some. But it is recommended to stay on All.
Authentication, Credentials, Access Denied Error
The two services authenticate you and your account independently. So it is possible that you entered your credential password for one service correctly but not for the other one.
To authenticate with the website, ConnectStats will use the username and password entered in the Service Screen each time you connect.
The authentication with the ConnectStats service happens once only the very first time you connect, all subsequent uses will use cached authentication information obtained during the first use. (OAuth protocol)
If your data downloads correctly, but you still get an Access Denied error, it is therefore likely that you had a successful authentication with the ConnectStats service, but entered the wrong password for the website data. If that’s the case, try to re-enter your garmin user name and password in the config screen.
Difference between services
You can select the source to be either
- Garmin WebSite. This is the method ConnectStats used historically by accessing the API from the garmin website directly. This is not officially supported which is why the app can have regular outage and Access Denied errors when the website API had some changes we had to adapt to. When using this option ConnectStats should display the same history and edits that you see on the Garmin website.
- ConnectStats. This is the new method that uses the new Garmin Health API. We can anticipate this won’t have unexpected outage as it is officially supported by Garmin. It enables better flexibility in how the data is used and for example ConnectStats can now link an activity to the weather from DarkSky.net. The data received this way is only the raw data recorded on a garmin device, so it does not contains information you would have entered on the website, for example the activity name or event type, etc. Also the new service from Garmin only sends new activities recorded after the user registered, so the full history won’t be seen if only “ConnectStats” service is used.
- All. This is trying to get the best of both world. It will get the detailed data from the new Garmin API via the ConnectStats new server, along with the weather, but will also connect to the website to incorporate the information it would be missing from there (for example the names). This will also ensure the history of activities before the New Garmin API is enabled is downloaded into the app.
It should work properly if you switch back and forth between options. ConnectStats links the activities by their Garmin activity identifier so it avoid duplicates.
A note on privacy and security
The code for the app and the code for the server is open source, so people can inspect what I do in the app and verify or inform me if they find any security issue or privacy issue. The implemenation core principle is not to keep any information that can link user back to the data on the server and the data anonymous and private only keep hashed references to link data together.