trailwise
All field notes

Data

Owning four years of training history

What portability actually means once you have changed watch brands twice.

6 minute readWritten by the Trailwise team

A runner checking a GPS watch on the wrist during a session

You unbox a new watch. Different brand this time, because the old one was dying and the new one has the battery life you wanted. You pair it, you go for a run, you open the app.

And there is your training history. Week one.

Four years, gone. Not deleted, exactly. Sitting in an account you still have a login for, in a place your new watch has no interest in. Your longest run is now this morning’s easy hour. Your fitness graph starts at zero. The app congratulates you on a personal best 5k you have beaten hundreds of times.

Everybody who has done this has the same reaction: hang on, I exported all of that, why did it not come with me?

Export is not portability

Almost every platform will let you download your data. They hand you a zip file and, technically, they have kept their promise. You own your data. It is right there.

Now try to use it.

What you have is a folder of files in a format the vendor chose, describing things using definitions the vendor chose, with identifiers that only mean something inside the vendor’s own database. It is your data in the sense that a car engine in a crate is your car.

Portability means arriving somewhere else and still being yourself. A zip file gets you nowhere near that. The two are very different products to build, and only one of them is a legal checkbox.

Three problems stand between the crate and the car, and they get harder as you go.

Problem one: format

The easy one, and the one everybody talks about, which tells you something about how far most conversations get.

Every platform has its own export shape. Some give you FIT files, some TCX, some GPX, some a pile of JSON that mirrors their internal API, some a CSV that was clearly generated by whoever drew the short straw. Fields are named differently. Timestamps are in different zones or no zone at all. Some exports contain per second sensor data, some contain a daily summary and nothing underneath it.

Solving format is unglamorous. You write a parser per source, you handle the edge cases, and you keep handling them when the vendor changes something without telling anybody. It is tedious rather than conceptually hard.

My favourite example of how tedious: one major manufacturer’s export stores distance and elevation in centimetres. Not metres. Centimetres, with no unit field anywhere. If you assume metres, as any sane person would, every run in your history becomes a hundred times longer than it was and your four year total looks like you ran to the moon. You only find that out by looking at the numbers and thinking, hang on, that cannot be right.

Multiply that by every platform, every field and every firmware generation.

Problem two: identity

Harder, and almost nobody mentions it.

You did a run on Sunday. Your watch recorded it. It synced to the manufacturer’s platform. That platform pushed it to Strava. You also had a heart rate strap paired, which logged separately. Your phone counted the steps. Your training platform pulled a copy from two of those places.

How many runs did you do on Sunday?

One. Obviously one. But you now have somewhere between three and six records of it, arriving from different sources, with slightly different start times, slightly different distances and completely different identifiers. Two have GPS. One has heart rate the others lack. One is nineteen seconds shorter because it started recording a moment later.

Merge naively and your Sunday long run becomes four Sunday long runs and your weekly volume is a work of fiction. Deduplicate too aggressively and you throw away the one record that had the heart rate in it.

Getting this right means deciding which record is authoritative for which field, keeping the others rather than deleting them, and being able to explain afterwards where any given number came from. It is the problem that quietly ruins most attempts at combining sources. If you have ever imported a history and found your mileage looked oddly high, this is why.

Problem three: meaning

The hardest, and the one with no clean solution.

Two platforms both give you a number called training load. They are not the same number. One is built on heart rate, one on power, one on duration and perceived effort. Two platforms both give you a sleep score. One weights deep sleep heavily, another cares mostly about continuity. Two devices both report your resting heart rate, and one takes the lowest thirty minute average of the night while the other takes the value at wake.

Copy those numbers across and you have made a chart with no meaning. The line is continuous. What it describes changes halfway through.

The only honest answer is to keep the raw material and recompute. Store what was actually measured, the heart beats, the timestamps, the distances, the elevation, then calculate the derived numbers yourself with one definition applied across the whole history. Your training load in 2023 and your training load today are then the same kind of thing, which is the entire point of having four years of it.

That trade costs you something. Your old platform’s score for a run in 2022 will not appear in your new history, because that score was a proprietary opinion nobody outside that company can reproduce. You keep the run. You lose somebody else’s summary of the run. It is the right trade, and it is worth knowing you are making it.

Why four years is worth the trouble

A pattern only exists if something remembers far enough back to see it.

Your normal is a distribution built out of your own past, and every question worth asking is a comparison against it. Is this load high? High compared to what? Is your resting heart rate elevated? Elevated compared to which fortnight? Is this the biggest week you have handled before a race, or your third biggest?

Reset the history and every one of those gets a worse answer for months, because the new platform is comparing you against a stranger who happens to share your name and started running in March. It is also why a single bad week matters less than people fear and a slow eighteen month decline matters far more than people notice. You can only see the second one if the record goes back eighteen months.

So when a company tells you that you own your data, ask what happens when you leave. Not whether you can export. Whether you can leave, arrive somewhere else, and still have a history that means something. Ask whether they store what was measured or only what they computed. Ask whether a run that arrived from three sources is one run in their database or three. Ask what happens to your baseline when you switch watches.

The answers will tell you very quickly which kind of promise you have been given.

We built the history layer before we built the coaching, because the plan is only as good as the record it is reasoning over, and a record that resets every time you change hardware is really just a series of introductions.

Trailwise is not a medical device. Neither is it a replacement for a doctor or a physiotherapist. Trailwise flags what is worth a conversation. It does not diagnose, and it will tell you when it does not know.

Keep reading

Start with tomorrow.

Thirty days of Trailwise Pro, your history imported on day one, and a plan that answers to what your body is actually doing.

Get started