Skip to content

Strava

Strava is PeakLine's primary integration. Connecting it unlocks the full feature set: activity sync, full analysis, gear tracking, achievements, AI Coach, auto-reports, and the Secret Club.

Connecting

  1. Open thepeakline.com and click Connect with Strava, or open Settings → Integrations → Strava → Connect if you already have an Email account.
  2. You're redirected to Strava's standard OAuth2 page on strava.com.
  3. Strava lists the scopes PeakLine requests (see below). Click Authorize.
  4. You're redirected back to PeakLine with a session cookie set.
  5. PeakLine starts an initial sync of your last 30 activities.

The whole flow takes about 30 seconds.

Scopes requested

Scope What it lets us do Why
read Read your public profile and zones Render the dashboard, use your FTP if you've set it on Strava
activity:read_all Read all your activities including private Analyze them, build your dashboard
profile:read_all Read profile fields beyond public ones Richer profile rendering (optional)
activity:write Append to / update activity descriptions Only if you enable auto-reports

We never request profile:write. We cannot modify your account, follow other users on your behalf, or post on Strava as you.

What stays in sync

Once connected:

  • New activities are picked up by webhook within seconds of being uploaded.
  • Edits (renaming an activity, changing the type, hiding from feed) propagate to PeakLine on the next webhook event.
  • Deletions cascade to PeakLine — deleted activities disappear from your dashboard.
  • Gear changes sync on demand. If you add a new bike on Strava, it shows up in PeakLine's gear list the next time you open it.

Auto-update activity descriptions

The single most useful Strava integration, in our opinion.

Enable it in Settings → Strava → Auto-update descriptions, pick a format:

🌡️ 14°C • 💨 12 km/h SW • 🌅 sunrise 06:43 • PLS 762 (Very Good) • SP 84 (Hard) • ❤️ Z2 65% Z3 22%
PeakLine analysis:

🏆 PeakLine Score: 762 (Very Good)
📈 Stress Points: 84 (Hard)
🌡️ Temperature: 14°C (felt like 11°C)
💨 Wind: 12 km/h from SW (−7% impact)
💧 Humidity: 68%
🌅 Sunrise: 06:43, sunset: 21:14
🌫️ Air quality: Good (AQI 2)

Heart rate zones:
Z1 5%  Z2 65%  Z3 22%  Z4 7%  Z5 1%

Climbs: 3 (total 487 m)
Best VAM: 1,143 m/h on the long climb at km 22

Compared to last 10 rides: +1.2 km/h average speed

The first time it triggers on a new ride, you'll see the description update on Strava within ~30 seconds of upload. It only updates the description PeakLine wrote — if you add your own text, your text is preserved above the PeakLine block.

You can turn it off any time, or selectively disable it per activity from the activity page.

Webhooks under the hood

PeakLine subscribes to Strava's webhook for your athlete ID. When a new activity event fires, Strava POSTs a small JSON payload to PeakLine, and we kick off the analysis pipeline in the background.

What this means in practice:

  • No polling. PeakLine doesn't hammer Strava's API checking for new activities.
  • Sub-minute latency. Most activities are fully analyzed within 30 seconds of you tapping "save" on Strava.
  • Resilient. If Strava's webhook fails (their service hiccups), PeakLine catches up the next time you open the dashboard.

Disconnecting

Either:

  • From PeakLine: Settings → Strava → Disconnect.
  • From Strava: strava.com/settings/apps → PeakLine → Revoke Access.

Either path immediately invalidates the token. PeakLine stops syncing.

If you reconnect later, your account on PeakLine is preserved, but activities synced before reconnection may need to be refreshed manually.

Rate limits and credentials

Strava enforces strict API rate limits (200 requests per 15 minutes per app, 2000 per day). PeakLine rotates between multiple registered Strava app credentials to stay under the per-app cap, with automatic failover and a 5-minute cooldown on errored credentials.

You won't notice this unless you trigger a massive backfill of years of historical activities all at once. In that case, PeakLine queues the work and processes it over a few minutes.

See also