Strava integration update

I have had to make some changes to Strava integration to try stretch the Strava rate limit a little more. Scrolling back in your history will no longer automatically load new activities from Strava. You need to use the new “Download old data” button on the /settings page to do that:

New users get the 50 most recent activities automatically. If you are not a supporter then you can download up to 3 months of history:

If you are a supporter you can download as much history as you like:

In addition to these changes Intervals.icu now relies purely on web hooks from Strava to get new activities for free users. Before Intervals.icu would also poll for recent activities when you visited the app to catch any missed web hooks. Now the polling is only done for supporters. This is not likely to have much impact because missed web hooks should be very rare. If you do have a missing activity you can use the “Download old data” button to go get it.

One small side-effect of this change is that activities deleted on Strava might not always be deleted on Intervals.icu. Should that happen just delete the activity manually.

Hopefully these steps free up enough Strava API calls.

9 Likes

My app Enduroco.in depends on intervals for data. The activity sometimes sits in a queue and gets uploaded only when the user logs in. Can there be an API call to force a sync so that my app doesn’t break. Thanks.

Hi Rohan, I created an account on enduroco.in but would like to delete it. I sent an email to ask@enduruco.in but it seems be a dead end as the email comes back with an error. Can you help me out?
Cheers!

Activities from Strava, Garmin and others with web hook support should appear in Intervals.icu straight away. The polling done when athletes login is just a failsafe to catch missed webhooks but that should be very rare.

That said I have had a number of reports of missing Strava data recently. So far all the ones I have investigated the data is there but I am not certain that there isn’t a problem. When I figure out what is going wrong that should also solve your issue.

Deleted. Thank you for giving it a try. You can always email me on rohan@enduroco.in.

It seems like a feature not a bug.

When the user logs in the recent activity shows as “queued” and it gets auto synced immediately. So seems like IICU waits for inactive users to get active before syncing. These activities are sometimes 2-3 days old so seems like they get registered using the webhook but data pull happens after logging in.

Feels like a genius way to save Strava quota for more active users.

I have also done some more investigation into this topic:

  • Strava activities from web hooks are synced right away so long as the athlete is a supporter or has been seen in the last 14 days. If they are not a supporter and haven’t been seen in the last 14 days the activity is ignored. I am going to make that 28 days. I think there is currently enough rate limit for that.
  • When supporters and new athletes visit the calendar page for the first time after loading the app Strava is polled for recent activities. This might create activities that still need to be synced (the queue).
  • New athletes and people using the “Download old data” button for Strava in /settings will poll Strava for activities. This will create activities that still need to be synced (the queue).

The Intervals.icu client app will ask the server to sync Strava activities one at a time if there are unsynced activities. This is so interactive users don’t have to wait.

The Intervals.icu server also looks for activities to sync near the end of each 15m rate limit window if there is spare rate limit.

And yes this is all in aid of trying to stretch the Strava rate limit. If I could have got just one more bump … :frowning:

1 Like

The fields on activity of interest are:

Date icu_sync_date;
Date analyzed;

For non-strata activities both of these will usually be set. For Strava they might both be null.

Thanks for the explanation. This is exactly what’s going on and where my problem is. The application EnduroCo silently checks intervals every time a workout is uploaded on Strava for an athlete. The in queue workouts don’t show up. That results in incorrect load calculations and wrong workouts being generated for the athlete. Worst part is the athlete doesn’t realize this is happening.

Can an API call be used to refresh the last seen status of an athlete ?

Or

Can a queue be triggered using the API ?

Or

Is the only solution asking all athletes to regularly log in to intervals website to refresh their last seem status ?

As of tomorrow they will only have to visit Intervals.icu once every 28 days or become supporters or use something other than Strava to get their activities. But and some point I will have to shrink that 28 days again.

The main issue is that their activities will not be downloaded when the web hook comes in if they haven’t been on the site in a while (28 days). This I can’t change as downloading dormant user activities uses up a lot of rate limit.

2 Likes

you actually got a bump?

Yeah right in the beginning when I hardly had any users. Based on what they gave me per user then I would be able to make millions of calls per day now if they still did bumps :frowning:

Oh, you’ve had been the user during the era when Strava still offered API limit bumps. :+1: for you.

@david, one problem that seems to correlate with this change, at least in time, is the fact that after editing a planned workout, saving it, and reopening it I still get the old version “reopened”.
I need to reload the page to see the actual updated/changed workout… seems to defeat the purpose of minimizing Strava calls (which I believe are performed on reload, here only to reload i.icu-internal data;-)

Sometimes the connection between the Intervals.icu app in the browser and the server breaks and doesn’t re-connect automatically. So then the app doesn’t receive changes workouts, activities and so on from the server. Reloading the app reconnects and fixes the issue. I am still trying to figure out why the re-connect code doesn’t work.

Alright, so in my scenario the workout change is saved to the server, but the client app keeps the old version?
Maybe, you’ll know;-)

Yes thats about right :slight_smile: At least thats what I think is happening.

how many supporters so far? would be good ideas to put those numbers somewhere to encourage users to support and we also wanna know the numbers too

1 Like

Hola David compartí una tarea a un amigo que trabajan a través de strava, (tienen un igsport) a uno le funciona la banda cardiaca, la veo en strava que HR tiene, pero no impactan en el campo de Intervals, como debo hacer para que aparezca? y la otra persona ve el mail con el plan pero no impacta la actividad en la plataforma de Intervals.
Como lo soluciono?
Desde ya muchas gracias