For Coaches Training & analysis

Exporting planned weeks (TrainingPeaks, .zwo, device .fit)

From the calendar, select weeks and export them three ways — structured .zwo for the TrainingPeaks Workout Library (every sport), a text week pack, or .fit files for a Garmin/Wahoo/Polar device.

On the training calendar, tick one or more week checkboxes and a bulk bar appears with three export buttons. They serve three different destinations — pick by where the workouts need to end up.

All .zwo ↗ — the TrainingPeaks Workout Library (start here)

Downloads a .zip of .zwo files — one per swim, bike and run session in the selection — for TrainingPeaks → Workout Library → Import Workout (bulk selection works). This is the route that carries the structure: intervals, targets and step notes all survive.

Every file is named SPORT · DATE · TITLE, so a folder full of them still tells you what each one is and which day it was for.

Runs and swims need two switches in TrainingPeaks. Every .zwo arrives as a Bike workout, because power-based cycling is the only kind TrainingPeaks accepts in this format. The structure is fine — it just needs relabelling:

  1. Activity type → Run / Swim. Changing the type keeps the blocks.
  2. Units → "% Threshold Pace". Click the blue intensity bar in the workout graph first — the Units dropdown only appears once a step is open in the editor, which is easy to miss. The numbers are percentages of threshold, and until you switch the unit TrainingPeaks reads them as watts.

Do not pick % Max Heart Rate: TrainingPeaks re-reads the same numbers as heart-rate percentages and every step shows 0 bpm.

Bike files need neither step — they import ready to ride in % FTP, and each one notes the Grepiac FTP it was built around so you can check it against the athlete's TrainingPeaks FTP.

Strength sessions are not included: an exercise circuit has no interval structure to put in a .zwo.

Export to TP (text) ↗ — reference, not structure

Downloads the selected weeks as a .txt description per session plus a summary CSV. TrainingPeaks' CSV import puts these on the calendar as plain text — the intervals do not come through. Treat it as a readable week pack or a paper backup; for workouts an athlete can actually execute, use All .zwo above.

Device .fit ↗ — straight onto a Garmin / Wahoo / Polar

Downloads a .zip of structured-workout .fit files — one per bike / run / swim session in the selection — for loading directly onto a device, no TrainingPeaks in the loop. This is the batch version of the .fit button on a single workout.

Load them on:

Power targets are encoded in watts at the athlete's Grepiac FTP on each session's date — check the device/app FTP matches, or the target watts won't line up. Where no FTP is on file, the steps are timed with no power target (open). Run and swim files carry the same %-of-threshold structure as watts, so they're most useful with a power meter (e.g. Stryd).

Which one?

You want… Use
Structured workouts in the TP Workout Library (any sport) All .zwo
A readable week pack / text on the TP calendar Export to TP (text)
Workouts on the watch/head-unit now Device .fit

All three use the same week selection.

One session at a time

The same .zwo is on every swim, bike and run workout pageExport .zwo, next to Export plan .fit → device. Useful when an athlete wants one session rather than a week, and it carries the same setup notes in its description.

Swim: getting there from TrainingPeaks

If the athlete's swim goggles or watch pull structured workouts from TrainingPeaks (FORM goggles work this way), the chain is:

Grepiac → .zwo → TP Workout Library → switch to Swim + % Threshold Pace → the device pulls it from TrainingPeaks.

The two switches matter here more than anywhere: a swim left labelled "Bike" in % FTP is not something a swim device will take sensibly.

Distance sets arrive as times

A swim written in distance — 8×100, 4×50 drill — shows up in the TrainingPeaks Workout Library with every step as a time, not a distance. That is a limit of the file, not a mistake in the workout: .zwo is the only planned-workout file the Library accepts, and a .zwo step can only be a duration in seconds. (A .fit workout file does carry real distance steps, but the Library refuses it.)

So every exported swim carries its set list in the description:

SET (% of CSS): 200 easy swim @ 78% on 20s / 100 kick @ 70% on 20s / 6×50 drill down, swim back @ 75% on 15s / … / Total 2k

Swim the set, not the step times. The metres are the instruction; the times are only our estimate of how long each one takes at that fraction of CSS, and they are what TrainingPeaks had room to store.

On a watch this does not apply. Device .fit — and a Bridge sync — writes true distance steps with the pool length, so an 8×100 counts lengths on the device exactly as written. Check in the goggles' own app that the workout arrived before relying on it poolside.

Choosing a route

The route dropdown is grouped by where each course came from — Grepiac library (the shared race-course library), From coach … (routes your own coach uploaded), and Mine (your uploads). Only routes you may use are listed: the library, your active coaches' uploads, and your own. Names carry the edition year where known, e.g. Ironman 70.3 Tallinn (2026); a race course changes between years, and the year is which one.

When a course is updated (the organiser changed the route), the new edition replaces the old one in this dropdown and everywhere else — the old row is kept so plans that used it still work, but you will not be offered it again. Coaches upload a new edition with the year and a "Replaces…" pick; the same is true on the route manager.

Once a route is chosen and saved with a race, the same choice drives Courses for my device (/my-courses/): the race appears under Your upcoming races with its course ready to send to your Garmin, and a race-rehearsal session can be built from this plan's power targets.

Last updated Sep 7, 2026

Still stuck? Ask us a question and we'll write up an answer.

Ask a question