Skip to main content
Answer

webhook events missing; is non-expired access token required?

  • January 30, 2025
  • 5 replies
  • 130 views

Forum|alt.badge.img+4

I’ve noticed that my application will sometimes stop receiving webhook events from some athletes.

 

These athletes have not deauthorized my application, so I should still be receiving events for them. I have checked with these athletes and they have confirmed that my application is still authorized.

 

I’m wondering, does Strava stop sending webhooks events for an athlete if the athlete’s access token needs to be refreshed?

 

Currently, if I get a notification from an athlete that has an expired access token, this triggers a refresh call.

 

But do I need to be actively refreshing tokens right as they expire to make sure that I don’t miss webhook events?

 

This is not mentioned in the documentation afaik.

Best answer by renschler

Just wanted to update this post because I think I’ve uncovered the root issue.

 

My app was requesting access to private activities (but users are allowed to deny that request).

 

When the user denies access to private activities, but proceeds with the connection, I wrongly assumed the app would still receive webhook events for public activities. It does not. You have to explicitly request the permission for read access to public activities in order to get webhook events.

5 replies

ActivityFix
Superuser
Forum|alt.badge.img+24
  • Superuser
  • January 31, 2025

I’m wondering, does Strava stop sending webhooks events for an athlete if the athlete’s access token needs to be refreshed?

To my knowledge, no. As long as the athlete still has your app authorized you’ll receive the webhook calls. I’ve never had to add anything to my app to specifically refresh tokens, it instead happens naturally as part of retrieving activity data once a webhook comes in (or the user logs on to my site).

The one thing I can think of is public vs private activities. If they haven’t authorized your app to view private activities you won’t get webhook calls for any activity set to “only me” or “followers”


Forum|alt.badge.img+4
  • Author
  • Hub Climber
  • January 31, 2025

Ok thanks ​@ActivityFix yeah it’s pretty weird; the activities are public I can see them without friending the athlete, but I didn’t receive the events. I refreshed the token and now I am getting their events again.

 

I’m going to set up some more robust testing/logging to make sure my endpoint isn’t dropping things.


Forum|alt.badge.img+1
  • Hub Starter
  • February 5, 2025

Hi ​@renschler , I'm trying to figure out why I'm not receiving activity events on my webhook. What do you mean by "I refreshed the token"? 

I have the same issue as the following post:

 


Forum|alt.badge.img+4
  • Author
  • Hub Climber
  • February 5, 2025

My scenario might be different than yours. I am getting most of my events from most of my atheletes, I’m just finding that sometimes events for particular athletes stop being delivered and it’s unclear why.

 

The way the API works, you have an temporary access token and then a refresh token used to refresh you access token. The question I’m posting here is “do I have to keep the access token up to date in order to receive webhook events for an athlete”. In theory it shouldn’t work like that, but I’m having trouble figure out why sometimes I lose events for athletes even though my app is still authorized.

 

My endpoint has a theoretical limit of 10,000 RPS so I don’t think I’m dropping anything from Strava but I am planning on adding more logging to see.


Forum|alt.badge.img+4
  • Author
  • Hub Climber
  • Answer
  • April 8, 2025

Just wanted to update this post because I think I’ve uncovered the root issue.

 

My app was requesting access to private activities (but users are allowed to deny that request).

 

When the user denies access to private activities, but proceeds with the connection, I wrongly assumed the app would still receive webhook events for public activities. It does not. You have to explicitly request the permission for read access to public activities in order to get webhook events.