Effective 4 November 2026. This policy covers Run Week at run-week.fyi and its Android app. Service operator and privacy contact: Henri Lambert. Use the contact options on that website for privacy requests.
Without an account, your race performance, VDOT estimate, schedule, training week and language choice are stored only in this browser or locally on your Android device. The Android app keeps its language choice on the device and stores its sign-in token in Android secure storage, not with the planner.
With an account, Run Week stores in its database: your email address; the name and profile image supplied by Google if you sign in with Google; the linked sign-in methods (provider and provider account identifier, not Google tokens); sign-in sessions; your planner (profile and current training week); and, if you connect Garmin, the Garmin connection and sent-workout records described below. The language choice stays in the browser. This data is used to sign you in, keep your planner across devices and operate the Garmin integration.
Email sign-in codes are stored as a keyed hash for at most 10 minutes and deleted when used or replaced. Per-email counters of code requests and failed attempts are stored to limit abuse.
Connecting Garmin requires an account. When you choose to send runs, Run Week's server receives the selected runs, dates, durations, workout types and VDOT to create and schedule workouts in Garmin Connect. Garmin supplies OAuth access and refresh tokens, stored encrypted (AES-256-GCM) with your account, and identifiers of the workouts created, stored with their dates to show which runs were sent and to delete them when you ask. When you connect, Run Week reads your Garmin user ID and stores only a keyed hash of it, so that a Garmin account can be connected to one Run Week account at a time. Run Week does not read your Garmin calendar, recorded activity history, GPS tracks, heart rate, sleep or other Garmin health metrics.
Garmin data and data derived from it are used only for this requested integration. They are not sold, used for advertising, or shared for unrelated purposes.
Imports include total elevation gain and altitude samples in metres, without GPS coordinates. Previously imported runs are updated once in the background. Elevation data is included in account exports and deleted on disconnect.
I consent to importing my running summaries (including private activities), dates, distances, durations and available time, heart-rate, speed and distance streams into my Run Week account. GPS is not requested or stored. Encrypted Strava tokens enable imports; no AI processes this data. Garmin only sends planned workouts and Android is unchanged. Disconnect deletes imports, settings and tokens here, not activities in Strava. Revoke access in Strava settings too.
Strava imports, manual HR settings and encrypted tokens stay until disconnect or account deletion. Consent version and acceptance time are recorded; changed consent requires reconnection. OAuth cookies and cancellable single-use tickets expire after 10 minutes. Import progress and short-lived leases are stored for safe retries. Hosting/database providers listed in this policy process this data. Logs contain only operation names and safe error codes, not activity data or tokens. Account export includes imports and settings, never tokens. Strava does not become a sign-in provider. Account deletion cancels pending imports; original Strava activities remain.
Running history is imported in the background, including non-GPS HR/pace recordings. New runs are checked daily. Inngest schedules imports using opaque job IDs and progress metadata, never activity data or tokens.
Strava notifications queue automatic, verified activity updates. Runs that are deleted, inaccessible or changed to another sport are removed from your Run Week account. Confirmed access revocation removes imports, settings and tokens. Target IDs, event times and deduplication hashes are stored with background jobs until disconnect or account deletion; notification contents are not retained.
Activity views are cached in browser memory for five minutes and cleared on sign-out or disconnect. When configured, Redis stores encrypted activity views and completed-import markers for five minutes. Reconnecting, disconnecting or deleting the account clears this server cache.
Activity overviewGarmin API keys remain under the operator's control as server configuration. They are not provided to users or transferred to third parties for their use. Infrastructure providers process service traffic; they are not authorized to use the keys for their own applications.
No AI system processes Garmin user data in Run Week. Workout generation uses deterministic VDOT equations and disclosed heuristics, not AI. Garmin data, including anything derived from it, must not be used to train, evaluate or improve AI models. There is no AI-data consent request because no such processing occurs; adding it would require a new disclosure and explicit, withdrawable consent before processing.
Browser data remains until you delete it or clear site data. Account data remains until you delete the account. Sign-in sessions use an HttpOnly cookie and expire after 30 days without use, or when you sign out. Garmin tokens remain until you disconnect Garmin, delete the account, or the Garmin refresh token expires; the Garmin consent version and acceptance time are stored with them. Connections made under an earlier consent version require reconnection. The Garmin authorization cookie used during connection expires after 10 minutes.
Android sign-in sessions expire after 30 days or when you sign out; only a hash of the Android session token is stored on the server. System-browser sign-in and Garmin linking store a temporary browser ticket for at most 10 minutes and a single-use app-return code for at most 60 seconds. Expired tickets are excluded from use and cleaned up when a new mobile browser flow starts. Google and Garmin authorization open in the system browser. The app-return code is bound to the app using PKCE; session tokens are never put in return URLs. Deleting local app data does not delete account data.
Hosting-provider access and operational logs may contain request metadata. For troubleshooting, Garmin upload requests are logged with their training-plan contents (workout types, durations, paces, scheduled dates, VDOT, language and Garmin workout IDs) and Garmin's workout-API error responses; these logs never include tokens, cookies, email addresses or OAuth values. Log and database-backup retention depend on the providers and deployment settings. The operator must verify them before launch.
Redis quota records expire automatically within 24 hours of the last accepted upload request (10 seconds in local development). Uploads require at least 10 seconds between requests; outside local development, at most 10 requests are accepted per UTC calendar day. A week batch counts as one request. Disconnecting does not immediately delete these short-lived abuse-prevention records.
View your profile and current training week on the planner. Edit setup to correct your inputs and regenerate the week. Export your account and browser data below. Garmin tokens are excluded from exports.
Connecting Garmin requires your explicit consent on the connection page and Garmin's authorization screen. Sending each day or week remains your choice. Withdraw consent below or use Disconnect Garmin on the planner; this deletes the workouts sent from your account from Garmin Connect, then deletes the Garmin tokens and sent-workout records from your account. If Garmin no longer accepts Run Week's access, those workouts cannot be deleted and stay in Garmin Connect. Also revoke Run Week in Garmin Connect's connected-app settings; disconnecting does not revoke Garmin's server-side grant.
Delete your account or browser data below. Deleting the account removes all its data from the Run Week database, including email sign-in records. Workouts already sent remain in Garmin Connect when you delete the account; disconnect Garmin first to delete them, or manage them with Garmin's own controls. For provider logs, backups or other operator-held information, use the privacy contact above.
Changes to Garmin-data purposes or recipients require an updated policy and consent before the new processing begins. Review this page before reconnecting.