This page documents the deduplication engine, source priority order, and how rides flow from each provider. For the rider-facing version, see Connecting Strava, Garmin & Wahoo.
A single ride recorded on a Garmin watch can arrive as a Garmin webhook, a Strava webhook (because Garmin auto-syncs to Strava), and a manual FIT upload. Each source reports slightly different timestamps, distances, and durations. The dedup engine has to recognize them as the same ride and decide what to keep.
Higher priority wins on conflict:
When a duplicate is detected:
action: "replace" (delete existing, insert new)action: "skip"One ride usually arrives as several messages, sometimes at the same instant: a summary, the raw file, the GPS detail. Each one contributes what it knows and nothing more. A thinner copy can never overwrite a richer one, a duplicate can't sneak in through a timing race, and when a better source replaces a lesser one, anything the original had that the new one lacks carries forward.
And the original device file is never discarded. If we can have the raw .fit, we keep it. See Your Ride Files.