← All Reports

SPIKE-008: Garmin Connect Activity Ingest Research

Spike Report 2026-02-22 Connector Strategy Complete
1
Stories / Tasks
3
Story Points
0
Tests
1
Days

Overview

Executive summary: We should keep Strava as the canonical activity source in Data Hub and treat Garmin Connect ingest as a secondary/recovery path. Garmin can provide rich activity data (including splits and downloadable activity files), but unofficial ingestion through garminconnect/garth introduces auth fragility, MFA operational friction, and policy risk. The official Garmin Connect Developer Program is stronger but business-gated and not the current path for this project.

This spike evaluated whether and how to ingest Garmin Connect activity data given an existing Strava ingest. The output is a recommendation, risk profile, and data model guidance for dedupe and source precedence.

Deliverables

ID Title Effort Status Owner
SPIKE-008 Explore Garmin Connect activities ingest vs Strava S Done Codex

Key Decisions

Technical Notes

Options considered

Data model implications for Data Hub

Comparison snapshot: Garmin vs Strava

Category Garmin Strava
API posture Official API is business-gated; unofficial libs are common for personal access Official public API with OAuth and docs
Activity coverage Summary/details/splits and activity files (FIT/TCX/GPX in official program) Summary/details/laps/streams/zones
Reliability Official path: strong; unofficial path: medium due to backend/auth drift risk High for supported endpoints
Rate limits Program throttling; unofficial limits opaque Published limits and headers
Historical access Available in official program tooling and in practical unofficial backfills Available via before/after and pagination

Outcomes

Recommendation: Keep Strava as canonical, add Garmin only as an optional secondary ingest path for reconciliation and raw-file enrichment.

Why: This keeps the current pipeline stable while still allowing Garmin-derived value where it is uniquely useful (missing sync recovery and detailed file artifacts). It avoids making unofficial Garmin auth flow a critical dependency for core activity ingestion.

Next steps:

  1. Define source precedence and dedupe rules in the common activity schema.
  2. Prototype a non-production Garmin pull job that stores raw responses/files only, with strict retry/backoff and clear failure isolation.
  3. Add reconciliation logic to match Garmin records to existing Strava activities before any canonical record creation.
  4. If Garmin coverage becomes strategic, evaluate Garmin Connect Developer Program onboarding as a formal path.

Open Issues

References