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.