Day 671 views

Import Your Own Training Schedule to Garmin With Intervals.icu

Import Your Own Training Schedule to Garmin With Intervals.icu

Not convinced by Garmin Coach? You can create your own schedule with AI, convert it to upload-ready JSON, send it to Intervals.icu, and sync it back to Garmin Connect.

training-planintervals-icuaigarmin-connectgarmin-school

Day 67: Import Your Own Training Schedule

Garmin Coach is useful, but sometimes you want more control. Maybe you already have a plan from a coach. Maybe you built a detailed schedule with AI. Maybe you want specific workouts on specific dates instead of a generic adaptive plan.

The good news: you can get your own schedule onto your Garmin. The cleanest route is to use Intervals.icu as the bridge between your training file and Garmin Connect.

The workflow

  1. Create or collect your training schedule
  2. Convert it into upload-ready JSON
  3. Create a free Intervals.icu account
  4. Connect Intervals.icu with Garmin Connect
  5. Use the Garmin School schedule tool to upload the file to Intervals.icu
  6. Sync Garmin Connect so the schedule reaches your watch

It sounds technical, but most of the complexity is in the conversion step. Once the JSON is correct, the upload is straightforward.

Step 1: Build the plan from your Garmin data

If you want a personalised training schedule based on your own Garmin data, start with Day 54. That guide shows how to export your Garmin data and use AI to create a schedule from your real training load, VO2max, sleep, HRV and recovery metrics.

When you have the schedule in normal human-readable form, check that the dates, workouts, rest days and weekly progression make sense. In Step 2 you will convert that schedule into JSON, and you will need that JSON file later in Step 5.

Open Day 54 guide →

Step 2: Convert it to upload-ready JSON

You can use Claude or ChatGPT for this step. Attach your actual training plan, then paste the prompt below so the AI converts your real schedule into a downloadable JSON file instead of inventing one.

Use this prompt to convert your plan:

You are a training plan converter. Your job is to take a training schedule (pasted text or extracted from a file) and convert it into a downloadable JSON file ready for upload to intervals.icu via API.

---

STEP 1 — PARSE THE PLAN

Read the training schedule carefully. Identify:
- Total number of weeks and days
- Each training day: type (run, ride, swim, strength, rest, etc.), duration or distance, intensity (easy, tempo, intervals, race pace, etc.), and any specific structure (warmup / main set / cooldown)
- Rest days or off days

---

STEP 2 — CHECK START DATE

If the training plan does NOT clearly state when it starts, stop and ask:

"When should Week 1 / Day 1 of this plan start? Please give me a specific date (e.g. Monday 2 June 2025)."

Do not proceed until you have a confirmed start date.

---

STEP 3 — GENERATE THE JSON

Generate a raw JSON array of event objects and create a downloadable file named intervals-schedule.json. Follow these rules strictly:

OUTPUT RULES:
- The downloadable .json file must contain ONLY valid JSON. No Markdown. No explanations. No text before or after the JSON inside the file.
- No trailing commas
- No null values — omit fields entirely rather than setting them to null
- No comments inside the JSON
- The root element must be a JSON array [ ... ]
- If your interface cannot create downloadable files, output the raw JSON array only so I can save it manually as intervals-schedule.json.

FOR WORKOUT DAYS:
{
  "category": "WORKOUT",
  "type": "[Run | Ride | Swim | Walk | Hike | WeightTraining | Workout | Yoga | Rowing | VirtualRide | VirtualRun | Other]",
  "name": "[Short workout title, e.g. Tempo Run 45min]",
  "start_date_local": "[YYYY-MM-DD]T07:00:00",
  "description": "[Full structured workout in Intervals.icu plain text format — see FORMAT RULES below]",
  "external_id": "[plan-name-week-X-day-Y, e.g. myplan-week-1-day-2]"
}

FOR REST OR RECOVERY DAYS:
{
  "category": "NOTE",
  "name": "Rest",
  "start_date_local": "[YYYY-MM-DD]T07:00:00",
  "description": "[Any rest day instructions, or 'Full rest day. No training.' if none specified]",
  "external_id": "[plan-name-week-X-day-Y]"
}

---

DESCRIPTION FORMAT RULES (Intervals.icu plain text workout format):

The description field must use the Intervals.icu plain text format so steps are parsed automatically. Follow these rules exactly:

TIME FORMAT:
- Use h for hours, m for minutes, s for seconds
- Examples: 10m, 30s, 1h, 45m — never use 0:30 or HH:MM notation

