Connect Strava, Garmin, Wahoo, WHOOP, and more platforms.
ENDURE connects to the platforms where your training data lives. Manage integrations at Settings > Integrations.
Platforms are organized into three categories:
Activity Sources — Import completed workouts:
| Platform | What It Syncs | Auth Type | Status |
|---|---|---|---|
| Strava | Activities (rides, runs, swims, etc.) | OAuth | Full sync |
| Garmin Connect | Activities, daily health (HRV, resting HR, sleep, steps, stress) | OAuth (PKCE) | Full sync |
| Wahoo | Activities | OAuth | Full sync |
| Intervals.icu | Activities, streams, power curves, athlete profile (FTP, LTHR, max HR, weight) | API Key | Full sync |
| TrainingPeaks | Activities | OAuth | Full sync |
Workout Push — Send planned workouts to devices:
| Platform | Push Support | Status |
|---|---|---|
| Intervals.icu | Structured planned workouts go to your intervals.icu calendar; intervals.icu uploads them to Garmin, Wahoo, Zwift, Suunto and COROS | Live |
| Garmin | Through intervals.icu (above). Endure's own Garmin connection does not send workouts. | Via intervals.icu |
| Wahoo | Through intervals.icu (above). | Via intervals.icu |
When you (or your coach, or David) save, move, copy, skip or delete a planned workout that has structured steps, Endure updates your intervals.icu calendar a few seconds later. intervals.icu then uploads the next 7 days of planned workouts to each service you switched on. To set it up:
The workout drawer shows where each planned workout stands: sent to intervals.icu, not sent (with the reason), or waiting to be sent, with Try again / Send again when something needs fixing. Some things are not sent: drafts until they're published, skipped workouts, past workouts, workouts planned in TrainingPeaks (TrainingPeaks already sends those), and workouts intervals.icu can't represent exactly, such as heart-rate targets in bpm, a mix of power and heart-rate targets in one workout, repeats inside repeats, or lap-button steps. Endure checks how intervals.icu read each workout and removes it again if the steps don't match.
Health and Recovery — Import wellness data:
| Platform | What It Syncs | Auth Type | Status |
|---|---|---|---|
| WHOOP | Recovery scores, HRV, sleep, strain | OAuth | Full sync |
| Oura | Sleep, HRV, readiness, activity | OAuth | Full sync |
| Polar | Activities, health data | OAuth | Sync available |
| Suunto | Activities | OAuth | Auth connected |
Note: Hammerhead Karoo has OAuth connection support but no direct activity sync (no public API). Karoo activities come to ENDURE via Strava.
For Intervals.icu, you enter your API key directly (no OAuth redirect).
From Strava: Activity name, type, duration, distance, power (if available), heart rate, cadence, elevation, GPS route, speed, temperature.
From Garmin: All activity data plus daily wellness summaries (resting HR, HRV, stress level, steps, sleep duration, sleep stages, sleep score).
From WHOOP: Recovery score, HRV, resting HR, sleep duration, sleep stages, strain score.
From Intervals.icu: Activities, streams (power, HR, cadence), power curves, athlete profile (FTP, LTHR, max HR, weight).
If you save the same activity on multiple platforms (e.g., your ride goes to both Strava and Garmin), ENDURE deduplicates using the source ID. The same activity won't appear twice.
OAuth tokens expire. ENDURE automatically refreshes tokens when they expire. If a refresh fails (e.g., you revoked access on the platform), the integration status changes to Needs Reauth and you'll see a prompt to reconnect.
For each connected platform, you can configure:
Each integration card shows: