Intervals.icu CSV Import Guide: Upload a Training Plan From AI or a Spreadsheet
Learn how to import a CSV training plan into Intervals.icu with TrainingDojo using an API key and athlete ID. Calendar import is live; structured push is coming later.

Intervals.icu is excellent for tracking training load, fitness, fatigue, and workout history. The slow part is getting a plan from ChatGPT, Claude, a spreadsheet, or a coach document onto the calendar. TrainingDojo now supports basic CSV calendar import to Intervals.icu so you can upload a full block without manually creating every event.
This guide covers the live workflow: CSV rows become Intervals.icu calendar workouts and notes. Structured Intervals.icu workout push, edit, delete, and dashboard support are separate roadmap items.
What Is Supported Today
- CSV calendar import to Intervals.icu
- Bike, run, swim, strength, brick, day off, and common endurance sport mapping
- Duration conversion from minutes to seconds
- Distance unit conversion for meter, kilometer, mile, and yard fields
- Day Off rows uploaded as Intervals.icu notes instead of workouts
The current Intervals.icu integration is for calendar import. If you need TrainingDojo's structured workout generator today, use TrainingPeaks push or Zwift .zwo export from the structured builder.
What You Need
- An Intervals.icu account.
- An Intervals.icu API key from Settings > Developer Settings.
- Your Intervals.icu athlete ID, usually starting with
i. - A CSV training plan using TrainingDojo's supported columns.
Your Intervals.icu API key is stored in your browser local storage for this workflow. It is sent to Intervals.icu when you validate credentials and upload workouts.
CSV Format
Use one row per calendar entry. The core columns are:
day,sport,subtype,title,duration_minutes,tss,description,phase,planned_distance,planned_distance_unitThe first eight columns are the same format used by the TrainingDojo importer. The distance fields are optional and useful for distance-based workouts.
day,sport,subtype,title,duration_minutes,tss,description,phase,planned_distance,planned_distance_unit
1,Bike,Endurance,Endurance Ride,75,55,"75 min aerobic ride | keep cadence smooth",Base,,
2,Run,Trail,Trail Run,50,60,"Rolling trail run at steady endurance effort",Base,,
3,Day Off,,Rest Day,0,0,"Complete rest day | mobility optional",Recovery,,
4,Swim,Pool Swim,Technique Swim,45,35,"400 easy warmup | 8x100 drill/swim | 200 cooldown",Base,,How to Import to Intervals.icu
- Open the TrainingDojo importer.
- Choose "Import CSV workouts to a platform."
- Select Intervals.icu.
- Paste your API key and athlete ID.
- Upload your CSV and choose the plan start date.
- Preview the calculated dates.
- Upload the plan to your Intervals.icu calendar.
How Sports Map
TrainingDojo maps common CSV sport names to Intervals.icu activity types. Bike rows become Ride, Indoor Bike becomes VirtualRide, Trail Run becomes TrailRun, Swim becomes Swim, Strength becomes WeightTraining, and Brick currently lands as Ride. Day Off rows become notes, not workouts.
Subtypes are scoped by sport so a bike row with "Trail" in the subtype does not accidentally become a trail run. If a sport cannot be mapped, TrainingDojo stops that row and reports the error instead of uploading the wrong activity type.
Intervals.icu Import vs Structured Workout Push
CSV calendar import gets the plan onto your calendar quickly: date, sport, title, duration, notes, and planned distance when provided. Structured workout push is different. It requires platform-specific workout text syntax, edit/delete routes, and dashboard support. That Intervals.icu structured workflow is planned separately.
For now, use Intervals.icu import when your goal is to load the calendar. Use the structured builder when your goal is to turn a single workout or full CSV plan into editable interval blocks for TrainingPeaks or Zwift.
The Bottom Line
If you already use Intervals.icu as your training calendar, TrainingDojo removes the manual entry step. Format your plan as CSV, connect Intervals.icu with an API key and athlete ID, and upload the block as calendar workouts in minutes.