Web API Notification collection for Exercise/Fitness activities

Proposal: Add a new collection exercises to the notification Web API.

 

Justification:
Many 3rd party fitness apps track exercise but not steps. To improve these integrations it would be useful to receive notification updates through the Web API when new exercises are completed. Currently this is done through the activities collection, however an update is triggered every time new steps are synced to Fitbit. This means for a single user who runs or bikes 2 or 3 times a week, several hundred notifications will be issued, generating hundreds of API calls to synchronize and discard this activity. For a fitness application with hundreds of thousands of users these unnecessary notifications creates a significant and unnecessary scaling burden on both Fitbit and the 3rd party application.

6 Comments
Status changed to: Needs More Info
GordonFitbit
Premium User
Fitbit Developer
Fitbit Developer

Hi @smashrun 

 

Thank you for the suggestion.   Would you please provide some details on what solution would be helpful to you?   Off the top of my head, I'm thinking of 2 possible solutions

  1. a new collection type that would allow collecting just the recorded activities and not the progressive step count.   
  2. modify the existing notification so it contains more descriptive information about the data available.  For example

 

{
    "collectionType": "activities",
"activityType": ["steps" | "bike" | "run" | etc.] "ownerId": "22PT4L", "ownerType": "user", "subscriberId": "3", "subscriptionId": "123" }

   

smashrun
Recovery Runner
As far as Smashrun's particular use case goes we're concerned with just
runs, so a collection by activity type would be ideal ie subscribe to
"run", "bike", "step" etc. That way a subscriber could get exactly the
notifications they want, and nothing else. This way there'd be no need to
modify the existing notification format.

Having a "structured-activity" collection that included any of those types
would also work, but then it would be best if that also included an
activity type, so we could avoid querying for and disregarding all the
walks, bike rides, etc.

However, that said, there's little overhead to fielding and disregarding
notifications if the activityType is included in the notification, so that
solution would work as well. The real overhead comes from asynchronously
queuing a request to query the activity endpoint for the countless step
notifications that occur throughout the day.
smashrun
Recovery Runner

Any update on this? 

 

My thought is that Fitbit originated as activity tracker, but has been moving into the Fitness space for the last few years, and this legacy is showing up in the API. To keep pace with the features of your new watches it would make sense to treat fitness activities distinctly. 

Status changed to: Reviewed By Moderator
GordonFitbit
Premium User
Fitbit Developer
Fitbit Developer

Hi @smashrun 

 

Thank you for your feedback.  We are currently tracking interest from the community and will prioritize new features based on user requests.  We do not have a timeframe for adding this functionality.

niallmccune
Jogger

Hi,

Just wanted to add my interest in the development of the above feature. Our application needs to sync logged user activities, we don't have any use for step counts/goal updates. As the only webhook available contains multiple step count updates throughout the day, we have to ignore most of the webhook pings that come to us.

 

An update to your "Activities" webhook to allow an option to only send logged activity updates would be extremely useful, as we are currently unable to use the webhooks effectively, and are resorting to manually polling the server for user updates on a regular basis. 

 

Many thanks for your consideration,

 

Niall McCune

runalyze
Recovery Runner

An update to your "Activities" webhook to allow an option to only send logged activity updates would be extremely useful

Yes!

To comment, you must first accept the terms of the Idea and Feedback Submission policy.