Quick reference: what TP accepts from us, what it rejects, what we are testing next.
ZWO export to TrainingPeaks works for cycling workouts as of
2026-05-13. The previous rejection ("only power based cycling
workouts in ZWO format") was caused by us emitting a non-standard
<category> element. That's gone, and TP imports cleanly.
| Symptom in TP | Cause | Fix |
|---|---|---|
| "Only power based cycling workouts" rejection | Old ZWO with <category> element. |
Re-export from a Hub version after 2026-05-13. |
| File imports but interval text doesn't show during playback | Description / text events placement; under active testing. | See docs/zwo_test_suite/02-04.zwo notes for status. |
| Run or swim workout missing the .zwo button | Format is cycling-only on TP's side. | Use FIT export instead. |
| Brick workout exports only the first leg | Multi-sport split is on the roadmap. | Export each leg manually for now. |
The bisect probes in docs/zwo_test_suite/ cover:
02–04 text-events placement (description vs SteadyState vs Zwift
<textevent> child element)05–06 text-event offsets — interval-relative vs workout-relative07–09 FlatRoad attribute vs custom DSL10 MaxEffort marker11 cadence target survival12 description preservation rules13 unknown / forward-compat blocks14 very-long workout namesIf you have a TP account and a spare minute, importing each probe
file and recording the result in docs/zwo_test_suite/README.md
is the highest-leverage QA contribution. We use those notes to
prioritize emitter improvements.
Still stuck? Ask us a question and we'll write up an answer.
Ask a question