INTENSITY:
- Use zones: Z1, Z2, Z3, Z4, Z5
- Or % of FTP: 85%, 85-90%, 120%
- Or % of threshold pace for running/swimming: 80% pace, 90-95% pace
- Or watts: 200W, 200-220W
- If intensity is not specified, use Z2 and add a note: "(assumed Z2 — not specified in original plan)"

CADENCE (cycling only):
- Add as: 90rpm

RAMPS:
- Use: ramp 60%-90%
- Example: 10m ramp 50%-75% 90rpm

REPEATS / INTERVALS:
- Use: Nx followed by the steps of the interval
- Example for 6x400m @ Z4 with 90s rest:
  Main Set 6x
  - 400m Z4
  - 90s Z1

STRUCTURE:
- Always divide into sections: Warmup, Main Set, Cooldown
- Leave a blank line between sections
- Use a dash (-) before each step
- Use \n for line breaks within the description string

EXAMPLE — Tempo Run with intervals:
"Warmup\n- 10m Z1-Z2\n\nMain Set 6x\n- 3m Z4\n- 90s Z1\n\nCooldown\n- 10m Z1"

EXAMPLE — Easy ride:
"Warmup\n- 10m ramp 50%-65% 85rpm\n\nMain Set\n- 30m Z2 90rpm\n\nCooldown\n- 8m ramp 60%-40% 80rpm"

EXAMPLE — Steady run:
"Warmup\n- 10m Z1\n\nMain Set\n- 30m Z2\n\nCooldown\n- 5m Z1"

---

CONTENT RULES:
- Include every day of the plan, including rest and recovery days
- Use the same external_id format consistently — it allows re-uploads to update existing events rather than duplicate them
- Use Intervals.icu canonical activity type values only. Common safe values: Run, Ride, Swim, Walk, Hike, WeightTraining, Workout, Yoga, Rowing, VirtualRide, VirtualRun, Elliptical, Crossfit, Other
- For strength, gym, weights, bodyweight, mobility, or resistance sessions, use "WeightTraining" — never "Strength" or "Weight Training"
- For mountain bike, MTB, bike, cycling, or indoor cycling, use "Ride" unless it is clearly a virtual ride, then use "VirtualRide"

---

STEP 4 — SUMMARY

After creating the downloadable JSON file, add a plain text summary table in chat (outside the file):
| Date | Week | Day | Name | Sport | Category |
Include every day including rest days.

---

NOTES:
- The external_id must be stable — use the same value every time for the same workout so re-uploads update rather than duplicate

Download the JSON file the AI creates. You will upload that file in Step 5.

Step 3: Create and connect Intervals.icu

Create a free account at intervals.icu. Then connect it to Garmin Connect inside the Intervals.icu settings.

This is the bridge. Intervals.icu receives the schedule, and Garmin Connect can then sync it so it appears in your training calendar and on your watch.

Step 4: Find your athlete ID and API key

In Intervals.icu, open Settings and scroll down to Developer Settings. There you can find your athlete ID and create or copy your API key.

Keep the API key private. Treat it like a password.

Step 5: Upload with the Garmin School tool

Open the schedule upload tool, enter your Intervals.icu athlete ID and API key, choose the JSON file you created in Step 2, and upload it.

The tool checks that the file is valid JSON and that the workouts are laid out as upload-ready schedule events before sending anything to Intervals.icu.

Open the schedule upload tool →

Step 6: Sync to your Garmin

Select Upload Planned Workouts in the connection settings for Garmin on Intervals.icu. Then sync in Garmin Connect.

Your watch may need a normal sync cycle before the workouts appear.

If the schedule does not show immediately, check three things: Intervals.icu is connected to Garmin, the dates in the JSON are correct, and your Garmin Connect sync has completed.

100% Free

Join the Garmin School

Leave your email to get access to the Garmin School and receive updates on new videos and apps.

You'll get immediate access to:Import Your Own Training Schedule to Garmin With Intervals.icu

What to read next

Popular reads

Replace Your Personal Trainer With Claude AI — Using Your Garmin DataDay 381413
Replace Your Personal Trainer With Claude AI — Using Your Garmin Data
Can You Optimise Your VO2max in One Month With Claude AI and Your Garmin?Day 541306
Can You Optimise Your VO2max in One Month With Claude AI and Your Garmin?
Can You Hit a 90+ Sleep Score Every Night With Claude AI and Your Garmin?Day 621101
Can You Hit a 90+ Sleep Score Every Night With Claude AI and Your Garmin?