Pace targets on running workout steps are being lost somewhere in the Intervals.icu → Garmin Connect export path. We’ve verified every link we can reach, and the data is correct on the Intervals.icu side — this looks like an export issue, not a syntax issue.
Setup
- Workouts created via the API:
POST /api/v1/athlete/0/events/bulk?upsert=true,category: WORKOUT,type: Run, description in the plain-text workout format,external_idset - Athlete settings:
garmin_pace_range = 2.5(default), Garmin Connect linked with “Upload planned workouts” enabled - Watch: Garmin Forerunner [model 165] — happy to provide exact model/firmware
Description format used (sample):
- 2.5km 5:57-5:23/km Pace
- 1.5km 9:06-8:14/km Pace
- 2km 6:13-5:37/km Pace
What works (verified via the API):
Reading the event back, workout_doc.steps is parsed perfectly — every step carries a structured pace range:
{"pace":{"start":357,"end":323,"units":"secs/km"},"distance":2500,"duration":848}
21/21 steps have pace: {start, end} on the real workout in question.
What fails:
The workout reaches Garmin Connect (name + description arrive; the Connect app shows the description). On the watch, the steps arrive with correct distances but every step shows “No Target” — no pace target, no alerts during the workout.
What we’ve ruled out:
- Syntax: both single-value (
5:40/km Pace) and range (5:45-5:35/km Pace) formats parse into correctworkout_docpace objects; both arrive on the watch as “No Target” - Stale Garmin cache: deleting the events and re-creating them fresh (to force a full re-export rather than an update) changes nothing
- Connect app display quirk (the
[SOLVED]thread #87358): this is on the watch itself, in the step list and during execution, not just the phone UI
Possibly related: #130238 (Syncing Pace & HR targets to Garmin), #130465 (pace range shows as note only on Fenix 7), and a Garmin-forum thread reporting that externally-generated running workouts lose pace targets while HR targets survive (garmin forums, thread 438551).
Is the pace target being dropped when building the FIT/push payload for run workouts, or is Garmin’s import discarding it? Happy to run any diagnostic — we can reproduce this on demand via the API and have a race tomorrow that would love its targets back. ![]()