Planned events not pairing with activities — Garmin push silently skipped after reconnect

Hi all, looking for help with a Garmin sync issue that a clean disconnect/reconnect doesn’t fix.

Athlete: i290753

Symptom

Planned events on my calendar do not get external_id populated. Activities recorded against those workouts come back with paired_event_id: null and don’t auto-pair, even though my watch (Garmin Enduro 3) loaded and executed the structured workout correctly — laps match the planned step boundaries to the second.

So I’m in a half-broken state:

  • Workouts reach my Garmin Connect calendar (visually confirmed there)
  • Watch downloads structured workouts and executes them with correct lap structure
  • Activity comes back to Intervals with the planned workout’s name (sometimes truncated, sometimes with a "City - " location prefix added by Garmin Connect)
  • But on the Intervals side, every planned event has external_id: null, oauth_client_id: null, paired_activity_id: null
  • And every resulting activity has paired_event_id: null

So the workout reaches the watch, but Intervals never records the Garmin workout ID back, leaving no shared key for auto-pair. I have to manually pair every run.

What I’ve tried

  1. Disconnected Garmin in Intervals → Settings → Connections (unlink icon)
  2. Removed Intervals from Garmin Connect → Profile → Settings → Account Information → Connected Apps
  3. Reconnected from Intervals → Connections → “Connect Garmin”, confirmed “Upload planned workouts” is enabled
  4. Edited an existing planned event via the Intervals web UI (added text to the description, saved) to try to force a re-push

What happened after step 4

The event’s updated timestamp moves, but:

  • external_id: still null
  • oauth_client_id: still null
  • push_errors: still null (no error logged — silent skip)
  • paired_activity_id: still null

So the integration thinks it has nothing to push. There’s no failure being recorded; the push pipeline just doesn’t fire. Same behavior whether I edit via the web UI or via the API, so it’s not a client-side issue.

Side observation (possibly separate bug)

Editing a pace-zone workout appears to convert the step targets from pace_zone to power_zone on save, even though my Sport Settings → Run → Workout Zones Priority is set to “Pace, HR, Power” (Pace first across all four columns: Training Load, Time In Zones, Workouts, Intervals).

Before edit:

"steps": [
  { "pace": {"units": "pace_zone", "value": 1}, "distance": 4000 },
  ...
]

After edit (workout_doc not touched in the request):

"steps": [
  { "power": {"units": "power_zone", "value": 1}, "distance": 4023.35, "duration": 1262 },
  ...
]

This reproduces with both UI and API edits. Not sure if it’s related to the push issue, but flagging in case it is.

Possibly related threads

Happy to provide event IDs, activity IDs, or run additional tests. Thanks!

The matching looks for load. If it’s similar enough they auto pair.
Check your load settings and zone settings.

I have the exact same problem with an athlete I’m following. The trainings are uploaded on his Garmin application and watch but no there ise no pairing after the workout is completed.

There is no magic - the load must be similar enough to match. Show screenshots, if it’s not the case and it doesn’t match.

That’s an very good point! I can see that the problem began when I started planning trainings with HR zones. And since my athlete has dificulty to keep the right HR, the load is always way over the planned load. Thanks!