Skip to main content

/docs · Vetta Trainer

Strava integration

Vetta reads your Strava to sync activities, compute VDOT and CTL, and build your week. Here's what we import, what we DON'T, and how we handle your data.

How it connects

On signup, you click "Connect Strava" and authorize via OAuth 2.0. Strava returns an access_token + refresh_token we store encrypted.

Scopes requested: read + activity:read_all. We do NOT request write — Vetta posts nothing to your Strava.

What we import

Per activity: date, sport, sub_sport, distance, duration, pace, avg/max HR, elevation gain, cadence, power (if available), calories, training_load (if Strava provides it).

We do NOT import: your name, photos, comments, kudos, social data. Only training data.

Initial sync

On connect, we do a full sync: up to 5000 historical activities (~5-10 years). Takes 30-90 seconds depending on volume.

Free: sync is capped to the last 30 days (Pro differential). Pro/Coach: full history.

Incremental sync + webhook

Strava sends us a webhook every time you upload a new activity. Vetta processes it in background in under 30 seconds.

As a backup, we run a scheduled sync every 6 hours in case the webhook drops.

Privacy

Your data lives in a private Railway Volume (not a public S3 bucket). Only you can access your own parquet.

GDPR/CCPA: you can export everything (GET /api/v1/export-all-data) or delete your account from Settings — this wipes activities, profile, Strava tokens, the lot.

If something fails

If sync breaks, you'll see it in /onboarding → Strava section with the specific error (expired token, rate limit, etc).

"Sync now" button available to force a retry.