Oura sync issue — daily OAuth token refresh not working

Hi,

I’ve been experiencing a daily sync issue with my Oura Ring 4 connection (connected since May 21, 2026).

Every morning, wellness data from Oura (HRV, resting HR, sleep score, respiration) either doesn’t sync at all or syncs partially to Intervals. The data is visible in the Oura app but doesn’t appear in Intervals until I manually disconnect and reconnect the Oura integration.

This happens every day — disconnecting and reconnecting fixes it temporarily but it’s not sustainable as a daily workaround.

My setup:

•	Oura Ring 4 (new, set up May 21)
•	Garmin Forerunner 955 also connected (activities + some health data)
•	Both syncing to Intervals

I suspect it might be an OAuth token refresh issue on the Oura side.

Is there a known fix or a way to force a proper token refresh without full disconnect/reconnect?

Thanks

You have to be patient. It only syncs three times a day.

Oh Thanks :sweat_smile: ! That explains it perfectly. I was starting to think my Oura ring had commitment issues. I’ll just be more patient :grimacing:

Actually we recently implemented support for Oura web-hooks. You should see data on Intervals.icu within a minute of syncing to the Oura app. I can see web-hooks are being processed for your user.

Thanks David, great to know! I’ll monitor it over the next few days and let you know if I still experience any issues.

The Oura webhook is connected but wellness data doesn’t appear completely in the morning until I manually add my weight in Garmin Connect.

Here is the behavior observed this morning:

At 6:30am upon waking, I opened and refreshed the Oura app. On Intervals, only part of the data came through: HRV (67ms), Readiness (81), and step count — but no resting HR, no sleep score, no sleep duration.

At 10:15am, I manually entered my weight in Garmin Connect: the Garmin data appeared instantly on Intervals, and immediately after, all remaining Oura data showed up as well: resting HR (37 bpm), sleep (6h43 / score 81).

Is the Intervals polling triggered by the Garmin sync? Is there a way to force the Oura webhook to push all data independently at wake-up, without needing a Garmin action?

Hi David,

This morning I tested again: upon waking I opened the Oura app and waited a few minutes, but data still didn’t appear completely on Intervals (only HRV, Readiness and steps — no resting HR, no sleep score, no sleep duration).

I then disconnected and reconnected the Oura integration in Intervals. I’ll monitor over the next few days to see if that fixes it.

Could disconnecting/reconnecting properly reset the webhook?

Hi David,

Following up on my message from May 24th — the issue is still happening and the pattern has actually changed, which suggests the webhook is intermittently broken rather than one specific field being blocked.

May 24th: HRV was syncing but resting HR, sleep score and sleep duration were missing.

Today (June 2nd): readiness (85) and sleep score (77) synced, but HRV, resting HR and sleep_hours are all null in Intervals — even though HRV (58ms) is clearly visible in the Oura app.

The inconsistency makes me think the webhook payload is being partially parsed or dropped. Is there any logging on your end that could show what Oura is actually sending vs. what Intervals is receiving?

I have the same issue.

Also AI planned training depends on HRV too, so maybe syncing 3 times a day is not enough.

Also it looks like this may be a bug (hidden feature, limit) from Oura as I used to used another AI helped training planning tool and it has the same issue: random hrv sync from oura. However it has more success.

Same problem here. Sometimes it works for a few days (Longest streak was 5 days I think) At the moment I have to unlink and link oura daily in connections of intervals to get the data synced from oura.

Hi David,

Thanks for the work so far.

It looks like Oura sync still does not work. Earlier this year I used an AI coach and it had the same issue. Now they fixed something and issue no longer present as I get Oura data as soon as the ring app synced into its cloud. But unfortunately this is not happening in case of Intervals.icu.

Why it is important to get this data ASAP or somehow control this sync? Let’s say I wake up at 5:30 am as I want to go for a ride from 6 am. The AI tool I use fine tuning the training based on my recovery. If I get the data only at 10 am and I go out at 6 am then the plan is not fine tuned.

Yes, there was life before OURA. And yes, I can manually type the data. But I would not spend time on these, rather concentrate on my training.

I woke up at ~8 am and now 8:48 am and still almost nothing, while some steps are already synchronized but maybe it is coming via fitnesssyncer (originally I used that). Only sleep score is synced. And also see readiness data.

+1 idea: The nap. How do you handle the nap (when someone just sleep 20-40 minutes for example in the afternoon)? Is it added to the daily sleep? Or simple overwrite data?

UPDATE: 1 hour and 37 minutes since I woke up. The status is still the same.

UPDATE2: 2 hours are over and still the same.

UPDATE3: 4.5 hours are over and still nothing changed. Steps are updated and that’s all.

Thanks.

Regards,

Zoli